OSDN Git Service

2009-07-14 Taras Glek <tglek@mozilla.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-07-14  Taras Glek  <tglek@mozilla.com>
2             Rafael Espindola  <espindola@google.com>
3
4         * doc/sourcebuild.texi: Document install-plugin target.
5         * configure.ac: Added install-plugin target to language makefiles.
6         * configure: Regenerate.
7         * Makefile.in: (install-plugin): Install more headers,
8         depend on lang.install-plugin.
9
10 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11
12         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
13         translation.
14         
15 2009-07-14  DJ Delorie  <dj@redhat.com>
16
17         * config/mep/mep.c (mep_vliw_jmp_match): New function.
18         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
19         * config/mep/mep.md (sibcall_internal): Change test from
20         mep_vliw_mode_match to mep_vliw_jmp_match.
21         (sibcall_value_internal): Likewise.
22
23 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
24
25         * config/i386/sse.md (copysign<mode>3): New expander.
26         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
27         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
28         Use ix86_build_const_vector.
29         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
30         IX86_BUILTIN_CPYSGNPD.
31         (builtin_description): Add __builtin_ia32_copysignps and
32         __builtin_ia32_copysignpd.
33         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
34         and BUILT_IN_COPYSIGNF.
35
36 2009-07-13  Jason Merrill  <jason@redhat.com>
37
38         * builtins.c (can_trust_pointer_alignment): New fn.
39         (get_pointer_alignment): Factor it out from here.
40         * tree.h: Declare it.
41
42 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
43
44         * config/rs6000/predicates.md (offsettable_mem_operand): Test
45         RTX_AUTOINC class.
46
47 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
48
49         PR debug/40705
50         PR c++/403057
51         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
52
53 2009-07-14  Richard Guenther  <rguenther@suse.de>
54             Andrey Belevantsev <abel@ispras.ru>
55
56         PR middle-end/40745
57         * cfgexpand.c (partition_stack_vars): Do not bother to update
58         alias information when not optimizing.
59
60 2009-07-14  Richard Guenther  <rguenther@suse.de>
61         Andrey Belevantsev <abel@ispras.ru>
62
63         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
64         (pt_solution_set): Likewise.
65         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
66         * tree-ssa-structalias.c (pt_solution_set): New function.
67         * final.c (rest_of_clean_state): Free SSA data structures.
68         * print-rtl.c (print_decl_name): Remove.
69         (print_mem_expr): Implement in terms of print_generic_expr.
70         * alias.c (ao_ref_from_mem): New function.
71         (rtx_refs_may_alias_p): Likewise.
72         (true_dependence): Query alias-export info.
73         (canon_true_dependence): Likewise.
74         (write_dependence_p): Likewise.
75         * tree-dfa.c (get_ref_base_and_extent): For void types leave
76         size unknown.
77         * emit-rtl.c (component_ref_for_mem_expr): Remove.
78         (mem_expr_equal_p): Use operand_equal_p.
79         (set_mem_attributes_minus_bitpos): Do not use
80         component_ref_for_mem_expr.
81         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
82         (update_alias_info_with_stack_vars): Likewise.
83         (partition_stack_vars): Call update_alias_info_with_stack_vars.
84         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
85         explicitly nor clear stmt operands.
86         Free the decl-to-pointer map.
87         * tree-optimize.c (execute_free_datastructures): Do not free
88         SSA data structures here.
89         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
90         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
91         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
92         dependencies.
93         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
94
95 2009-07-13  DJ Delorie  <dj@redhat.com>
96
97         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
98         unrolling at the right iteration count.
99
100         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
101         calculations.
102
103 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
104         
105         * haifa-sched.c (rank_for_schedule): Introduced flags to
106         enable/disable individual scheduling heuristics.
107         * common.opt: Introduced flags to enable/disable individual
108         heuristics in the scheduler.    
109         * doc/invoke.texi: Introduced flags to enable/disable individual
110         heuristics in the scheduler.
111         
112 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
113
114         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
115         config/i386/mingw-tls.c.
116         * config/i386/mingw-tls.c: Removed.
117
118 2009-07-13  Ira Rosen  <irar@il.ibm.com>
119
120         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the 
121         checks access only relevant statements.
122         (vectorizable_reduction): Likewise.
123
124 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
125
126         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
127         just for 32-bit case.
128
129 2009-07-12  Jan Hubicka  <jh@suse.cz>
130
131         PR tree-optimization/40585
132         * except.c (expand_resx_expr): When there already is resume
133         instruction, produce linked list.
134         (build_post_landing_pads): Assert that resume is empty.
135         (connect_post_landing_pads): Handle resume lists.
136         (dump_eh_tree): Dump resume list.
137
138 2009-07-12  Ira Rosen  <irar@il.ibm.com>
139
140         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
141         with additional argument.
142         * tree-vectorizer.h (enum vect_def_type): Add
143         vect_double_reduction_def.
144         (vect_is_simple_reduction): Add argument.
145         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
146         indentation.
147         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
148         vect_is_simple_reduction with additional argument.
149         (vect_analyze_loop_operations): Handle exit phi nodes in case of
150         double reduction.
151         (reduction_code_for_scalar_code): Handle additional codes by
152         returning ERROR_MARK for them. Fix comment and indentation.
153         (vect_is_simple_reduction): Fix comment, add argument to specify
154         double reduction. Detect double reduction.
155         (get_initial_def_for_induction): Fix indentation.
156         (get_initial_def_for_reduction): Fix comment and indentation.
157         Handle double reduction. Create initial definitions that do not
158         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
159         (vect_create_epilog_for_reduction): Fix comment, add argument to
160         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
161         epilogue result extraction. Create double reduction phi node and
162         replace relevant uses.
163         (vectorizable_reduction): Call vect_is_simple_reduction with
164         additional argument. Fix indentation. Update epilogue code treatment
165         according to the changes in reduction_code_for_scalar_code. Check
166         for double reduction. Call vect_create_epilog_for_reduction with
167         additional argument.
168         * tree-vect-stmts.c (process_use): Handle double reduction, update
169         documentation.
170         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
171         (vect_get_vec_def_for_operand): Likewise.
172
173 2009-07-12  Danny Smith  <dansmister@gmail.com>
174
175         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
176         dllexport if !TREE_PUBLIC.
177         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
178
179 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
180
181         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
182         (avr_extra_arch_macro) Remove declatation.
183         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
184         (avr_extra_arch_macro) Declare as static.
185         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
186
187 2009-07-11  Jan Hubicka  <jh@suse.cz>
188
189         PR middle-end/48388
190         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
191
192 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
193
194         PR debug/40713
195         * dwarf2out.c (dw_fde_struct): Add in_std_section and
196         cold_in_std_section bits.
197         (dwarf2out_begin_prologue): Initialize them.
198         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
199         if already covered by text_section or cold_text_section range.
200
201         PR rtl-optimization/40667
202         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
203         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
204         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
205         * config/i386/i386.c (ix86_minimum_alignment): New function.
206         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
207         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
208         * emit-rtl.c (gen_reg_rtx): Likewise.
209         * function.c (assign_parms): Likewise.  If nominal_type needs
210         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
211         rather than passed_type's alignment.
212
213         PR target/40668
214         * function.c (assign_parm_setup_stack): Adjust
215         MEM_OFFSET (data->stack_parm) if promoted_mode is different
216         from nominal_mode on big endian.
217
218 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
219
220         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
221
222 2009-07-10  DJ Delorie  <dj@redhat.com>
223
224         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
225
226 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
227
228         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
229         attribute.
230         (thumb2_cbnz): Likewise.
231
232 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
233
234         PR target/39079
235         * config.gcc (supported_defaults): Add synci.
236         (with_synci): Add validation.
237         (all_defaults): Add synci.
238         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
239         ISA_HAS_SYNCI.
240         (synci): Same.
241         * config/mips/mips.opt (msynci): New option.
242         * config/mips/mips.c (mips_override_options): Warn on use of
243         -msynci for targets that do now support it.
244         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
245         msynci.
246         * gcc/doc/invoke.texi (-msynci): Document the new option.
247         * doc/install.texi (--with-synci): Document the new option.
248
249 2009-07-10  Richard Guenther  <rguenther@suse.de>
250
251         PR tree-optimization/40496
252         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
253         the PHI result with a compatible type.
254
255 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
256
257         PR 25509
258         PR 40614
259         * c.opt (Wunused-result): New.
260         * doc/invoke.texi: Document it.
261         * c-common.c (c_warn_unused_result): Use it.
262
263 2009-07-09  DJ Delorie  <dj@redhat.com>
264
265         * targhooks.c (default_target_can_inline_p): Rename from
266         default_target_option_can_inline_p.
267         * targhooks.h (default_target_can_inline_p): Likewise.
268         * target-def.h (TARGET_CAN_INLINE_P): Rename from
269         TARGET_OPTION_CAN_INLINE_P.
270         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
271         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
272         (mep_target_can_inline_p): Rename from
273         mep_target_option_can_inline_p.
274
275         PR target/40626
276         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
277         registers used to pass vectors.
278
279         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
280
281 2009-07-09  Tom Tromey  <tromey@redhat.com>
282
283         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
284         * config/mmix/mmix.c: Include dwarf2.h.
285         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
286         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
287         * config/sh/sh.c: Include dwarf2.h.
288         * config/i386/i386.c: Include dwarf2.h.
289         * Makefile.in (DWARF2_H): Remove 'elf'.
290         * except.c: Include dwarf2.h.
291         * unwind-dw2.c: Include dwarf2.h.
292         * dwarf2out.c: Include dwarf2.h.
293         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
294         * unwind-dw2-fde.c: Include dwarf2.h.
295         * dwarf2asm.c: Include dwarf2.h.
296
297 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
298
299         * haifa-sched.c (insn_finishes_cycle_p): New static function.
300         (max_issue): Use it.
301         * sched-int.h (struct sched_info: insn_finishes_block_p): New
302         scheduler hook.
303         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
304         (region_sched_info): Update.
305         * sched-ebb.c (ebb_sched_info): Update.
306         * modulo-sched.c (sms_sched_info): Update.
307         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
308
309 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
310
311         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
312
313 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
314
315         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen. 
316
317 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
318
319         PR middle-end/40692
320         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
321         arg1 with arg01 if arg1 is already INTEGER_CST.
322
323 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
324
325         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
326         Transform (and (truncate)) into (truncate (and)).
327
328 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
329
330         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
331         creating LHS paradoxical subregs.  Fix surrounding returns to
332         use NULL_RTX rather than 0.
333
334 2009-07-08  DJ Delorie  <dj@redhat.com>
335
336         * config/mep/mep.c: (mep_option_can_inline_p): New.
337         (TARGET_OPTION_CAN_INLINE_P): Define.
338
339 2009-07-08  Mark Wielaard  <mjw@redhat.com>
340
341         PR debug/40659
342         * dwarf2out.c (add_data_member_location_attribute): When we have
343         only a constant offset don't emit a new location description using
344         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
345         dwarf_version > 2.
346
347 2009-07-08  Richard Henderson  <rth@redhat.com>
348
349         PR target/38900
350         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
351         (enum reg_class): Add CLOBBERED_REGS.
352         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
353         * config/i386/i386.c (ix86_conditional_register_usage): Moved
354         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
355         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
356         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
357         force 64-bit sibcalls into R11.
358         * config/i386/constraints.md (U): New constraint.
359         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
360         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
361         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
362
363 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
364
365         * basic-block.h (dump_regset, debug_regset): Remove duplicate
366         prototypes.
367         * c-objc-common.h (c_initialize_diagnostics): Ditto.
368         * ebitmap.h (dump_ebitmap): Ditto.
369         * optabs.h (optab_libfunc): Ditto.
370         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
371         * tree-flow.h (vect_can_force_dr_alignment_p,
372         get_vectype_for_scalar_type): Ditto.
373         (vectorize_loops): Move prototype to ...
374         * tree-vectorizer.h: ... here. Also, adjust comment.
375         (vect_set_verbosity_level): Remove duplicate prototype.
376         * tree-ssa-loop.c: Include tree-vectorizer.h.
377         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
378
379 2009-07-08  Nick Clifton  <nickc@redhat.com>
380
381         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
382         forward slash.
383
384 2009-07-08  DJ Delorie  <dj@redhat.com>
385
386         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
387         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
388         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
389         written to.
390         * config/mep/intrinsics.md: Regenerated.
391         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
392         registers when asm() or calls are detected.
393
394 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
395
396         PR c++/31246
397         * gimplify.c (gimplify_expr): Propagate no_warning flag when
398         gimplifying.
399         * gimple (gimple_build_call_from_tree): Likewise.
400         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
401         no_warning flag before warning.
402
403 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
404
405         * tree.c (set_expr_locus): Remove.
406         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
407         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
408         EXPR_LOCATION.
409         * gimplify.c (internal_get_tmp_var): Likewise.
410         (gimplify_call_expr): Likewise.
411         (gimplify_one_sizepos): Likewise.
412
413 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
414
415         PR debug/40666
416         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
417         to variables for debugging purposes.
418
419 2009-06-23  Mark Loeser  <mark@halcy0n.com>
420
421         PR build/40010
422         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
423
424 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
425
426         * pretty-print.c (pp_base_format): Remove %J.
427         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
428         gcc_cxxdiag_char_table): Likewise.
429         (init_dynamic_diag_info): Likewise.
430
431 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
432
433         * pretty-print.c (pp_base_format): Remove %H.
434         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
435         gcc_cxxdiag_char_table): Likewise.
436         (init_dynamic_diag_info): Likewise.
437         * config/mep/mep.c (mep_select_section): Likewise.
438
439 2009-07-07  Duncan Sands  <baldrick@free.fr>
440
441         * final.c (pass_clean_state): Give the pass a name.
442         * passes.c (pass_rest_of_compilation): Likewise.
443         * tree-optimize.c (pass_all_optimizations): Likewise.
444
445 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
446
447         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
448         an extra 'decl' for error_at.
449
450 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
451
452         PR middle-end/40669
453         * tree-tailcall.c (adjust_return_value_with_ops,
454         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
455         if it has complex or vector type.
456
457 2009-07-07  Olivier Hainque  <hainque@adacore.com>
458
459         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
460         pthread symbols.
461
462 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
463
464         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
465
466 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
467
468         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
469         * c-decl.c: Likewise.
470         * function.c: Likewise.
471         * varasm.c: Likewise.
472         * tree-ssa.c: Likewise.
473         * c-common.c: Likewise.
474         * tree-cfg.c: Likewise.
475         * config/spu/spu.c: Likewise.
476         * config/ia64/ia64.c: Likewise.
477         * config/v850/v850.c: Likewise.
478
479 2009-07-06  DJ Delorie  <dj@redhat.com>
480
481         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
482         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
483         unspecified accesses to control registers.
484         * config/mep/intrinsics.md: Regenerate.
485         * config/mep/intrinsics.h: Regenerate.
486         * config/mep/mep-intrin.h: Regenerate.
487
488 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
489
490         * c-lex.c: Replace %H by an explicit location. Update all calls.
491         * c-common.c: Likewise.
492         * c-decl.c: Likewise.
493         * c-typeck.c: Likewise.
494         * fold-const.c: Likewise.
495         * gimplify.c: Likewise.
496         * stmt.c: Likewise.
497         * tree-cfg.c: Likewise.
498         * tree-ssa-loop-niter.c: Likewise.
499         * tree-vrp.c: Likewise.
500         * value-prof.c: Likewise.
501
502 2009-07-06  Diego Novillo  <dnovillo@google.com>
503
504         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
505         if it has one.  Handle cases where VAR does not have an
506         annotation or cfun is NULL.
507
508 2009-07-06  Diego Novillo  <dnovillo@google.com>
509
510         * tree.c: Include debug.h.
511         (initialize_tree_contains_struct): New.
512         (init_ttree): Call it.
513         (tree_node_structure_for_code): Factor out of ...
514         (tree_node_structure): ... here.
515         * treestruct.def (TS_PHI_NODE): Remove.
516         (TS_GIMPLE_STATEMENT): Remove.
517
518 2009-07-06  Diego Novillo  <dnovillo@google.com>
519
520         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
521         (debug_tree_chain): Handle cycles.
522
523 2009-07-06  Nick Clifton  <nickc@redhat.com>
524             DJ Delorie  <dj@redhat.com>
525
526         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
527         __FMOVD_ENABLED__ is defined.
528         * config/sh/sh.h
529         (TARGET_FMOVD): Provide a default definition.
530         (MASK_FMOVD): Likewise.
531         (TARGET_CPU_CPP_BUILTINS): Define
532         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
533         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
534         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
535         (split for DF load from memory into register): Also handle
536         MEMs which consist of REG+DISP addressing.
537         (split for DF store from register to memory): Likewise.
538         (movsf_ie): Always use single fp_mode.
539         * config/sh/sh.c (sh_override_options): Do not automatically
540         enable TARGET_MOVD for the SH2A when supporting doubles - leave
541         that to the -mfmovd command line switch.
542         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
543         (fldi_ok): Always allow.
544         * config/sh/sh.opt (mfmovd): Remove this switch.
545         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
546
547 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
548             Kaz Kojima  <kkojima@gcc.gnu.org>
549
550         PR rtl-optimization/30807
551         * postreload.c (reload_combine): For every new use of REG_SUM,
552         record the use of BASE.
553
554 2009-07-06  Jan Hubicka  <jh@suse.cz>
555
556         * params.def: Revert my accidental commit at 2009-06-30.
557
558 2009-07-04  Ian Lance Taylor  <iant@google.com>
559
560         PR target/40636
561         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
562         EXPORTED_CONST.
563         (mingw_format_attribute_overrides): Likewise.
564
565 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
566
567         PR debug/40596
568         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
569         don't check cfa.reg.  Instead of cfa.indirect use
570         fde && fde->drap_reg != INVALID_REGNUM test.
571
572 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
573
574         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
575
576 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
577
578         PR target/40587
579         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
580
581 2009-07-03  Richard Guenther  <rguenther@suse.de>
582
583         PR tree-optimization/40640
584         * tree-switch-conversion.c (build_arrays): Perform arithmetic
585         in original type.
586
587 2009-07-03  Jan Hubicka  <jh@suse.cz>
588
589         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
590         for size, reduce amount of inlining.
591
592 2009-07-03  Richard Guenther  <rguenther@suse.de>
593
594         PR middle-end/34163
595         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
596         if t +- x is known to not overflow and the conversion widens the
597         operation.
598         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
599
600 2009-07-03  Jan Hubicka  <jh@suse.cz>
601
602         * ipa-pure-const.c (analyze): Update loop optimizer init.
603         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
604         try_remove_empty_loop, remove_empty_loops): Remove.
605         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
606         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
607         to mark regular loops as neccesary.
608         (degenerate_phi_p): New function.
609         (propagate_necessity, remove_dead_phis): Use it.
610         (forward_edge_to_pdom): Likewise.
611         (eliminate_unnecessary_stmts): Take care to remove uses of results of
612         virtual PHI nodes that became unreachable.
613         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
614         * tree-flow.h (remove_empty_loops): Remove.
615         * passes.c (init_optimization_passes): Remove.
616
617 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
618
619         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
620         can_create_pseudo_p.
621         (*fix_trunc<mode>_i387_1): Ditto.
622         (*floathi<mode>2_1): Ditto.
623         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
624         (*fistdi2_1): Ditto.
625         (*fist<mode>2_1): Ditto.
626         (frndintxf2_floor): Ditto.
627         (*fist<mode>2_floor_1): Ditto.
628         (frndintxf2_ceil): Ditto.
629         (*fist<mode>2_ceil_1): Ditto.
630         (frndintxf2_trunc): Ditto.
631         (frndintxf2_mask_pm): Ditto.
632         (fxam<mode>2_i387_with_temp): Ditto.
633         * config/i386/sse.md (mulv16qi3): Ditto.
634         (*sse2_mulv4si3): Ditto.
635         (mulv2di3): Ditto.
636         (sse4_2_pcmpestr): Ditto.
637         (sse4_2_pcmpistr): Ditto.
638
639 2009-07-03  Jan Hubicka  <jh@suse.cz>
640
641         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
642         (mark_stmt_necessary): Set it.
643         (mark_operand_necessary): Set it.
644         (mark_control_dependent_edges_necessary): Set it.
645         (mark_virtual_phi_result_for_renaming): New function.
646         (get_live_post_dom): New function.
647         (forward_edge_to_pdom): New function.
648         (remove_dead_stmt): Fix handling of control dependences.
649         (tree_dce_init): Init new bitmap.
650         (tree_dce_done): Free it.
651
652 2009-07-02  Richard Guenther  <rguenther@suse.de>
653
654         PR bootstrap/40617
655         * tree-ssa-structalias.c (new_var_info): Initialize
656         is_restrict_var.
657
658 2009-07-02  Jan Hubicka  <jh@suse.cz>
659
660         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
661         local.
662
663 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
664
665         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
666         instead of recomputing it.  Adjust calls.
667         (emit_store_flag): Adjust recursive calls.
668
669 2009-07-02  Richard Guenther  <rguenther@suse.de>
670
671         * tree-ssa-live.c (remove_unused_locals): Do not remove
672         heap variables.
673         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
674         of DECL_EXTERNAL for HEAP variables.
675         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
676         HEAP variables.  Do not adjust RESTRICT vars.
677         (find_what_var_points_to): Nobody cares if something
678         points to READONLY.
679
680 2009-07-02  Ben Elliston  <bje@au.ibm.com>
681
682         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
683         pc_low and pc_high declarations to the top of the function.
684
685 2009-07-01  DJ Delorie  <dj@redhat.com>
686
687         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
688         registers as fixed.
689         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
690         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
691         unspecified accesses to control registers.
692         * config/mep/intrinsics.md: Regenerate.
693         * config/mep/intrinsics.h: Regenerate.
694         * config/mep/mep-intrin.h: Regenerate.
695
696 2009-07-01  Anthony Green  <green@moxielogic.com>
697
698         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
699         instruction when possible.
700         (moxie_expand_prologue): Ditto.  Also, save an instruction and
701         some complexity by popping off of $r12 instead of $sp.
702         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
703         operands.
704
705 2009-07-01  Richard Henderson  <rth@redhat.com>
706
707         PR bootstrap/40347
708         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
709         contained no insns, reposition note before last insn.
710
711 2009-07-01  Richard Henderson  <rth@redhat.com>
712
713         PR debug/40431
714         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
715         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
716
717 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
718
719         PR bootstrap/40558
720         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
721         darwin9 for printing reg addresses with %y.
722
723 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
724
725         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
726         truncation from operands in binary operations.
727
728 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
729
730         Revert:
731         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
732         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
733         subreg of op0 to the original op0.
734
735         * expmed.c (store_bit_field_1): Use a temporary as the destination
736         instead of a paradoxical subreg when we need to truncate the result.
737
738 2009-07-01  DJ Delorie  <dj@redhat.com>
739
740         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
741         names to VLIW variants.
742         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
743         * config/mep/intrinsics.md: Regenerate.
744         * config/mep/intrinsics.h: Regenerate.
745         * config/mep/mep-intrin.h: Regenerate.
746
747 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
748
749         PR debug/40462
750         * jump.c (returnjump_p): Revert last patch.
751         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
752
753 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
754
755         PR target/40575
756         * pa.md (casesi32p): Use jump table label to determine the offset
757         of the jump table.
758         (casesi64p): Likewise.
759
760         * pa.c (forward_branch_p): Return bool type.  Use instruction
761         addresses when available.  Assert that INSN has a jump label.
762         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
763         have a jump label.
764
765 2009-07-01  Richard Guenther  <rguenther@suse.de>
766
767         PR tree-optimization/19831
768         * tree-ssa-dce.c (propagate_necessity): Calls to functions
769         that only act as barriers do not make any previous stores necessary.
770         * tree-ssa-structalias.c (handle_lhs_call): Delay making
771         HEAP variables global, do not add a constraint from nonlocal.
772         (find_func_aliases): Handle escapes through return statements.
773         (compute_points_to_sets): Make escaped HEAP variables global.
774
775 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
776
777         PR bootstrap/40597
778         * expmed.c (emit_store_flag): Perform a conversion if necessary,
779         after reducing a DImode cstore to SImode.
780
781 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
782
783         * expr.c (expand_expr_real_1): Reinstate fallthrough to
784         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
785
786 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
787
788         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
789         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
790         to 0.
791         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
792         and umod_optab if TARGET_BSD_DIVMOD.
793         * config/vax/lib1funcs.asm: New file.
794         * config/vax/t-linux: New file.
795         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
796
797 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
798
799         PR c++/40566
800         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
801         to type arguments that have void type.
802
803         PR debug/40573
804         * dwarf2out.c (gen_formal_parameter_die): Call
805         equate_decl_number_to_die if node is different from origin.
806
807 2009-06-30  Anthony Green  <green@moxielogic.com>
808
809         Clean up moxie port for --enable-build-with-cxx.
810         * config/moxie/moxie.c (moxie_function_value): First two
811         parameters are const_tree, not tree.
812         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
813         (REG_CLASS_NAMES): Ditto.
814         (REGNO_REG_CLASS): Ditto.
815         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
816         (moxie_function_value): Fix constyness of arguments.
817
818 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
819
820         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
821         finalize_size_functions before further processing.
822         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
823         (variable_size): Call self_referential_size on size expressions
824         that contain a PLACEHOLDER_EXPR.
825         (size_functions): New static variable.
826         (copy_self_referential_tree_r): New static function.
827         (self_referential_size): Likewise.
828         (finalize_size_functions): New global function.
829         * tree.c: Include tree-inline.h.
830         (push_without_duplicates): New static function.
831         (find_placeholder_in_expr): New global function.
832         (substitute_in_expr) <tcc_declaration>: Return the replacement object
833         on equality.
834         <tcc_expression>: Likewise.
835         <tcc_vl_exp>: If the replacement object is a constant, try to inline
836         the call in the expression.
837         * tree.h (finalize_size_functions): Declare.
838         (find_placeholder_in_expr): Likewise.
839         (FIND_PLACEHOLDER_IN_EXPR): New macro.
840         (substitute_placeholder_in_expr): Update comment.
841         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
842         is true.
843         (copy_tree_body_r): Likewise.
844         (copy_tree_body): New static function.
845         (maybe_inline_call_in_expr): New global function.
846         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
847         (maybe_inline_call_in_expr): Declare.
848         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
849         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
850         GIMPLE_H.
851
852 2009-06-30  Richard Guenther  <rguenther@suse.de>
853
854         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
855         continue walking.
856         (propagate_necessity): Do not mark reaching defs of stores
857         as necessary.
858
859 2009-06-30  Jan Hubicka  <jh@suse.cz>
860
861         * cfgloopanal.c (check_irred): Move into ...
862         (mark_irreducible_loops): ... here; return true if ireducible
863         loops was found.
864         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
865         (analyze_function): Try to prove loop finiteness.
866         * cfgloop.h (mark_irreducible_loops): Update prototype.
867         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
868
869 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
870
871         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
872
873 2009-06-30  Ira Rosen  <irar@il.ibm.com>
874
875         PR tree-optimization/40542
876         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile 
877         types.
878
879 2009-06-30  Martin Jambor  <mjambor@suse.cz>
880
881         PR tree-optimization/40582
882         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
883         than useless_type_conversion_p.
884         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
885         proper place.
886
887 2009-06-30  Martin Jambor  <mjambor@suse.cz>
888
889         PR middle-end/40554
890         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
891
892 2009-06-30  Richard Guenther  <rguenther@suse.de>
893
894         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
895         use ao_ref references.
896         (walk_aliased_vdefs): Likewise.
897         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
898         * tree-ssa-dce.c (struct ref_data): Remove.
899         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
900         (mark_aliased_reaching_defs_necessary): Adjust.
901         (mark_all_reaching_defs_necessary_1): Likewise.
902
903 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
904
905         PR boostrap/40597
906         * expmed.c (emit_cstore): New name of emit_store_flag_1.
907         (emit_store_flag_1): Extract from emit_store_flag, adjust
908         calls to (what now is) emit_cstore.
909         (emit_store_flag): Call emit_store_flag_1 and also use it
910         for what used to be recursive calls.
911
912 2009-06-30  Wei Guozhi  <carrot@google.com>
913
914         PR/40416
915         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
916         if the target bb post dominates from bb.
917         * config/i386/i386.c (memory_address_length): Check existence of base
918         register before using it.
919
920 2009-06-30  Nick Clifton  <nickc@redhat.com>
921             DJ Delorie  <dj@redhat.com>
922
923         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
924         __FMOVD_ENABLED__ is defined.
925         * config/sh/sh.h
926         (TARGET_FMOVD): Provide a default definition.
927         (MASK_FMOVD): Likewise.
928         (TARGET_CPU_CPP_BUILTINS): Define
929         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
930         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
931         two fmov instructions depending upon whether TARGET_FMOVD is
932         enabled.
933         (split for DF load from memory into register): Also handle
934         MEMs which consist of REG+DISP addressing.
935         (split for DF store from register to memory): Likewise.
936         * config/sh/sh.opt (mfmovd): Remove this switch.
937         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
938         * config/sh/sh.c (sh_override_options): Do not automatically
939         enable TARGET_MOVD for the SH2A when supporting doubles - leave
940         that to the -mfmovd command line switch.
941
942         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
943         the SH4 and SH4A.
944         (fldi_ok): Always allow.
945         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
946
947 2009-06-29  DJ Delorie  <dj@redhat.com>
948
949         * doc/install.texi (mep-x-elf): Correct chip's full name.
950
951 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
952
953         * doc/extend.texi: Fix typo.
954
955 2009-06-29  Tom Tromey  <tromey@redhat.com>
956
957         * dwarf2.h: Remove.
958         * Makefile.in (DWARF2_H): New variable.
959         (except.o): Use it.
960         (dwarf2out.o): Likewise.
961         (dwarf2asm.o): Likewise.
962         * config/i386/t-i386: Use DWARF2_H.
963         * except.c: Include elf/dwarf2.h.
964         * unwind-dw2.c: Include elf/dwarf2.h.
965         * dwarf2out.c: Include elf/dwarf2.h.
966         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
967         <dtprel>: New field.
968         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
969         (size_of_loc_descr): Likewise.
970         (output_loc_operands_raw): Likewise.
971         (output_loc_operands): Handle new dtprel field.
972         (loc_checksum): Update.
973         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
974         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
975         * unwind-dw2-fde.c: Include elf/dwarf2.h.
976         * dwarf2asm.c: Include elf/dwarf2.h.
977         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
978         * config/mmix/mmix.c: Include elf/dwarf2.h.
979         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
980         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
981         * config/sh/sh.c: Include elf/dwarf2.h.
982         * config/i386/i386.c: Include elf/dwarf2.h.
983
984 2009-06-29  DJ Delorie  <dj@redhat.com>
985
986         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
987
988         * doc/extend.texi: Add MeP attributes and pragmas.
989         * doc/invoke.text: Add MeP Options.
990         * doc/contrib.texi: Add MeP contribution.
991         * doc/md.texi: Add MeP constraints.
992         * doc/install.texi: Add MeP target.
993
994 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
995
996         * target.h (struct gcc_target): Add frame_pointer_required field.
997         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
998         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
999         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
1000         hook.
1001         * reload1.c (update_eliminables): (Ditto.).
1002         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
1003         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
1004         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
1005
1006         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
1007
1008         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
1009         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1010         (arm_frame_pointer_required): New function.
1011
1012         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
1013         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1014         (avr_frame_pointer_required_p): Declare as static.
1015         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
1016
1017         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
1018         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1019         (bfin_frame_pointer_required): Make as static, change return type
1020         to bool.
1021         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
1022
1023         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
1024         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1025         (cris_frame_pointer_required): New function.
1026         
1027         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
1028
1029         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
1030         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1031         (fr30_frame_pointer_required): New function.
1032         
1033         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
1034         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1035         (frv_frame_pointer_required): Make as static, change return type
1036         to bool.
1037         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
1038
1039         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
1040         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1041         (ix86_frame_pointer_required): Make as static, change return type to
1042         bool.
1043         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
1044
1045         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
1046         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1047
1048         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
1049
1050         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
1051         
1052         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
1053
1054         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
1055         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1056         (mips_frame_pointer_required): Make as static.
1057         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
1058         
1059         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
1060         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1061         (mmix_frame_pointer_required): Mew function.
1062
1063         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
1064         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1065
1066         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
1067
1068         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
1069
1070         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
1071
1072         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
1073         (CAN_ELIMINATE): Redefine.
1074         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1075         (sparc_frame_pointer_required): New function.
1076         (sparc_can_eliminate): New function.
1077         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
1078
1079         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
1080         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1081
1082         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
1083         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1084         (xtensa_frame_pointer_required): Make as static, change return type
1085         to bool.
1086         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
1087         Remove.
1088
1089 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
1090
1091         * doc/plugins.texi: Document PLUGIN_START_UNIT.
1092         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
1093         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
1094         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
1095         (register_callback): Handle PLUGIN_START_UNIT.
1096         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
1097
1098 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
1099
1100         * tree.c (process_call_operands): Propagate TREE_READONLY from the
1101         operands.
1102         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
1103         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
1104
1105 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
1106
1107         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
1108         move cost.
1109
1110 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
1111
1112         * doc/extend.texi (Additional Floating Types): __float128 is also
1113         supported on i386 targets.
1114
1115 2009-06-29  Richard Guenther  <rguenther@suse.de>
1116
1117         PR middle-end/14187
1118         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
1119         flag.
1120         (pt_solutions_same_restrict_base): Declare.
1121         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
1122         flag.
1123         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
1124         (make_constraint_from, make_copy_constraint): Move earlier.
1125         (make_constraint_from_heapvar): New function.
1126         (make_constraint_from_restrict): Likewise.
1127         (handle_lhs_call): Use it.
1128         (find_func_aliases): Use it to track conversions to restrict
1129         qualified pointers.
1130         (struct fieldoff): Add only_restrict_pointers flag.
1131         (push_fields_onto_fieldstack): Initialize it.
1132         (create_variable_info_for): Track global restrict qualified pointers.
1133         (intra_create_variable_infos): Use make_constraint_from_heapvar.
1134         Track restrict qualified pointer arguments.
1135         (set_uids_in_ptset): Use varinfo is_global_var flag.
1136         (find_what_var_points_to): Set the vars_contains_restrict flag.
1137         Always create the points-to solution for sets including restrict tags.
1138         (pt_solutions_same_restrict_base): New function.
1139         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
1140         qualified pointers use pt_solutions_same_restrict_base as
1141         additional source for disambiguation.
1142
1143 2009-06-29  Richard Guenther  <rguenther@suse.de>
1144
1145         PR middle-end/38212
1146         * alias.c (find_base_decl): Remove.
1147         (get_deref_alias_set_1): Remove restrict handling.
1148         * c-common.c (c_apply_type_quals_to_decl): Do not set
1149         DECL_POINTER_ALIAS_SET.
1150         * gimplify.c (find_single_pointer_decl_1): Remove.
1151         (find_single_pointer_decl): Likewise.
1152         (internal_get_tmp_var): Remove restrict handling.
1153         (gimple_regimplify_operands): Likewise.
1154         * omp-low.c (expand_omp_atomic_pipeline): Do not set
1155         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
1156         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
1157         * tree.c (restrict_base_for_decl): Remove.
1158         (init_ttree): Do not allocate it.
1159         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
1160         LABEL_DECL_UID for label decls.
1161         (copy_node_stat): Do not copy restrict information.
1162         (decl_restrict_base_lookup): Remove.
1163         (decl_restrict_base_insert): Likewise.
1164         (print_restrict_base_statistics): Likewise.
1165         (dump_tree_statistics): Do not call print_restrict_base_statistics.
1166         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
1167         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
1168         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
1169         (LABEL_DECL_UID): Adjust.
1170         (DECL_BASED_ON_RESTRICT_P): Remove.
1171         (DECL_GET_RESTRICT_BASE): Likewise.
1172         (SET_DECL_RESTRICT_BASE): Likewise.
1173         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
1174
1175         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
1176         instead of DECL_POINTER_ALIAS_SET.
1177         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
1178         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
1179         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
1180
1181 2009-06-29  Richard Guenther  <rguenther@suse.de>
1182
1183         PR tree-optimization/40579
1184         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
1185         the IL to simplify has constants that overflowed.
1186
1187 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
1188
1189         PR tree-optimization/40550
1190         * tree-vect-generic.c (expand_vector_operations_1): Compute in
1191         vector_compute_type only when the size of vector_compute_type is
1192         less than the size of type.
1193
1194 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
1195
1196         * fold-const.c (contains_label_1): Fix comments.
1197         (contains_label_p): Do not walk trees multiple time.
1198
1199 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1200
1201         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
1202         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
1203         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
1204         ix86_fp_comparison_operator.
1205         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
1206         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
1207         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
1208         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
1209         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
1210         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
1211         (related splits): Change predicate to ix86_fp_comparison_operator.
1212         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
1213         instead of ix86_fp_comparison_codes.
1214         (ix86_trivial_fp_comparison_operator,
1215         ix86_fp_comparison_operator): New.
1216         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
1217         (ix86_expand_compare): Eliminate last two parameters.
1218         (ix86_fp_jump_nontrivial_p): Kill.
1219         * config/i386/i386.c (put_condition_code): Eliminate call to
1220         ix86_fp_comparison_codes and subsequent assertion.
1221         (ix86_fp_comparison_codes): Eliminate.
1222         (ix86_fp_swap_condition): New.
1223         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
1224         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
1225         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
1226         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
1227         and ix86_fp_swap_condition.
1228         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
1229         Use ix86_fp_comparison_strategy.
1230         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
1231         (ix86_fp_jump_nontrivial_p): Eliminate.
1232         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
1233         call to ix86_expand_compare.
1234         (ix86_split_fp_branch, ix86_expand_setcc,
1235         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
1236         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
1237
1238 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1239
1240         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
1241         related to jump_clobbers.
1242         * config/arm/arm.md (conds): Remove jump_clob case.
1243         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
1244         splits): Change comparison_operator to arm_comparison_operator.
1245         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
1246         Eliminate.
1247
1248 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1249
1250         * dojump.c (do_compare_rtx_and_jump): Try swapping the
1251         condition for floating point modes.
1252         * expmed.c (emit_store_flag_1): Move here a bigger part
1253         of emit_store_flag.
1254         (emit_store_flag): Try swapping the condition for floating point
1255         modes.
1256         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
1257
1258 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1259
1260         * expr.c (expand_expr_real_1): Just use do_store_flag.
1261         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
1262         emit_store_flag_force.
1263         * expmed.c (emit_store_flag_force): Copy here trick
1264         previously in expand_expr_real_1.  Try reversing the comparison.
1265         (emit_store_flag_1): Work if target is NULL.
1266         (emit_store_flag): Work if target is NULL, using the result mode
1267         from the comparison.  Use split_comparison, restructure final part
1268         to simplify conditionals.
1269
1270 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1271
1272         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
1273         * dojump.c (do_jump): Change handling of floating-point
1274         ops to use just do_compare_and_jump.
1275         (split_comparison): New.
1276         (do_compare_rtx_and_jump): Add here logic coming previously
1277         in do_jump, using split_comparison.
1278
1279 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
1280
1281         PR target/40489
1282         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
1283
1284 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1285
1286         * tree-ssa-alias.c: Fix unintentional commit.
1287
1288 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1289
1290         * passes.c (execute_one_pass): Fix unintentional commit.
1291
1292 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1293
1294         * df-problems.c (df_set_seen, df_unset_seen): Delete.
1295         (df_rd_local_compute, df_md_local_compute): Inline them.
1296
1297         (df_md_scratch): New.
1298         (df_md_alloc, df_md_free): Allocate/free it.
1299         (df_md_local_compute): Only include live registers in init.
1300         (df_md_transfer_function): Prune the in-set computed by
1301         the confluence function, and the gen-set too.
1302
1303 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1304
1305         PR rtl-optimization/26854
1306         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
1307         * df-problems.c (df_rd_add_problem): Fix comment.
1308         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
1309         df_md_simulate_artificial_defs_at_top,
1310         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
1311         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
1312         df_md_transfer_function, df_md_init, df_md_confluence_0,
1313         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
1314         problem_MD, df_md_add_problem): New.
1315         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
1316         df_md_get_bb_info): New.
1317         (DF_LAST_PROBLEM_PLUS1): Adjust.
1318
1319         * Makefile.in (fwprop.o): Include domwalk.h.
1320         * fwprop.c: Include domwalk.h.
1321         (reg_defs, reg_defs_stack): New.
1322         (bitmap_only_bit_between): Remove.
1323         (process_defs): New.
1324         (process_uses): Use reg_defs and local_md instead of
1325         bitmap_only_bit_between and local_rd.
1326         (single_def_use_enter_block): New, from build_single_def_use_links.
1327         (single_def_use_leave_block): New.
1328         (build_single_def_use_links): Remove code moved to
1329         single_def_use_enter_block, invoke domwalk.
1330         (use_killed_between): Adjust comment.
1331
1332 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1333
1334         * bitmap.h (bitmap_ior_and_into): New.
1335         * bitmap.c (bitmap_ior_and_into): New.
1336
1337 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1338
1339         * domwalk.h (struct dom_walk_data): Remove all callbacks except
1340         before_dom_children_before_stmts and after_dom_children_after_stmts.
1341         Rename the two remaining callbacks to just before_dom_children and 
1342         after_dom_children. Remove other GIMPLE statement walking bits.
1343         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
1344         * graphite.c: Do not include domwalk.h.
1345         * tree-into-ssa.c (interesting_blocks): New global.
1346         (struct mark_def_sites_global_data): Remove it and names_to_rename.
1347         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
1348         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
1349         now that they're not domwalk callbacks.
1350         (rewrite_initialize_block): Rename to...
1351         (rewrite_enter_block): ... this, place after called functions.  Test
1352         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
1353         (rewrite_finalize_block): Rename to...
1354         (rewrite_leave_block): ... this, place after called functions.
1355         (rewrite_update_init_block): Rename to...
1356         (rewrite_update_enter_block): ... this, place after called functions.
1357         Test interesting_blocks, call rewrite_update_stmt and 
1358         rewrite_update_phi_arguments.
1359         (rewrite_update_fini_block): Rename to...
1360         (rewrite_leave_block): ... this, place after called functions.
1361         (rewrite_blocks): Remove last argument, simplify initialization of
1362         walk_data.
1363         (mark_def_sites_initialize_block): Rename to...
1364         (mark_def_sites_block): ... this, call mark_def_sites.
1365         (mark_def_sites_blocks): Remove argument, simplify initialization of
1366         walk_data.
1367         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
1368         (update_ssa): Likewise.
1369         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
1370         callback.
1371         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
1372         (dom_opt_initialize_block): Rename to...
1373         (dom_opt_enter_block): ... this, place after called functions.  Walk
1374         statements here, inline propagate_to_outgoing_edges.
1375         (dom_opt_finalize_block): Rename to...
1376         (dom_opt_leave_block): ... this, place after called functions.
1377         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
1378         domwalk callback.
1379         (dse_enter_block, dse_record_phi): New.
1380         (dse_record_phis): Delete.
1381         (dse_finalize_block): Rename to...
1382         (dse_leave_block): ... this.
1383         (tree_ssa_dse): Simplify initialization of walk_data.
1384         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
1385         Adjust initialization of walk_data.
1386         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
1387         * tree-ssa-loop-phiopt.c (get_non_trapping):
1388         Adjust initialization of walk_data.
1389         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
1390         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
1391         it's not a domwalk callback.
1392         (uncprop_initialize_block): Rename to...
1393         (dse_enter_block): ... this, call uncprop_into_successor_phis.
1394         (dse_finalize_block): Rename to...
1395         (dse_leave_block): ... this.
1396         (tree_ssa_uncprop): Simplify initialization of walk_data.
1397         * Makefile.in: Adjust dependencies.
1398
1399 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
1400
1401         * arm.md (casesi): Fix test for Thumb1.
1402         (thumb1_casesi_internal_pic): Likewise.
1403         (thumb1_casesi_dispatch): Likewise.
1404
1405 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
1406
1407         * config/arm/arm-cores.def: Added core cortex-m0.
1408         * config/arm/arm-tune.md: Regenerated.
1409         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
1410
1411 2009-06-26  DJ Delorie  <dj@redhat.com>
1412
1413         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
1414
1415         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
1416         the scheduler doesn't tag jump insns.
1417
1418 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
1419
1420         * c-decl.c (merge_decls): Re-indent.
1421
1422 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
1423
1424         PR c/39902
1425         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
1426         Special-case decimal float constants.
1427
1428 2009-06-26  Richard Henderson  <rth@redhat.com>
1429
1430         * function.h (struct function): Add cannot_be_copied_reason,
1431         and cannot_be_copied_set.
1432         * tree-inline.c (has_label_address_in_static_1): Rename from
1433         inline_forbidden_p_2; don't set inline_forbidden_reason here.
1434         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
1435         don't set inline_forbidden_reason.
1436         (copy_forbidden): New function, split out of inline_forbidden_p.
1437         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
1438         (inline_forbidden_p): Use copy_forbidden.
1439         (tree_versionable_function_p): Likewise.
1440         (inlinable_function_p): Merge into tree_inlinable_function_p.
1441         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
1442         * ipa-cp.c (ipcp_versionable_function_p): New function.
1443         (ipcp_cloning_candidate_p): Use it.
1444         (ipcp_node_modifiable_p): Likewise.
1445
1446 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
1447
1448         * builtins.c (expand_builtin_alloca): Handle builtin alloca
1449         that is marked not to be inlined. Remove flag_mudflap use.
1450         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
1451         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
1452
1453 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
1454
1455         PR bootstrap/40338
1456         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
1457         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
1458
1459 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
1460
1461         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
1462         shared libgcc.
1463         (__mingwthr_remove_key_dtor): Likewise.
1464
1465 2009-06-26  Richard Guenther  <rguenther@suse.de>
1466
1467         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
1468
1469 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
1470
1471         PR middle-end/40525
1472         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
1473         try the non-cond_exec path also.
1474
1475 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1476
1477         PR target/40468
1478         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
1479         (output_cbranch): Use new functions.
1480         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
1481         Likewise.
1482
1483 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
1484             Pat Haugen  <pthaugen@us.ibm.com>
1485             Revital Eres <ERES@il.ibm.com>
1486
1487         * config/rs6000/rs6000.c (print_operand): Correct lossage message
1488         for %c error.  Add %x support to print VSX registers as a unified
1489         register set, instead of separate float and altivec registers.
1490         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
1491         %y case, and add support for VSX pre-modify addresses.
1492         (output_toc): Add assert for CONST containing an integer constant
1493         in the PLUS case.
1494         (rs6000_adjust_cost): Add POWER7 support.
1495         (insn_must_be_first_in_group): Ditto.
1496         (insn_must_be_last_in_group): Ditto.
1497         (rs6000_emit_popcount): Ditto.
1498         (rs6000_vector_mode_supported_p): Ditto.
1499
1500         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
1501         Change some of the functions called by macros to being called
1502         through a pointer, so debug functions can be inserted if
1503         -mdebug=addr or -mdebug=cost. 
1504         (rs6000_preferred_reload_class_ptr): Ditto.
1505         (rs6000_secondary_reload_class_ptr): Ditto.
1506         (rs6000_secondary_memory_needed_ptr): Ditto.
1507         (rs6000_cannot_change_mode_class_ptr): Ditto.
1508         (rs6000_secondary_reload_inner): Ditto.
1509         (rs6000_legitimize_reload_address): Ditto.
1510         (rs6000_legitimize_reload_address_ptr): Ditto.
1511         (rs6000_mode_dependent_address): Ditto.
1512         (rs6000_mode_dependent_address_ptr): Ditto.
1513
1514         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
1515         function to return true if the mode allows reg + integer
1516         addresses.
1517         (virtual_stack_registers_memory_p): New function to return true if
1518         the address refers to a virtual stack register.
1519         (rs6000_legitimate_offset_address_p): Move code to say whether a
1520         mode supports reg+int addressing to reg_offset_addressing_ok_p and
1521         call it.
1522         (rs6000_legitimate_address_p): Add checks for modes that only can
1523         do reg+reg addressing.  Start adding VSX support.
1524         (rs6000_legitimize_reload_address): Ditto.
1525         (rs6000_legitimize_address): Ditto.
1526         (rs6000_debug_legitimate_address_p): New debug functions for
1527         -mdebug=addr and -mdebug=cost.
1528         (rs6000_debug_rtx_costs): Ditto.
1529         (rs6000_debug_address_costs): Ditto.
1530         (rs6000_debug_adjust_cost): Ditto.
1531         (rs6000_debug_legitimize_address): Ditto.
1532         (rs6000_legitimize_reload_address_ptr): Point to call normal
1533         function or debug function.  Make functions called via pointer
1534         static.
1535         (rs6000_mode_dependent_address_ptr): Ditto.
1536         (rs6000_secondary_reload_class_ptr): Ditto.
1537         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
1538         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
1539         into a friendlier error.
1540         (rs6000_init_builtins): Add initial VSX support.
1541         (rs6000_adjust_cost): Fix some spacing issues.
1542
1543         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
1544         (REG_CLASS_NAMES): Ditto.
1545         (REG_CLASS_CONTENTS): Ditto.
1546         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
1547         pointer, to add -mdebug=addr support.
1548         (CANNOT_CHANGE_MODE_CLASS): Ditto.
1549         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
1550         -mdebug=addr support.
1551         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
1552         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
1553         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
1554
1555         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
1556         16-bit values.
1557         (bswapsi*): Set attribute types for load/store.  Add combiner
1558         patterns to eliminate zero extend on 64-bit.
1559         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
1560         stdbrx if the hardware supports those instructions.
1561
1562 2009-06-25  Ian Lance Taylor  <iant@google.com>
1563
1564         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
1565         (Link Options): Document -static-libstdc++.
1566
1567 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1568
1569         PR target/38731
1570         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
1571         DATA_ALIGNMENT instead.
1572
1573 2009-06-25  Richard Guenther  <rguenther@suse.de>
1574
1575         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
1576         indirect references against the callused/escaped solutions.
1577         (call_may_clobber_ref_p_1): Likewise.
1578
1579 2009-06-25  Martin Jambor  <mjambor@suse.cz>
1580
1581         PR tree-optimization/40493
1582         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
1583         (enum unscalarized_data_handling): New type.
1584         (handle_unscalarized_data_in_subtree): Return what has been done.
1585         (load_assign_lhs_subreplacements): Handle left flushes differently.
1586         (sra_modify_assign): Use unscalarized_data_handling, simplified
1587         condition determining whether to remove the statement.
1588
1589 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
1590
1591         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
1592         excerpt - @ should be doubled for texinfo.
1593
1594 2009-06-24  Ian Lance Taylor  <iant@google.com>
1595
1596         * config/arc/arc.c: Include "df.h".
1597         (arc_attribute_table): Make static.  Move higher in file.
1598         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
1599         (output_shift): Initialize n later to avoid warning.
1600         * config/arm/arm.c (arm_attribute_table): Make static.  Move
1601         higher in file.
1602         * config/avr/avr.c (avr_attribute_table): Make static.  Move
1603         higher in file.
1604         (reg_class_tab): Change array type from int to enum reg_class.
1605         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
1606         LABEL_REF.
1607         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
1608         (lshrhi3_out): Likewise.
1609         (class_likely_spilled_p): Change return type to bool.
1610         (avr_rtx_costs): Use local code variable with enum type.
1611         * config/avr/avr.md (movmemhi): Use add_reg_note.
1612         (andhi3, andsi3): Don't use AS2 with "and".
1613         (iorhi3, iorsi3): Don't use AS2 with "or".
1614         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
1615         * config/crx/crx.c: Include "df.h".
1616         (crx_attribute_table): Make static.
1617         * config/m32r/m32r.c: Include "df.h".
1618         (m32r_attribute_table): Make static.  Move higher in file.
1619         (pop): Use add_reg_note.
1620         (block_move_call): Change 0 to LCT_NORMAL in function call.
1621         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
1622         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
1623         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
1624         declare, not just when TREE_CODE is defined.
1625         * config/m68hc11/m68hc11.c: Include "expr.h".
1626         (m68hc11_attribute_table): Make static.  Move higher in file.
1627         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
1628         function call.
1629         (m68hc11_register_indirect_p): Likewise.
1630         (m68hc11_function_arg_padding): Change return type to enum
1631         direction.
1632         (emit_move_after_reload): Use add_reg_note.
1633         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
1634         (m68hc11_split_logical): Likewise.
1635         (m68hc11_rtx_costs): Add local code_and outer_code variables with
1636         enum type.
1637         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
1638         to VOIDmode in function call.
1639         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
1640         tree is defined.
1641         (m68hc11_split_logical): Update declaration.
1642         (m68hc11_function_arg_padding): Update declaration.
1643         * config/mcore/mcore.c (regno_reg_class): Change form array of int
1644         to array of enum reg_class.
1645         (mcore_attribute_table): Make static.  Move higher in file.
1646         (mcore_rtx_costs): Add cast to enum type.
1647         * config/mcore/mcore.h (regno_reg_class): Update declaration.
1648         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
1649         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
1650         in file.
1651         * config/sh/predicates.md (trapping_target_operand): Rename and to
1652         and_expr.
1653         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
1654         higher in file.
1655         * config/spu/spu.c (spu_attribute_table): Make static.  Move
1656         higher in file.
1657         * config/v850/v850.c (v850_attribute_table): Make static.  Move
1658         higher in file.
1659         (v850_rtx_costs): Use local code with enum type.
1660         (expand_epilogue): Add cast.
1661         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
1662
1663 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
1664
1665         PR target/40515
1666         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
1667         -m2a-single-only and -m2a-nofpu.
1668         * config/sh/sh.opt: Document m2a generates FPU code.  
1669
1670 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
1671
1672         * defaults.h (CAN_ELIMINATE): Provide default.
1673         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
1674         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
1675         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
1676         * config/spu/spu.h (CAN_ELIMINATE): Delete.
1677         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
1678         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
1679         * config/cris/cris.h (CAN_ELIMINATE): Delete.
1680         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
1681         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
1682         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
1683
1684 2009-06-24  DJ Delorie  <dj@redhat.com>
1685
1686         * mep-ext-cop.cpu: Fix copyright notice.
1687         * mep-default: Fix copyright notice.
1688         * mep-core: Fix copyright notice.
1689         * mep: Fix copyright notice.
1690         * mep-ivc2: Fix copyright notice.
1691         * mep-c5: Fix copyright notice.
1692
1693 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
1694
1695         * doc/contrib.texi (Contributors): 
1696
1697 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1698         
1699         PR middle-end/40501
1700         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
1701         src and dst operands if necessary.
1702
1703 2009-06-23  DJ Delorie  <dj@redhat.com>
1704
1705         Add MeP port.
1706         * config.gcc: Add mep support.
1707         * recog.c: Resurrect validate_replace_rtx_subexp().
1708         * recog.h: Likewise.
1709         * config/mep/: Add new port:
1710         * config/mep/constraints.md: New file.
1711         * config/mep/default.h: New file.
1712         * config/mep/intrinsics.h: New file.
1713         * config/mep/intrinsics.md: New file.
1714         * config/mep/ivc2-template.h: New file.
1715         * config/mep/mep-c5.cpu: New file.
1716         * config/mep/mep-core.cpu: New file.
1717         * config/mep/mep-default.cpu: New file.
1718         * config/mep/mep-ext-cop.cpu: New file.
1719         * config/mep/mep-intrin.h: New file.
1720         * config/mep/mep-ivc2.cpu: New file.
1721         * config/mep/mep-lib1.asm: New file.
1722         * config/mep/mep-lib2.c: New file.
1723         * config/mep/mep-pragma.c: New file.
1724         * config/mep/mep-protos.h: New file.
1725         * config/mep/mep-tramp.c: New file.
1726         * config/mep/mep.c: New file.
1727         * config/mep/mep.cpu: New file.
1728         * config/mep/mep.h: New file.
1729         * config/mep/mep.md: New file.
1730         * config/mep/mep.opt: New file.
1731         * config/mep/predicates.md: New file.
1732         * config/mep/t-mep: New file.
1733
1734 2009-06-23  Ian Lance Taylor  <iant@google.com>
1735
1736         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
1737         from loose_warn into c_loose_warn and from strict_warn into
1738         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
1739         --enable-build-with-cxx.  Set and substitute
1740         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
1741         * Makefile.in (CXXFLAGS): New variable.
1742         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
1743         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
1744         the default is the same as $(STRICT_WARN).
1745         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
1746         (CXX): New variable.
1747         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
1748         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
1749         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
1750         (HOST_LIBS): New variable.
1751         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
1752         (ALL_CXXFLAGS): New variable.
1753         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
1754         * doc/install.texi (Configuration): Document
1755         --enable-build-with-cxx, --with-stage1-ldflags,
1756         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
1757         * configure: Rebuild.
1758
1759 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1760
1761         * config/arm/arm.c (arm_override_options): Fix braces and formatting
1762         from previous commit.
1763
1764 2009-06-23  Ian Lance Taylor  <iant@google.com>
1765
1766         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
1767
1768 2009-06-23  Ian Lance Taylor  <iant@google.com>
1769
1770         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
1771         with ATTRIBUTE_UNUSED.
1772
1773 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
1774             Pat Haugen  <pthaugen@us.ibm.com>
1775             Revital Eres  <eres@il.ibm.com>
1776
1777         * config.in (HAVE_AS_POPCNTD): Add default definition.
1778         (HAVE_AS_LWSYNC): Ditto.
1779
1780         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
1781         release number.
1782         (gcc_cv_as_powerpc_cmpb): Ditto.
1783         (gcc_cv_as_powerpc_dfp): Ditto.
1784         (gcc_cv_as_powerpc_vsx): Ditto.
1785         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
1786         supporting the popcntd/lwsync instructions.
1787         (gcc_cv_as_powerpc_lwsync): Ditto.
1788         * configure: Regenerate.
1789
1790         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
1791         -mcpu=native and -mcpu=power7.
1792         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
1793
1794         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
1795         a variable instead of a mask to reduce the number of mask bits.
1796         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
1797         (-mbit-word): Ditto.
1798         (-mregnames): Ditto.
1799         * config/rs6000/rs6000.opt (-mupdate): Ditto.
1800         (-mfused-madd): Ditto.
1801
1802         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
1803         2.06 instructions.
1804         (-mvsx): New switch for VSX instructions.
1805         (-misel): Move from a variable to a mask to allow it to be set by
1806         -mcpu=.
1807
1808         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
1809         function declaration to an array declaration.
1810         (rs6000_hard_regno_nregs): New external array declaration.
1811
1812         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
1813         files included by rs6000.md.
1814
1815         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
1816         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
1817
1818         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
1819         a target mask.
1820         (rs6000_debug_reg): New -mdebug= variables.
1821         (rs6000_debug_addr): Ditto.
1822         (rs6000_debug_cost): Ditto.
1823         (rs6000_pmode): New variable to hold Pmode.
1824         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
1825         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
1826         calculated at compiler start.
1827         (rs6000_hard_regno_nregs): Change function to an array which holds
1828         HARD_REGNO_NREGS calculated at compiler start.
1829         (rs6000_explicit_options): Delete isel field.
1830         (rs6000_vector_unit): New array to hold which vector unit
1831         supports arithmetic options for a given type.
1832         (rs6000_vector_mem): New array to hold which vector unit supports
1833         memory reference operations for a given type.
1834         (rs6000_vector_align): New array to given the alignment of each
1835         vector type.
1836         (power7_cost): New basic costs for power7.
1837         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
1838         (rs6000_hard_regno_nregs_internal): New function, moved from
1839         HARD_REGNO_NREGS, to calculate the number of registers each hard
1840         register takes for each type.
1841         (rs6000_debug_reg_print): New function for -mdebug=reg support.
1842         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
1843         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
1844         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
1845         unit information here so it is calculated once at compiler startup
1846         time.
1847         (rs6000_override_options): Make -misel a target mask.  Add more
1848         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
1849         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
1850         -mdebug=cost.
1851         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
1852         (rs6000_handle_option): Move -misel from variable to target mask.
1853         (rs6000_builtin_mask_for_load): Add VSX support.
1854         (rs6000_conditional_register_usage): Ditto.
1855         (USE_ALTIVEC_FOR_ARG_P): Ditto.
1856         (function_arg_boundary): Ditto.
1857         (rs6000_expand_builtin): Ditto.
1858         (def_builtin): Make abort message a little friendlier.
1859         (rs6000_emit_int_cmove): Add support for 64-bit isel.
1860
1861         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
1862         assembler support the popcntd instruction instead of a vsx
1863         instruction to enable power7 support.
1864         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
1865         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
1866         option to the assembler if -mcpu=native.
1867         (ASM_CPU_NATIVE_SPEC): Ditto.
1868         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
1869         ISA 2.06 features.
1870         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
1871         the lwsync instruction.
1872         (enum processor_type): Add PROCESSOR_POWER7.
1873         (rs6000_debug_reg): New -mdebug= options.
1874         (rs6000_debug_addr): Ditto.
1875         (rs6000_debug_cost): Ditto.
1876         (rs6000_isel): Delete.
1877         (enum rs6000_vector): New enum to say what vector unit we have.
1878         (VECTOR_UNIT_*): New macros to say which vector unit has
1879         arithmetic operations for a given type.
1880         (VECTOR_MEM_*): New macros to say which vector unit has memory
1881         operations for a given type.
1882         (TARGET_LDBRX): Whether the machine supports the ldbrx
1883         instruction.
1884         (TARGET_ISEL): Delete, -misel moved to be a mask.
1885         (TARGET_ISEL64): New macro for 64-bit isel support.
1886         (UNITS_PER_VSX_WORD): New macro.
1887         (POINTER_SIZE): Move to be an external variable, rather than
1888         calculating whether we are generating 32 ot 64-bit code.
1889         (Pmode): Ditto.
1890         (STACK_BOUNDARY): Add VSX support.
1891         (LOCAL_ALIGNMENT): Ditto.
1892         (SLOW_UNALIGNED_ACCESS): Ditto.
1893         (VSX_REGNO_P): New macro for VSX support.
1894         (VFLOAT_REGNO_P): Ditto.
1895         (VINT_REGNO_P): Ditto.
1896         (VLOGICAL_REGNO_P): Ditto.
1897         (VSX_VECTOR_MODE): Ditto.
1898         (VSX_SCALAR_MODE): Ditto.
1899         (VSX_MODE): Ditto.
1900         (VSX_MOVE_MODE): Ditto.
1901         (VSX_REG_CLASS_P): Ditto.
1902         (HARD_REGNO_NREGS): Instead of calling a function, use an array
1903         lookup.
1904         (UNITS_PER_SIMD_WORD): Add VSX support.
1905         (MODES_TIEABLE_P): Ditto.
1906         (STARTING_FRAME_OFFSET): Ditto.
1907         (STACK_DYNAMIC_OFFSET): Ditto.
1908         (EPILOGUE_USES): Ditto.
1909         (REGNO_REG_CLASS): Move to array lookup.
1910         (CLASS_MAX_NREGS): Ditto.
1911         (rs6000_vector_reg_class): Add declaration.
1912         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
1913         overlap with the floating point and Altivec registers.
1914
1915         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
1916
1917         * config/rs6000/driver-rs6000.c (asm_names): New static array to
1918         give the appropriate asm switches if -mcpu=native.
1919         (host_detect_local_cpu): Add support for "asm".
1920         (host_detect_local_cpu): Follow GNU code guidelines for name.
1921
1922         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
1923         -mbit-word to a variable instead of being a target mask.
1924
1925         * config/rs6000/sync.md (lwsync): If the assembler supports it,
1926         emit the lwsync instruction instead of emitting the instruction as
1927         an integer constant.
1928
1929         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
1930         fixuns_trundfsi2, move expander into rs6000.md.
1931
1932         * config/rs6000/rs6000.md (cpu): Add power7.
1933         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
1934         (logical predicate patterns): Change the single instruction
1935         primitives that set CR0 to be fast_compare instead of compare.
1936         (norsi*): Ditto.
1937         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
1938         (popcntddi2): Ditto.
1939         (popcount<mode>): Ditto.
1940         (floating multiply/add insns): Name the floating point
1941         multiply/add insns.
1942         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
1943         (isel_unsigned_<mode>): Ditto.
1944         (fixuns_trundfsi2): Move expander here from spe.md.
1945         (smindi3): Define if we have -misel on 64-bit systems.
1946         (smaxdi3): Ditto.
1947         (umindi3): Ditto.
1948         (umaxdi3): Ditto.
1949
1950 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
1951
1952         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
1953         extra_objs.
1954         * config/avr/avr.c (avr_current_device): New variable.
1955         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
1956         (avr_arch, mcu_type_s): Move to avr.h.
1957         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
1958         default_data_section_start fields.
1959         (avr_arch): Moved from avr.c.
1960         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
1961         library_name fields.
1962         (avr_current_device, avr_mcu_types, avr_arch_types,
1963         avr_device_to_arch, avr_device_to_data_start,
1964         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
1965         (EXTRA_SPEC_FUNCTIONS): Define.
1966         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
1967         options mapping. Use device_to_arch and device_to_data_start insted.
1968         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
1969         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
1970         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
1971         * config/avr/driver-avr.c: New file.
1972         * config/avr/avr-devices.c: New file.
1973
1974 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
1975
1976         * var-tracking.c (unshare_variable): Force initialized to
1977         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
1978         (set_variable_part): Likewise.
1979         (struct variable_union_info): Remove pos_src field.
1980         (vui_vec, vui_allocated): New variables.
1981         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
1982         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
1983         == 1 use a simpler sorting algorithm.  Compute pos field right
1984         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
1985         Avoid quadratic comparison if !flag_var_tracking_uninit.
1986         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
1987         unshare_variable unconditionally.   
1988         (dataflow_set_different_2): Removed.
1989         (dataflow_set_different): Don't traverse second hash table.
1990         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
1991         unconditionally to var_reg_set or var_mem_set.
1992         (emit_notes_in_bb): Likewise.
1993         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
1994         unshare_variable.
1995         (emit_note_insn_var_location): Don't set initialized to
1996         VAR_INIT_STATUS_INITIALIZED early.
1997         (vt_finalize): Free vui_vec if needed, clear vui_vec and
1998         vui_allocated.
1999         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
2000
2001         * tree-object-size.c (addr_object_size): Instead of checking
2002         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
2003         are no FIELD_DECLs following it.
2004
2005 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
2006
2007         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
2008         order to match bswaps with signed source operands.
2009
2010 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2011
2012         * sdbout.c (sdbout_one_type): Fix braces in switch.
2013
2014 2009-06-23  Richard Guenther  <rguenther@suse.de>
2015
2016         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
2017         member.
2018         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
2019         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
2020         var_callused, callused_tree, var_storedanything, storedanything_tree,
2021         var_integer, integer_tree): Remove global variables.
2022         (new_var_info): Do not pass new id, append the new var to the
2023         global variable vector.
2024         (do_ds_constraint): Use is_global_var member of the variable-info.
2025         (new_scalar_tmp_constraint_exp): Adjust.
2026         (create_function_info_for): Likewise.
2027         (create_variable_info_for): Likewise.
2028         (find_what_var_points_to): Remove dead code.
2029         (init_base_vars): Simplify.
2030         (compute_points_to_sets): Adjust.
2031
2032 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
2033
2034         * combine.c (try_combine): Dump information about the insns we're
2035         combining.
2036
2037 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
2038
2039         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
2040         check when calling force_to_mode on TRUNCATE's operand.
2041
2042 2009-06-22  Ian Lance Taylor  <iant@google.com>
2043
2044         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
2045
2046 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
2047
2048         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
2049
2050 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2051
2052         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
2053         override library linkage flags such as -static-libgcc or
2054         -shared-libgcc.
2055
2056 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2057
2058         * config/m68k/m68k-devices.def: Add line for MCF5221x.
2059
2060 2009-06-22  Ian Lance Taylor  <iant@google.com>
2061
2062         * config/linux.opt: Put mglibc ahead of muclibc.
2063
2064         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
2065         for duplicate decls.
2066
2067 2009-06-22  Matthias Klose  <doko@ubuntu.com>
2068
2069         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
2070
2071 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
2072
2073         PR objc/28050
2074         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
2075         instead of NULL if a parser error occurs.
2076
2077 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2078
2079         * dwarf2out.c (dwarf2_debug_hooks): Initialize
2080         non-DWARF2_DEBUGGING_INFO version.
2081
2082 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
2083
2084         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
2085         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
2086
2087         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
2088         (LIBGCC2_TF_CEXT): Define.
2089         (TF_SIZE): Define.
2090
2091 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2092
2093         PR target/40463
2094         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
2095
2096 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2097
2098         * config/arm/arm.c (arm_override_options): Disable
2099         -mcaller-super-interworking and -mcallee-super-interworking.
2100         * doc/invoke.texi (ARM Options): Document this.
2101
2102 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
2103
2104         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
2105         * config/arm/constraints.md (j): New constraint for movw operands.
2106         (N): Remove thumb2 meaning.
2107         * config/arm/arm.md (*arm_movw): Delete.
2108         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
2109         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
2110         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
2111
2112 2009-06-22  Martin Jambor  <mjambor@suse.cz>
2113
2114         PR tree-optimization/40492
2115         * tree-sra.c (sra_modify_assign): Pass zero offsets to
2116         build_ref_for_offset.
2117
2118 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
2119
2120         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
2121         JUMP_TABLE_DATA_P predicates where applicable.
2122         * auto-inc-dec.c: Ditto.
2123         * builtins.c: Ditto.
2124         * caller-save.c: Ditto.
2125         * calls.c: Ditto.
2126         * cfgcleanup.c: Ditto.
2127         * cfglayout.c: Ditto.
2128         * cfgrtl.c: Ditto.
2129         * combine.c: Ditto.
2130         * combine-stack-adj.c: Ditto.
2131         * cse.c: Ditto.
2132         * cselib.c: Ditto.
2133         * dbxout.c: Ditto.
2134         * df-scan.c: Ditto.
2135         * dse.c: Ditto.
2136         * dwarf2asm.c: Ditto.
2137         * dwarf2out.c: Ditto.
2138         * emit-rtl.c: Ditto.
2139         * except.c: Ditto.
2140         * explow.c: Ditto.
2141         * expmed.c: Ditto.
2142         * expr.c: Ditto.
2143         * final.c: Ditto.
2144         * function.c: Ditto.
2145         * fwprop.c: Ditto.
2146         * gcse.c: Ditto.
2147         * genpreds.c: Ditto.
2148         * genrecog.c: Ditto.
2149         * ifcvt.c: Ditto.
2150         * ira-costs.c: Ditto.
2151         * ira-lives.c: Ditto.
2152         * jump.c: Ditto.
2153         * loop-iv.c: Ditto.
2154         * lower-subreg.c: Ditto.
2155         * modulo-sched.c: Ditto.
2156         * optabs.c: Ditto.
2157         * postreload.c: Ditto.
2158         * print-rtl.c: Ditto.
2159         * recog.c: Ditto.
2160         * reginfo.c: Ditto.
2161         * regmove.c: Ditto.
2162         * reload1.c: Ditto.
2163         * reload.c: Ditto.
2164         * reorg.c: Ditto.
2165         * rtlanal.c: Ditto.
2166         * rtl.c: Ditto.
2167         * sched-vis.c: Ditto.
2168         * sdbout.c: Ditto.
2169         * sel-sched-ir.c: Ditto.
2170         * simplify-rtx.c: Ditto.
2171         * targhooks.c: Ditto.
2172         * var-tracking.c: Ditto.
2173         * vmsdbgout.c: Ditto.
2174
2175 2009-06-22  Matthias Klose  <doko@ubuntu.com>
2176
2177         * Makefile.in (install-plugin): Always use DESTDIR.
2178
2179 2009-06-22  Olivier Hainque  <hainque@adacore.com>
2180         
2181         * config/pa/pa.c (output_call): Don't optimize post call jumps
2182         into return address adjustments if the call may throw.
2183
2184 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
2185
2186         * arm.c (thumb1_output_casesi): New function.
2187         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
2188         optimizing for size or PIC.
2189         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
2190         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
2191         (casesi): Handle Thumb-1 when optimizing for size or PIC.
2192         (thumb1_casesi_internal_pic): New expand rule.
2193         (thumb1_casesi_dispatch): New pattern.
2194         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
2195         thumb-1 mode.
2196         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
2197         in the text seciton when PIC or optimizing for size.
2198         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
2199         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
2200         preservation properties of code.
2201         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
2202         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
2203         (__gnu_thumb1_case_si): New function.
2204         * t-arm (LIB1ASMSRC): Define here.
2205         (LIB1ASMFUNCS): Add some common functions.
2206         * t-arm-elf (LIB1ASMSRC): Delete.
2207         (LIB1ASMFUNCS): Append to existing set.
2208         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2209         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2210         * t-symbian (LIB1ASMFUNCS): Likewise.
2211         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2212         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2213
2214 2009-06-21  Richard Guenther  <rguenther@suse.de>
2215
2216         PR tree-optimization/38729
2217         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
2218         to loops with a single exit if -fno-expensive-optimizations.
2219
2220 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
2221
2222         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
2223         (dataflow_set): Change vars type from htab_t to shared_hash.
2224         (shared_hash_pool, empty_shared_hash): New variables.
2225         (vars_clear): Removed.
2226         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
2227         shared_hash_find_slot_unshare, shared_hash_find_slot,
2228         shared_hash_find_slot_noinsert, shared_hash_find): New
2229         static inlines.
2230         (shared_hash_unshare, shared_hash_destroy): New functions.
2231         (unshare_variable): Unshare set->vars if shared, use
2232         shared_hash_htab.
2233         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
2234         (get_init_value, find_src_set_src, dump_dataflow_set,
2235         clobber_variable_part, emit_notes_for_differences): Use
2236         shared_hash_htab.
2237         (dataflow_set_init): Remove second argument, set vars to
2238         empty_shared_hash instead of creating a new htab.
2239         (dataflow_set_clear): Call shared_hash_destroy and set vars
2240         to empty_shared_hash instead of calling vars_clear.
2241         (dataflow_set_copy): Don't call vars_copy, instead just share
2242         the src htab with dst.
2243         (variable_union): Use shared_hash_*, use initially NO_INSERT
2244         lookup if set->vars is shared.  Don't keep slot cleared before
2245         calling unshare_variable.  Unshare set->vars if needed.
2246         Even ->refcount == 1 vars must be unshared if set->vars is shared
2247         and var needs to be modified.
2248         (variable_canonicalize): New function.
2249         (dataflow_set_union): If dst->vars is empty, just share src->vars
2250         with dst->vars and traverse with variable_canonicalize to canonicalize
2251         and unshare what is needed.
2252         (dataflow_set_different): If old_set and new_set use the same shared
2253         htab, they aren't different.  If number of htab elements is different,
2254         htabs are different.  Use shared_hash_*.
2255         (dataflow_set_destroy): Call shared_hash_destroy instead of
2256         htab_delete.
2257         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
2258         second argument to dataflow_set_init.
2259         (vt_initialize): Likewise.  Initialize shared_hash_pool and
2260         empty_shared_hash, move bb in/out initialization afterwards.
2261         Use variable_htab_free instead of NULL as changed_variables del hook.
2262         (variable_was_changed): Change type of second argument to pointer to
2263         dataflow_set.  When inserting var into changed_variables, bump
2264         refcount.  Unshare set->vars if set is shared htab and slot needs to
2265         be cleared.
2266         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
2267         lookup if set->vars is shared.  Unshare set->vars if needed.
2268         Even ->refcount == 1 vars must be unshared if set->vars is shared
2269         and var needs to be modified.  Adjust variable_was_changed caller.
2270         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
2271         vars must be unshared if set->vars is shared and var needs to be
2272         modified.  Adjust variable_was_changed caller.
2273         (emit_note_insn_var_location): Don't pool_free var.
2274         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
2275         instead of 1.
2276         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
2277         free_alloc_pool on shared_hash_pool.
2278
2279 2009-06-20  Anthony Green  <green@moxielogic.com>
2280
2281         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
2282         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
2283
2284 2009-06-20  Richard Guenther  <rguenther@suse.de>
2285
2286         * tree-ssa-structalias.c (find_func_aliases): For memset use
2287         a constraint from NULL if we memset to zero.
2288         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
2289         we explicitly handle that do not read from memory.
2290         (call_may_clobber_ref_p_1): Properly handle builtins that may
2291         set errno.
2292
2293 2009-06-20  Richard Guenther  <rguenther@suse.de>
2294
2295         PR tree-optimization/40495
2296         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
2297         (new_scalar_tmp_constraint_exp): New function.
2298         (process_constraint): Do not create temporary decls.
2299         (process_all_all_constraints): Likewise.
2300         (handle_const_call): Likewise.
2301         (create_function_info_for): Do not set decl.
2302
2303 2009-06-19  Ian Lance Taylor  <iant@google.com>
2304
2305         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
2306         (rs6000_attribute_table): Make static; move before use.
2307
2308 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
2309
2310         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
2311         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
2312         Propagate the TREE_READONLY flag without overwriting it.
2313         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
2314         Propagate the TREE_READONLY flag onto the result.
2315         (process_call_operands): Move around.  Use correct constant value.
2316
2317 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2318
2319         PR target/40482
2320         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
2321         * config/arm/arm.md: Likewise.
2322
2323 2009-06-19  Ian Lance Taylor  <iant@google.com>
2324
2325         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
2326         to GIMPLE_ERROR_MARK.
2327
2328         * c-typeck.c (build_conditional_expr): Add op1_original_type and
2329         op2_original_type parameters.  Warn about using different enum types.
2330         * c-parser.c (c_parser_conditional_expression): Pass original
2331         types to build_conditional_expr.
2332         * c-tree.h (build_conditional_expr): Update declaration.
2333
2334 2009-06-19  Ian Lance Taylor  <iant@google.com>
2335
2336         * config/i386/i386.c (ix86_function_specific_save): Test that
2337         fields match values, rather than testing the values are in a
2338         certain range.
2339
2340 2009-06-19  Richard Guenther  <rguenther@suse.de>
2341
2342         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
2343         ADDR_EXPR pointers.
2344         (ptr_derefs_may_alias_p): Likewise.
2345         (ptr_deref_may_alias_ref_p_1): New function.
2346         (ptr_deref_may_alias_ref_p): Likewise.
2347         (ref_maybe_used_by_call_p_1): Handle builtins that are not
2348         covered by looking at the ESCAPED solution.
2349         (call_may_clobber_ref_p_1): Likewise.
2350         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
2351         Handle NULL_TREE offset.  Do not produce redundant constraints.
2352         (process_all_all_constraints): New helper function.
2353         (do_structure_copy): Use it.
2354         (handle_lhs_call): Likewise.
2355         (find_func_aliases): Handle some builtins with pointer arguments
2356         and/or return values explicitly.
2357
2358 2009-06-19  Ian Lance Taylor  <iant@google.com>
2359
2360         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
2361
2362 2009-06-19  Ian Lance Taylor  <iant@google.com>
2363
2364         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
2365
2366 2009-06-19  Ian Lance Taylor  <iant@google.com>
2367
2368         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
2369         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
2370         version.
2371
2372         * c-decl.c (finish_decl): If -Wc++-compat, warn about
2373         uninitialized const.
2374
2375 2009-06-19  Ian Lance Taylor  <iant@google.com>
2376
2377         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
2378         all uses.
2379
2380         * c-decl.c (in_struct, struct_types): Remove.
2381         (struct c_binding): Add in_struct field.
2382         (c_binding_ptr): Define type, along with VEC.
2383         (struct c_struct_parse_info): Define.
2384         (struct_parse_info): New static variable.
2385         (bind): Initialize in_struct field.
2386         (start_struct): Remove enclosing_in_struct and
2387         enclosing_struct_types parameters.  Add
2388         enclosing_struct_parse_info parameter.  Change all callers.  Set
2389         struct_parse_info rather than in_struct and struct_types.
2390         (grokfield): If -Wc++-compat and there is a symbol binding for the
2391         field name, set the in_struct flag and push it on the
2392         struct_parse_info->fields vector.
2393         (warn_cxx_compat_finish_struct): New static function.
2394         (finish_struct): Remove enclosing_in_struct and
2395         enclosing_struct_types parameters.  Add
2396         enclosing_struct_parse_info parameter.  Change all callers.  Don't
2397         set C_TYPE_DEFINED_IN_STRUCT here.  Call
2398         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
2399         parameter.  Only push on struct_types if warn_cxx_compat.
2400         (finish_enum): Only push on struct_types if warn_cxx_compat.
2401         (declspecs_add_type): Add loc parameter.  Change all callers.
2402         Change all error calls to error_at.  Pass loc, not input_location,
2403         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
2404         defined in a struct.  If -Wc++-compat and parsing a struct, record
2405         that a typedef name was used.
2406         * c-parser.c (c_parser_declspecs): Get location to pass to
2407         declspecs_add_type.
2408         (c_parser_struct_or_union_specifier): Update calls to start_struct
2409         and finish_struct.
2410         * c-tree.h (struct c_struct_parse_info): Declare.
2411         (finish_struct, start_struct): Update declarations.
2412         (declspecs_add_type): Update declaration.
2413
2414 2009-06-19  Ian Lance Taylor  <iant@google.com>
2415
2416         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
2417         variable with an anonymous type.
2418
2419 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
2420
2421         * see.c: Remove for real.
2422
2423 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
2424
2425         * optabs.h (enum optab_index): Add new OTI_significand.
2426         (significand_optab): Define corresponding macro.
2427         * optabs.c (init_optabs): Initialize significand_optab.
2428         * genopinit.c (optabs): Implement significand_optab using
2429         significand?f2 patterns.
2430         * builtins.c (expand_builtin_mathfn): Handle
2431         BUILT_IN_SIGNIFICAND{,F,L}.
2432         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
2433         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
2434
2435         * config/i386/i386.md (significandxf2, significand<mode>2): New
2436         expanders to implement significandf, significand and significandl
2437         built-ins as inline x87 intrinsics.
2438
2439 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
2440
2441         * config/avr/avr.c (avr_override_options): Remove setting value of
2442         PARAM_INLINE_CALL_COST.
2443
2444 2009-06-18  Richard Henderson  <rth@redhat.com>
2445
2446         PR 40488
2447         * tree-pass.h (TDF_ASMNAME): New.
2448         * tree-dump.c (dump_options): Add asmname.
2449         * doc/invoke.texi: Document it.
2450
2451         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
2452         (dump_decl_name): ...here.
2453         (dump_function_name): New flags arg; mind TDF_ASMNAME.
2454         (dump_generic_node): Update dump_function_name calls.
2455         (print_call_name): New flags arg; update all dump calls.
2456         * diagnostic.h (print_call_name): Update.
2457         * gimple-pretty-print.c (dump_gimple_call): Update.
2458
2459 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
2460
2461         PR target/40470
2462         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
2463
2464 2009-06-18  Diego Novillo  <dnovillo@google.com>
2465
2466         * doc/plugins.texi: Document plugin_is_GPL_compatible.
2467         * plugin.c (str_license): Declare.
2468         (try_init_one_plugin): Assert that the symbol
2469         'plugin_is_GPL_compatible' exists.
2470
2471 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
2472
2473         * see.c: Remove.
2474         * Makefile.in (OBJS-common): Remove see.o.
2475         (see.o): Remove.
2476         * common.opt (fsee): Mark as preserved for backward compatibility.
2477         * opts.c (common_handle_option): Add OPT_fsee to the backward 
2478         compatibility section.
2479         * passes.c (init_optimization_passes, pass_see): Remove pass.
2480         * timevar.def (TV_SEE): Remove.
2481         * tree-pass.h (pass_see): Remove declaration.
2482         * doc/invoke.texi (-fsee): Remove documentation.
2483         
2484 2009-06-18  Martin Jambor  <mjambor@suse.cz>
2485
2486         * tree-sra.c: Include statistics.h
2487         (sra_stats): New variable.
2488         (sra_initialize): Clear sra_stats.
2489         (create_access_replacement): Increment sra_stats.replacements.
2490         (get_access_replacement): Do not return twice.
2491         (analyze_all_variable_accesses): Increment statistics counter by the
2492         number of scalarized aggregates.
2493         (generate_subtree_copies): Increment sra_stats.subtree_copies.
2494         (sra_modify_expr): Increment sra_stats.exprs.
2495         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
2496         (sra_modify_assign): Increment sra_stats.exprs,
2497         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
2498         (perform_intra_sra): Update statistics counters.
2499         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
2500
2501 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
2502
2503         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
2504         (arm_scalar_mode_supported_p): New function.
2505
2506 2009-06-18  Paul Brook  <paul@codesourcery.com>
2507             Sandra Loosemore  <sandra@codesourcery.com>
2508
2509         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
2510         (__extendhfsf2, __truncsfhf2): Define.
2511         * config/arm/fp16.c: New file.
2512         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
2513         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
2514
2515 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
2516
2517         * doc/extend.texi (Half-Precision): New section.
2518         * doc/invoke.texi (Option Summary): List -mfp16-format.
2519         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
2520         * config/arm/arm.opt (mfp16-format=): New.
2521         * config/arm/arm.c: Include intl.h.
2522         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
2523         (TARGET_INVALID_RETURN_TYPE): Redefine.
2524         (TARGET_PROMOTED_TYPE): Redefine.
2525         (TARGET_CONVERT_TO_TYPE): Redefine.
2526         (arm_fp16_format): Define.
2527         (all_fpus): Add entry for neon-fp16.
2528         (fp_model_for_fpu): Likewise.
2529         (struct fp16_format): Declare.
2530         (all_fp16_formats): Define.
2531         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
2532         functions.
2533         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
2534         and no ldrh.
2535         (arm_legitimate_index_p): Treat HFmode like HImode.
2536         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
2537         (coproc_secondary_reload_class): Special-case HFmode.
2538         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
2539         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
2540         (arm_init_fp16_builtins): New.
2541         (arm_init_builtins): Call it.
2542         (arm_invalid_parameter_type): New.
2543         (arm_invalid_return_type): New.
2544         (arm_promoted_type): New.
2545         (arm_convert_to_type).
2546         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
2547         format.
2548         (arm_emit_fp16_const): New function.
2549         (arm_mangle_type): Mangle __fp16 as "Dh".
2550         * config/arm/arm.h (TARGET_VFPD32): Make it know about
2551         FPUTYPE_NEON_FP16.
2552         (TARGET_NEON_FP16): New.
2553         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
2554         (enum fputype): Add FPUTYPE_NEON_FP16.
2555         (enum arm_fp16_format_type): Declare.
2556         (arm_fp16_format): Declare.
2557         (LARGEST_EXPONENT_IS_NORMAL): Define.
2558         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
2559         * config/arm/arm-modes.def (HFmode): Define.
2560         * config/arm/vfp.md: (*movhf_vfp): New.
2561         (extendhfsf2): New.
2562         (truncsfhf2): New.
2563         * config/arm/arm.md: (fpu): Add neon_fp16.
2564         (floatsihf2, floatdihf2): New.
2565         (fix_trunchfsi2, fix_trunchfdi2): New.
2566         (truncdfhf2): New.
2567         (extendhfdf2): New.
2568         (movhf): New.
2569         (*arm32_movhf): New.
2570         (*thumb1_movhf): New.
2571         (consttable_2): Add check for HFmode constants.
2572         (consttable_4): Handle HFmode constants.
2573
2574 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
2575
2576         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
2577
2578 2009-06-17  Olivier Hainque  <hainque@adacore.com>
2579
2580         * collect2.c (main): Use CONST_CAST2 to perform char ** to
2581         const char ** conversion in AIX specific section.
2582         
2583 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
2584
2585         * config/i386/i386.c (ix86_special_builtin_type): Remove
2586         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
2587         (bdesc_special_args): Updated.
2588         (ix86_init_mmx_sse_builtins): Likewise.
2589         (ix86_expand_special_args_builtin): Likewise.
2590
2591 2009-06-17  Richard Henderson  <rth@redhat.com>
2592
2593         * tree-pretty-print.c (maybe_dump_asm_name): New.
2594         (dump_decl_name): Use it.
2595         (PRINT_FUNCTION_NAME): Merge into...
2596         (dump_function_name): ... here.  Use maybe_dump_asm_name.
2597
2598 2009-06-17  Cary Coutant  <ccoutant@google.com>
2599
2600         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
2601         Change caller.
2602         * debug.c (struct gcc_debug_hooks): Change placeholder for
2603         source_line hook.
2604         (debug_nothing_int_charstar_int): Replaced by...
2605         (debug_nothing_int_charstar_int_bool): ...this.
2606         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
2607         source_line prototype.
2608         (debug_nothing_int_charstar_int): Replaced by...
2609         (debug_nothing_int_charstar_int_bool): ...this.
2610         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
2611         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
2612         Output is_stmt operand when necessary.
2613         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
2614         (notice_source_line): Add is_stmt parameter.
2615         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
2616         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
2617         Change callers.
2618         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
2619         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
2620
2621 2009-06-17  Ian Lance Taylor  <iant@google.com>
2622
2623         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
2624         Change all uses.
2625         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
2626         call uses.
2627
2628 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
2629
2630         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
2631         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
2632         tree_strip_sign_nop_conversions and
2633         tree_ssa_strip_useless_type_conversions rather than stripping
2634         the operations here.
2635         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
2636         Declare them.
2637         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
2638         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
2639         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
2640         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
2641         functions.
2642
2643 2009-06-17  Michael Eager  <eager@eagercon.com>
2644
2645         * config/rs6000/constraints.md (register_constraint "d"): New.
2646         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
2647         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
2648         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
2649         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
2650         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
2651         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
2652         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
2653         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
2654         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
2655         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
2656         __fctiwz): Same.
2657         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
2658         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
2659         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
2660         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
2661         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2662         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
2663         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
2664         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
2665         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
2666         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
2667         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
2668         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
2669         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
2670         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
2671
2672 2009-06-16  Ian Lance Taylor  <iant@google.com>
2673
2674         * profile.c (total_num_never_executed): Don't define.
2675         (compute_branch_probabilities): Don't count or print
2676         num_never_executed.
2677         (init_branch_prob): Don't set total_num_never_executed.
2678         (end_branch_prob): Don't print total_num_never_executed.
2679
2680 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
2681
2682         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
2683
2684 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
2685
2686         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
2687         (nabstd2_fpr): Same.
2688
2689 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
2690
2691         * expr.c (expand_assignment): Change complex type check.
2692
2693 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
2694
2695         * doc/plugins.texi (Building GCC plugins): Added new section. 
2696
2697 2009-06-17  Ian Lance Taylor  <iant@google.com>
2698
2699         * c-pch.c (get_ident): Don't set size of templ array.
2700         (pch_init): Don't set size of partial_pch array.
2701
2702         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
2703         string constant to intialize an array whose size is the length of
2704         the string.
2705
2706 2009-06-17  Richard Guenther  <rguenther@suse.de>
2707
2708         PR tree-optimization/40389
2709         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
2710         to addressable types.
2711         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
2712
2713 2009-06-17  Richard Guenther  <rguenther@suse.de>
2714
2715         PR middle-end/40460
2716         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
2717         if there is no evolution of left in the loop bail out.
2718         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
2719         chrec_fold_multiply.
2720
2721 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
2722             Janis Johnson  <janis187@us.ibm.com>
2723
2724         PR target/39254
2725         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
2726         for the symbol ref of a constant that is the source of a move
2727         - nor for any other not-obvious-label-ref constants.
2728
2729 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
2730
2731         * plugin.c (position_pass): Skip newly inserted pass during list
2732         traversal to avoid repeated insertion.
2733
2734 2009-06-16  Ian Lance Taylor  <iant@google.com>
2735
2736         * vec.h (VEC_stack_alloc): Define different version if
2737         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
2738         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
2739         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
2740         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
2741
2742 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
2743
2744         * config.gcc (extra_headers): Add ia32intrin.h for x86.
2745
2746         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
2747         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
2748         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
2749         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
2750         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
2751         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
2752         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
2753         (bdesc_special_args): Add __builtin_ia32_rdtsc and
2754         __builtin_ia32_rdtscp.
2755         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
2756         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
2757         and __builtin_ia32_rorhi.
2758         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
2759         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
2760         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
2761         (ix86_expand_args_builtin): Likewise.
2762         (ix86_expand_special_args_builtin): Likewise.
2763
2764         * config/i386/i386.md (UNSPECV_RDTSCP): New.
2765         (UNSPECV_RDTSC): Likewise.
2766         (UNSPECV_RDPMC): Likewise.
2767         (*bsr): Renamed to ...
2768         (bsr): This
2769         (*bsr_rex64): Renamed to ...
2770         (bsr_rex64): This.
2771         (rdpmc): New.
2772         (*rdpmc): Likewise.
2773         (*rdpmc_rex64): Likewise.
2774         (rdtsc): Likewise.
2775         (*rdtsc): Likewise.
2776         (*rdtsc_rex64): Likewise.
2777         (rdtscp): Likewise.
2778         (*rdtscp): Likewise.
2779         (*rdtscp_rex64): Likewise.
2780
2781         * config/i386/ia32intrin.h: New.
2782
2783         * config/i386/x86intrin.h: Include <ia32intrin.h>.
2784
2785 2009-06-16  Ian Lance Taylor  <iant@google.com>
2786
2787         * ira-build.c (copy_info_to_removed_store_destinations):
2788         Initialize parent_a.
2789
2790 2009-06-16  Ian Lance Taylor  <iant@google.com>
2791
2792         * c-decl.c (grokdeclarator): Change size_varies to bool.
2793
2794 2009-06-16  Ian Lance Taylor  <iant@google.com>
2795
2796         * sel-sched.c: Make forward declarations of move_op_hooks and
2797         fur_hooks explicitly extern.
2798
2799 2009-06-16  Ian Lance Taylor  <iant@google.com>
2800
2801         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
2802         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
2803
2804 2009-06-16  Ian Lance Taylor  <iant@google.com>
2805
2806         * resource.c (mark_referenced_resources): Change
2807         include_delayed_effects parameter to bool.  Change all callers.
2808         (mark_end_of_function_resources): Likewise.
2809         * reorg.c (insn_references_resource_p): Likewise.
2810         (insn_sets_resource_p): Likewise.
2811         * resource.h (mark_referenced_resources): Update declaration.
2812         (mark_end_of_function_resources): Update declaration.
2813
2814 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
2815
2816         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
2817
2818 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
2819
2820         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
2821         GCC can bootstrap on AIX with GNU Binutils 2.20.
2822
2823 2009-06-16  Ian Lance Taylor  <iant@google.com>
2824
2825         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
2826
2827 2009-06-16  Ian Lance Taylor  <iant@google.com>
2828
2829         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
2830         inline, not extern inline.
2831         (exact_log2): Likewise.
2832         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
2833         test CLZ_HWI.
2834         (exact_log2): Likewise, but don't test CTZ_HWI.
2835
2836 2009-06-16  Ian Lance Taylor  <iant@google.com>
2837
2838         * bitmap.c (bitmap_clear): Don't declare as inline.
2839         * gimple.c (gimplify_assign): Likewise.
2840         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
2841         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
2842         (sched_scan_info): Remove duplicate definition.
2843
2844 2009-06-16  Ian Lance Taylor  <iant@google.com>
2845
2846         * c-common.c (skip_evaluation): Don't define.
2847         (c_inhibit_evaluation_warnings): Define global variable.
2848         (overflow_warning): Check c_inhibit_evaluation_warnings rather
2849         than skip_evaluation.
2850         (convert_and_check, warn_for_div_by_zero): Likewise.
2851         * c-common.h (skip_evaluation): Don't declare.
2852         (c_inhibit_evaluation_warnings): Declare.
2853         * c-parser.c (c_parser_typeof_specifier): Set
2854         c_inhibit_evaluation_warnings rather than skip_evaluation.
2855         (c_parser_conditional_expression): Likewise.
2856         (c_parser_binary_expression): Likewise.
2857         (c_parser_sizeof_expression): Likewise.
2858         (c_parser_alignof_expression): Likewise.
2859         * c-typeck.c (build_indirect_ref): Check
2860         c_inhibit_evaluation_warnings rather than skip_evaluation.
2861         (build_conditional_expr, build_binary_op): Likewise.
2862
2863 2009-06-16  Richard Guenther  <rguenther@suse.de>
2864
2865         * tree-ssa-alias.c (is_escape_site): Remove.
2866         * tree-ssa-alias.h (enum escape_type): Remove.
2867         (is_escape_site): Likewise.
2868         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
2869         via casts and asms without deferring to is_escape_site.
2870
2871 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
2872
2873         PR middle-end/40446
2874         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
2875         use gen_lowpart if op0 has complex mode.
2876
2877 2009-06-16  Richard Guenther  <rguenther@suse.de>
2878
2879         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
2880         variables add them to ESCAPED.
2881         (find_func_aliases): Do not make all indirectly stored values escaped.
2882
2883 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
2884
2885         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
2886         make_decl_one_only.
2887
2888 2009-06-16  Martin Jambor  <mjambor@suse.cz>
2889
2890         PR tree-optimization/40432
2891         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
2892         check whether we need to force gimple register operand.
2893
2894 2009-06-16  Martin Jambor  <mjambor@suse.cz>
2895
2896         PR tree-optimization/40413
2897         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
2898         build_ref_for_offset.
2899         (propagate_subacesses_accross_link): Fix a typo in a comment.
2900
2901 2009-06-16  Ira Rosen  <irar@il.ibm.com>
2902
2903         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
2904         with additional parameter.
2905         * tree-vectorizer.h (enum vect_def_type): Add new value
2906         vect_nested_cycle.
2907         (enum vect_relevant): Add comments.
2908         (vect_is_simple_reduction): Add new argument.
2909         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
2910         Detect nested cycles.
2911         (vect_is_simple_reduction): Update documentation, add an argument to
2912         distinguish inner-loop reduction from nested cycle, detect nested
2913         cycles, fix printings and indentation, don't swap operands in case
2914         of nested cycle.
2915         (get_initial_def_for_reduction): Handle subtraction.
2916         (vect_create_epilog_for_reduction): Add new argument to specify
2917         reduction variable.
2918         (vect_finalize_reduction): Handle subtraction, fix comments.
2919         (vectorizable_reduction): Handle nested cycles. In case of nested
2920         cycle keep track of the reduction variable position. Call 
2921         vect_is_simple_reduction with additional parameter. Use original
2922         statement code in reduction epilogue for nested cycle. Call
2923         vect_create_epilog_for_reduction with additional parameter.
2924         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
2925         inner-loop vectorization.
2926         (vect_recog_widen_sum_pattern): Likewise.
2927         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
2928         and reductions.
2929         (vect_mark_stmts_to_be_vectorized): Likewise.
2930         (vect_get_vec_def_for_operand): Handle nested cycles.
2931
2932 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2933
2934         * doc/invoke.texi (Debugging Options): Fix option index entries
2935         for -fdump-statistics, -frandom-seed add entries for
2936         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
2937         (FRV Options): Fix entries for -mTLS, -mtls.
2938         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
2939         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
2940         (M68hc1x Options): Fix @itemx for -mnominmax.
2941         (MCore Options): Fix entry for -mno-lsim.
2942         (MMIX Options): Fix entry for -mabi=mmixware.
2943         (PDP-11 Options): Fix entry for -mbcopy-builtin.
2944
2945 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
2946
2947         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
2948         Mention the plugin mode of gengtype.
2949         * doc/gty.texi (Source Files Containing Type Information): Likewise.
2950         * gengtype.c: Updated copyright.
2951         (plugin_files, nb_plugin_files) Added new static variables.
2952         (measure_input_list) Care about plugin_files.
2953         (write_rtx_next): Added early return in plugin mode.
2954         (create_file): Updated copyright year in generated file. Added
2955         asserts.
2956         (oprintf): Added early return if NULL outf.
2957         (get_output_file_with_visibility): Care of plugin_files.
2958         (get_output_file_name): May return null.
2959         (write_local): Added early return.
2960         (put_mangled_filename): Ditto.
2961         (finish_root_table): Added check for base_files.
2962         (write_roots): Care about null when plugins.
2963         (main): Added plugin mode.
2964
2965 2009-06-15  Ian Lance Taylor  <iant@google.com>
2966
2967         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
2968         * gcov.c (read_count_file): Add braces around variables declared
2969         before label.
2970
2971         * c.opt (Wjump-misses-init): New warning.
2972         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
2973         -Wall and -Wc++-compat if not already set.
2974         (c_common_post_options): Clear warn_jump_misses_init if it was not
2975         set.
2976         * c-decl.c (struct c_binding): Change type field to a union with
2977         new label field.  Make it the first field in the struct.  Update
2978         references to type to use u.type instead.
2979         (struct c_spot_bindings): Define.
2980         (struct c_goto_bindings): Define.
2981         (c_goto_bindings_p): Define, along with VECs.
2982         (struct c_label_vars): Define.
2983         (struct c_scope): Add has_label_bindings field.
2984         (bind_label, set_spot_bindings): New static functions.
2985         (decl_jump_unsafe, update_spot_bindings): New static functions.
2986         (update_label_decls): New static function.
2987         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
2988         Update binding u.label field to shadowed field.
2989         (c_binding_start_stmt_expr): New function.
2990         (c_binding_end_stmt_expr): New function.
2991         (pushdecl): Don't call c_begin_vm_scope.
2992         (make_label): Add defining and p_label_vars parameters.  Change
2993         all callers.
2994         (lookup_label): Correct test for whether a label has not yet been
2995         defined.  Call bind_label rather than bind.
2996         (warn_about_goto): New static function.
2997         (lookup_label_for_goto): New function.
2998         (declare_label): Call bind_label rather than bind.
2999         (check_earlier_gotos): New static function.
3000         (define_label): Don't give errors about jumping into statement
3001         expressions or scopes of variably modified types.  Call
3002         set_spot_bindings and check_earlier_gotos.  Call bind_label
3003         instead of bind.  Don't set label_context_stack_se or
3004         label_context_stack_vm.
3005         (c_get_switch_bindings): New function.
3006         (c_release_switch_bindings): New function.
3007         (c_check_switch_jump_warnings): New function.
3008         (start_function): Don't set label_context_stack_se or
3009         label_context_stack_vm.
3010         (finish_function): Likewise.
3011         * c-typeck.c (label_context_stack_se): Don't define.
3012         (label_context_stack_vm): Don't define.
3013         (c_finish_goto_label): Call lookup_label_for_goto rather than
3014         lookup_label.  Don't give errors about jumping into a statement
3015         expression or the scope of a variably modified type.  Don't set
3016         label_context_stack_se or label_context_stack_vm.
3017         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
3018         fields.  Add bindings field.
3019         (c_start_case): Don't set deleted fields.  Set bindings field.
3020         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
3021         or blocked_vm.  Call c_check_switch_jump_warnings.
3022         (c_finish_case): Don't test blocked_stmt_expr field.  Call
3023         c_release_switch_bindings.
3024         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
3025         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
3026         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
3027         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
3028         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
3029         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
3030         (c_begin_vm_scope, c_end_vm_scope): Don't define.
3031         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
3032         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
3033         (C_DECL_UNJUMPABLE_VM): Don't define.
3034         (C_DECL_UNDEFINABLE_VM): Don't define.
3035         (struct c_label_list): Don't define.
3036         (struct c_label_context_se): Don't define.
3037         (struct c_label_context_vm): Don't define.
3038         (struct c_spot_bindings): Declare.
3039         (c_bindings_start_stmt_expr): Declare.
3040         (c_bindings_end_stmt_expr): Declare.
3041         (lookup_label_for_goto): Declare.
3042         (c_get_switch_bindings, c_release_switch_bindings): Declare.
3043         (c_check_switch_jump_warnings): Declare.
3044         (label_context_stack_se, label_context_stack_vm): Don't declare.
3045         (c_finish_goto_label): Update declaration.
3046         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
3047         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
3048         (Warning Options): Document -Wjump-misses-init.
3049
3050 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
3051
3052         * tree-object-size.c (addr_object_size): Fix a pasto in the last
3053         change.
3054
3055 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
3056
3057         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
3058
3059 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
3060
3061         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
3062
3063 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
3064
3065         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
3066
3067 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
3068
3069         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
3070         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
3071         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
3072         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
3073         * dwarf2asm.c (dw2_force_const_mem): Update call to
3074         make_decl_one_only.
3075         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
3076         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
3077         * langhooks.c (lhd_comdat_group): Remove.
3078         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
3079         * tree.h (DECL_COMDAT_GROUP): New.
3080         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
3081         (tree_decl_with_vis): Add comdat_group. Remove one_only.
3082         (make_decl_one_only): Change signature.
3083         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
3084         make_decl_one_only.
3085         (make_decl_one_only): Change signature.
3086         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
3087
3088 2009-06-15  Richard Guenther  <rguenther@suse.de>
3089
3090         PR middle-end/40439
3091         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
3092
3093 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3094
3095         * tree-ssa-math-opts.c: Remove extra divide.
3096
3097 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3098
3099         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
3100
3101 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3102
3103         * passes.c: Add bswap pass.
3104         * tree-pass.h: Add pass_optimize_bswap declaration.
3105         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
3106         Include rtl.h, expr.h and optabs.h for optab_handler check.
3107         (struct symbolic_number, pass_optimize_bswap): New definition.
3108         (do_shift_rotate, verify_symbolic_number_p): New functions.
3109         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
3110         (gate_optimize_bswap): New function.
3111         * tree.c (widest_int_cst_value): New function.
3112         * tree.h (widest_int_cst_value): Prototype added.
3113
3114 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
3115
3116         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
3117         REG_EQUAL/REG_EQUIV notes.
3118
3119 2009-06-14  Richard Guenther  <rguenther@suse.de>
3120
3121         PR middle-end/40389
3122         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
3123         has its address taken if NRV was applied and it is addressable.
3124         * tree-ssa-structalias.c (get_constraint_for_address_of): New
3125         function split out from ...
3126         (get_constraint_for_1): ... here.
3127         (handle_rhs_call): Use it to mark the return slot escaped if
3128         it is addressable and NRV was applied.
3129
3130 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
3131
3132         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
3133         Change first argument type to location_t.
3134         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
3135         Do not set input_location.
3136         Use loc instead of input_location throughout.
3137
3138 2009-06-13  Richard Guenther  <rguenther@suse.de>
3139
3140         PR tree-optimization/40421
3141         * tree-predcom.c (should_unroll_loop_p): Remove.
3142         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
3143
3144 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
3145
3146         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3147         Add location argument.
3148
3149 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
3150
3151         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
3152         build_decl.
3153         * config/s390/s390.c (s390_build_builtin_va_list): Same.
3154         (s390_gimplify_va_arg): Pass location to create_artificial_label.
3155         * config/spu/spu-protos.h: Add location to
3156         spu_resolve_overloaded_builtin.
3157         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
3158         spu_build_builtin_va_list.
3159         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
3160         argument.  Pass location to build_function_call_vec.
3161         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
3162         build_decl.
3163         (emit_fpu_switch): Same.
3164         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
3165         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
3166         to build_decl and create_artificial_label.
3167         (xtensa_gimplify_va_arg_expr): Same.
3168         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
3169         (xstormy16_gimplify_va_arg_expr): Same.
3170         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
3171         * config/arm/arm.c (arm_build_builtin_va_list): Same.
3172         * config/mips/mips.c (mips_build_builtin_va_list): Same.
3173         (mips16_build_function_stub): Same.
3174         (mips16_build_call_stub): Same.
3175
3176 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
3177
3178         PR target/40327
3179         * arm/constraints.md (Pa, Pb): New constraints.
3180         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a 
3181         split pattern to deal with them.
3182
3183 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
3184
3185         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
3186         fix index entry for -Xpreprocessor.
3187
3188 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
3189
3190         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3191         Add location argument to build_decl call.
3192         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
3193         (rs6000_init_builtins): Same.
3194         (spe_init_builtins): Same.
3195         (rs6000_gimplify_va_arg): Add location argument to
3196         create_artificial_label call.
3197
3198 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
3199
3200         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
3201         * combine-stack-adj.c (pass_stack_adjustments): Use it.
3202         * Makefile.in: Fix GGC dependency for gcse.o.
3203
3204 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
3205
3206         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
3207         * gimple-pretty-print.c (dump_gimple_stmt): Same.
3208         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
3209         created.
3210         * c-parser.c (c_parser_binary_expression): Use current column while
3211         building binary operations.
3212         * common.opt (fshow-column): Enable by default.
3213         * tree-vrp.c (check_array_ref): Use warning_at.
3214         (check_array_bounds): Use location from call back if expr has no
3215         location.
3216         * tree.h: Add location argument to maybe_fold_*.
3217         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
3218         (maybe_fold_offset_to_array_ref): Add location argument and use it.
3219         (maybe_fold_offset_to_component_ref): Same.
3220         (maybe_fold_offset_to_reference): Same.
3221         (maybe_fold_offset_to_address): Same.
3222         (maybe_fold_stmt_indirect): Same.
3223         (maybe_fold_stmt_addition): Same.
3224         (fold_stmt_r): Pass location to maybe_fold_*.
3225         (fold_gimple_assign): Same.
3226         * c-tree.h: Add location argument to finish_decl,
3227         default_function_array_conversion, store_init_value.
3228         * c-decl.c (define_label): Use error_at.
3229         (c_make_fname_decl): Pass location to finish_decl.
3230         (finish_decl): New location argument.
3231         (build_compound_literal): Pass location to store_init_value.
3232         (grokdeclarator): Pass location to finish_decl.
3233         (grokfield): Same.
3234         * c-typeck.c (array_to_pointer_conversion): New location argument.
3235         (function_to_pointer_conversion): Same.
3236         (default_function_array_conversion): Same.
3237         (parser_build_unary_op): Pass location to overflow_warning.
3238         (parser_build_binary_op): Same.  Use warning_at.
3239         (build_unary_op): Pass location to array_to_pointer_conversion.
3240         (build_c_cast): Pass location to digest_init.
3241         (build_modify_expr): New location argument.
3242         (convert_for_assignment): Same.
3243         (store_init_value): Same.
3244         (digest_init): Same.
3245         (output_init_element): Pass location to digest_init and
3246         array_to_pointer_conversion.
3247         (c_finish_return): Pass location to convert_for_assignment.
3248         * gimplify.c (gimplify_conversion): Pass location to
3249         maybe_fold_offset_to_address.
3250         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
3251         to maybe_fold_stmt_addition.
3252         * c-omp.c (c_finish_omp_atomic): Pass new location to
3253         build_modify_expr.
3254         (c_finish_omp_for): Same.
3255         * c-common.c (overflow_warning): New argument.
3256         * c-common.h: New argument to build_modify_expr, overflow_warning.
3257         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
3258         finish_decl.
3259         (c_parser_initializer): Pass location to
3260         default_function_array_conversion.
3261         (c_parser_initelt): Same.
3262         (c_parser_initval): Same.
3263         (c_parser_asm_operands): Same.
3264         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
3265         (c_parser_conditional_expression): Same.
3266         (c_parser_binary_expression): Add location info to stack.  Use it.
3267         (c_parser_unary_expression): Pass location to
3268         default_function_array_conversion, parser_build_unary_op,
3269         build_indirect_ref, c_parser_postfix_expression_after_primary.
3270         (c_parser_postfix_expression_after_primary): New location argument.
3271         Use it.
3272         (c_parser_expression_conv): Pass location to
3273         default_function_array_conversion.
3274         (c_parser_expr_list): Same.
3275         (c_parser_omp_atomic): Same.
3276         (c_parser_omp_for_loop): Same.
3277         * c-tree.h: (struct c_declarator): Add comment to id_loc.
3278         (build_array_declarator): New argument.
3279         * c-decl.c (build_array_declarator): Add location argument.
3280         (grokdeclarator): Set id_loc for cdk_array.
3281         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
3282         build_array_declarator.
3283         * tree.c (build_omp_clause): Add location argument.
3284         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
3285         (OMP_CLAUSE_LOCATION): New macro.
3286         (struct tree_omp_clause): Add location field.
3287         (build_omp_clause): Add argument.
3288         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
3289         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
3290         build_omp_clause.
3291         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
3292         (cp_parser_omp_clause_collapse): Same.
3293         (cp_parser_omp_clause_default): Same.
3294         (cp_parser_omp_clause_if): Same.
3295         (cp_parser_omp_clause_nowait): Same.
3296         (cp_parser_omp_clause_num_threads): Same.
3297         (cp_parser_omp_clause_ordered): Same.
3298         (cp_parser_omp_clause_schedule): Same.
3299         (cp_parser_omp_clause_untied): Same.
3300         (cp_parser_omp_for_loop): Same.
3301         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
3302         * c-tree.h (c_start_case): Add location argument.
3303         (c_process_expr_stmt): Same.
3304         (c_finish_goto_*): Same.
3305         * tree-parloops.c (initialize_reductions): Pass location to
3306         build_omp_clause.
3307         (create_parallel_loop): Same.
3308         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
3309         (gfc_trans_omp_reduction_list): Same.
3310         (gfc_trans_omp_clauses): Same.
3311         (gfc_trans_omp_do): Same.
3312         * c-typeck.c (c_finish_goto_label): Same.
3313         (c_finish_goto_ptr): New location argument.
3314         (c_start_case): Same.
3315         (emit_side_effect_warnings): Same.
3316         (c_process_expr_stmt): Same.
3317         (c_finish_stmt_expr): Same.
3318         (c_finish_omp_clauses): Use error_at instead of error.
3319         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
3320         build_omp_clause.
3321         * c-omp.c (c_split_parallel_clauses): New location argument.
3322         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
3323         to build_omp_clause.
3324         (convert_local_reference_stmt): Same.
3325         (convert_gimple_call): Same.
3326         * c-common.h (c_split_parallel_clauses): New argument.
3327         * c-parser.c (c_parser_statement_after_labels): Pass location to
3328         c_finish_goto_label.
3329         (c_parser_switch_statement): Pass location to c_start_case.
3330         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
3331         and c_process_expr_stmt.
3332         (c_parser_omp_variable_list): Add location argument.
3333         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
3334         (c_parser_omp_clause_default): Same.
3335         (c_parser_omp_clause_if): Same.
3336         (c_parser_omp_clause_num_threads): Same.
3337         (-c_parser_omp_clause_ordered): Same.
3338         (c_parser_omp_clause_reduction): Pass location to
3339         c_parser_omp_variable_list.
3340         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
3341         (c_parser_omp_clause_untied): Same.
3342         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
3343         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
3344
3345         * c-tree.h (check_for_loop_decls, undeclared_variable,
3346         build_component_ref, build_array_ref, build_external_ref,
3347         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
3348         build_conditional_expr, build_compound_expr, c_cast_expr,
3349         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
3350         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
3351         argument.
3352         * c-semantics.c (build_stmt): Same.
3353         (build_case_label): Same.
3354         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
3355         (undeclared_variable): New argument.
3356         (make_label): Same.
3357         (lookup_label): Pass location on down.
3358         (define_label): Same.
3359         (finish_decl): Same.
3360         (build_compound_literal): Same.
3361         (finish_struct): Same.
3362         (finish_function): Do not set location here.
3363         (check_for_loop_decls): New argument.
3364         * tree.c (save_expr): Set location.
3365         (build_empty_stmt): New argument.
3366         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
3367         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
3368         * builtins.c (gimplify_va_arg_expr): Use locations.
3369         (expand_builtin_sync_operation): Same.
3370         * c-typeck.c (build_component_ref): New argument.
3371         (build_array_ref): Same.
3372         (build_external_ref): Same.
3373         (c_expr_sizeof_expr): Same.
3374         (c_expr_sizeof_type): Same.
3375         (parser_build_unary_op): Same.
3376         (build_conditional_expr): Same.
3377         (build_compound_expr): Pass location on down.
3378         (build_compound_expr): New argument.
3379         (build_c_cast): Same.
3380         (c_cast_expr): Same.
3381         (build_asm_expr): Same.
3382         (c_finish_return): Same.
3383         (c_process_expr_stmt): Pass location on down.
3384         (c_finish_stmt_expr): New argument.
3385         (push_clenaup): Same.
3386         (c_finish_omp_parallel): Same.
3387         (c_finish_omp_task): Same.
3388         * gimplify.c (gimplify_call_expr): Pass location on down.
3389         * c-omp.c (c_finish_omp_master): New argument.
3390         (c_finish_omp_critical): Same.
3391         (c_finish_omp_ordered): Same.
3392         (c_finish_omp_barrier): Same.
3393         (-c_finish_omp_taskwait): Same.
3394         (c_finish_omp_atomic): Same.
3395         (c_finish_omp_flush): Same.
3396         * tree-inline.c (copy_tree_body_r): Pass location on down.
3397         (inline_forbidden_p): Remove use of input_location.
3398         * c-gimplify.c (c_build_bind_expr): New argument.
3399         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
3400         (c_sizeof_or_alignof_type): New argument.
3401         (c_alignof_expr): Same.
3402         (build_va_arg): Same.
3403         (c_add_case_label): Same.
3404         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
3405         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
3406         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
3407         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
3408         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
3409         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
3410         New argument.
3411         * stub-objc.c (objc_build_selector_expr): Same.
3412         (objc_build_throw_stmt): Same.
3413         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
3414         (c_parser_initelt): Same.
3415         (c_parser_compound_statement): Same.
3416         (c_parser_compound_statement_nostart): Same.
3417         (c_parser_label): Same.
3418         (c_parser_statement_after_labels): Same.
3419         (c_parser_if_body): Same.
3420         (c_parser_else_body): Same.
3421         (c_parser_if_statement): Same.
3422         (c_parser_switch_statement): Same.
3423         (c_parser_while_statement): Same.
3424         (c_parser_do_statement): Same.
3425         (c_parser_for_statement): Same.
3426         (c_parser_asm_statement): Same.
3427         (c_parser_conditional_expression): Same.
3428         (c_parser_binary_expression): Same.
3429         (c_parser_cast_expression): Same.
3430         (c_parser_unary_expression): Same.
3431         (c_parser_sizeof_expression): Same.
3432         (c_parser_alignof_expression): Same.
3433         (c_parser_postfix_expression): Same.
3434         (c_parser_expression): Same.
3435         (c_parser_objc_receiver): Same.
3436         (c_parser_omp_variable_list): Same.
3437         (c_parser_omp_structured_block): Same.
3438         (c_parser_omp_atomic): New argument.
3439         (c_parser_omp_barrier): Same.
3440         (c_parser_omp_critical): Same.
3441         (c_parser_omp_flush): Pass location on down.
3442         (c_parser_omp_for_loop): New argument.
3443         (c_parser_omp_for): Same.
3444         (c_parser_omp_master): Same.
3445         (c_parser_omp_ordered): Same.
3446         (c_parser_omp_sections_scope): Same.
3447         (c_parser_omp_sections): Same.
3448         (c_parser_omp_parallel): Same.
3449         (c_parser_omp_single): Same.
3450         (c_parser_omp_task): Same.
3451         (c_parser_omp_taskwait): Pass location on down.
3452         (c_parser_omp_construct): Same.
3453         (c_parser_omp_threadprivate): Same.
3454         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
3455         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
3456         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
3457         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
3458         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
3459         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
3460         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
3461         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
3462         config/i386/i386.c, stmt.c:
3463         Add location argument to the following function definitions and/or
3464         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
3465         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
3466         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
3467         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
3468         do_case, c_finish_bc_stmt, build_compound_literal,
3469         build_function_call.
3470         * c-decl.c (build_compound_literal): Add location argument.
3471         Make all diagnostic calls use location.
3472         (start_struct): Same.
3473         (finish_struct): Same.
3474         (start_enum): Same.
3475         (build_enumerator): Same.
3476         (start_function): Same.
3477         (grokdeclarator): Make all diagnostic calls use location.
3478         (store_parm_decls_oldstyle): Same.
3479         * c-typeck.c (build_function_call): Add location argument.
3480         Make all diagnostic calls use location.
3481         (do_case): Same.
3482         (c_finish_bc_stmt): Same.
3483         * tree-nested.c (get_trampoline_type): Add argument.
3484         Pass location to build_decl.
3485         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
3486         * rtl.h (RTL_LOCATION): New.
3487         * c-common.c (c_add_case_label): Add location argument.
3488         Make all diagnostic calls use location.
3489         * c-common.h: Add location argument to make_fname_decl, do_case,
3490         c_add_case_label, build_function_call, resolve_overloaded_builtin.
3491         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
3492         Set it appropriately for every case.  Pass enum_loc to start_enum
3493         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
3494         parser_xref_tag.
3495         (c_parser_struct_or_union_specifier): Save location.  Use it for
3496         start_struct, finish_struct, and parser_xref_tag.
3497
3498 2009-06-12  Ian Lance Taylor  <iant@google.com>
3499
3500         * fold-const.c (fold_unary): Rename local variable and to and_expr.
3501
3502         * c-opts.c (c_common_handle_option): For -Wc++-compat set
3503         cpp_opts->warn_cxx_operator_names.
3504
3505 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3506
3507         PR tree-opt/38865
3508         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
3509         is returns NULL and OP is a VCE, look through the VCE.
3510
3511 2009-06-12  Ian Lance Taylor  <iant@google.com>
3512
3513         PR bootstrap/40430
3514         * collect2.c (main): Use CONST_CAST2 in code inside #if
3515         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
3516
3517 2009-06-12  Joey Ye  <joey.ye@intel.com>
3518
3519         PR middle-end/39146
3520         * cfgexpand.c (get_decl_align_unit): Update
3521         max_used_stack_slot_alignment with align instead of
3522         stack_alignment_needed.
3523
3524         * function.c (assign_stack_local_1): Update
3525         max_used_stack_slot_alignment with alignment_in_bits instead
3526         of stack_alignment_needed.
3527         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
3528         here.
3529
3530 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
3531
3532         * dwarf2out.c (last_var_location_insn): New variable.
3533         (dwarf2out_end_epilogue): Clear last_var_location_insn.
3534         (dwarf2out_var_location): Don't record anything after last real
3535         insn.  Only change labels if there were any real instructions
3536         in between last note and this one, or if changed sections.
3537
3538 2009-06-11  Richard Henderson  <rth@redhat.com>
3539
3540         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
3541         note when storing the frame pointer in a register.
3542         (FRP): Don't redefine to nothing for epilogue.
3543         (alpha_expand_epilogue): Mark register and sp restores.
3544         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
3545
3546         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
3547         when gen_lowpart is needed.
3548
3549 2009-06-11  Richard Henderson  <rth@redhat.com>
3550
3551         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
3552
3553         * dwarf2out.c (need_data_align_sf_opcode): New.
3554         (div_data_align): Move earlier.
3555         (def_cfa_1, reg_save): Use it.
3556
3557 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
3558
3559         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
3560         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
3561         (ix86_handle_option): Handle OPT_mcrc32.
3562         (ix86_target_string): Add -mcrc32.
3563         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
3564
3565         * config/i386/i386.h (TARGET_CRC32): New.
3566
3567         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
3568         (sse4_2_crc32di): Likewise.
3569
3570         * config/i386/i386.opt (mcrc32): New.
3571
3572         * doc/invoke.texi: Document -mcrc32.
3573
3574 2009-06-11  Richard Henderson  <rth@redhat.com>
3575
3576         * common.opt (gdwarf-): Accept a version number.
3577         * doc/invoke.texi (gdwarf-): Update docs.
3578         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
3579         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
3580         version level, and record it.
3581
3582         * dwarf2.h (DW_CIE_VERSION): Remove.
3583         * dwarf2out.c (DWARF_VERSION): Remove.
3584         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
3585         (output_call_frame_info): Use CIE version 3 for dwarf3,
3586         or if the return register column is out of range for version 1.
3587         (dwarf_stack_op_name): Add all dwarf3 values.
3588         (DEBUG_PUBTYPES_SECTION): New.
3589         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
3590         encoding change for dwarf3.
3591         (output_die) [dw_val_class_die_ref]: Likewise.
3592         (output_compilation_unit_header): Emit correct version for dwarf3.
3593         (output_line_info): Likewise.
3594         (output_pubnames): Update for DWARF_VERSION removal.
3595         (output_aranges): Likewise.
3596         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
3597         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
3598         (dwarf2out_finish): Likewise.
3599
3600 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
3601
3602         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
3603         in r148403.
3604
3605 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
3606
3607         PR c/39252
3608         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
3609         * builtins.c (expand_builtin_unreachable): New function.
3610         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
3611         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
3612         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
3613         successors.
3614         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
3615         searching for missing barriers.
3616
3617 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3618
3619         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
3620         when -fprofile-generate* was passed.
3621         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
3622
3623 2009-06-11  Anthony Green  <green@moxielogic.com>
3624
3625         * config/moxie/moxie.md: Define length attribute for all instructions.
3626         (rCC): Define.
3627         (*b<cond:code>): Support limited branch ranges for new PC-relative
3628         branch instructions.
3629         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
3630
3631 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
3632
3633         * config/i386/i386.c (min_insn_size): Use get_attr_length
3634         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
3635         For __asm return 0.
3636
3637         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
3638         instead of emit_insn_before.
3639
3640 2009-06-10  Ian Lance Taylor  <iant@google.com>
3641
3642         PR bootstrap/40408
3643         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
3644         GIMPLE_SWITCH.
3645
3646 2009-06-10  Revital Eres  <eres@il.ibm.com>
3647
3648         * passes.c (init_optimization_passes): Reschedule
3649         predictive-commoning pass before complete unroll pass.
3650
3651 2009-06-10  Martin Jambor  <mjambor@suse.cz>
3652
3653         * cgraph.c (cgraph_node_can_be_local_p): New function.
3654         (cgraph_make_node_local): New function.
3655         * cgraph.h (cgraph_node_can_be_local_p): Declare.
3656         (cgraph_make_node_local): Declare.
3657
3658 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
3659
3660         * tree.h (tree_base): Add packed_flag and user_align fields.
3661         Decrease size of spare field.
3662         (TYPE_USER_ALIGN): Use user_align from tree_base.
3663         (DECL_USER_ALIGN): Likewise.
3664         (TYPE_PACKED): Use packed_flag from tree_base.
3665         (DECL_PACKED): Likewise.
3666         (tree_type): Delete packed_flag and user_align fields.  Widen
3667         precision field.  Widen mode field and shuffle fields to align
3668         mode on an 8-bit boundary.
3669         (tree_decl_common): Delete decl_flag_1 and user_align fields.
3670         Renumber decl_flag_* fields.  Fix comments.  Widen
3671         decl_common_unused field.
3672         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
3673         (DECL_EXTERNAL): Likewise.
3674         (DECL_BIT_FIELD): Likewise.
3675         (DECL_NONADDRESSABLE_P): Likewise.
3676         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
3677         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
3678
3679 2009-06-10  Ian Lance Taylor  <iant@google.com>
3680
3681         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
3682         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
3683         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
3684         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
3685         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
3686         DEF_VEC_ALLOC_FUNC_P.
3687         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
3688         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
3689         DEF_VEC_ALLOC_FUNC_O.
3690         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
3691         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
3692         DEF_VEC_ALLOC_FUNC_I.
3693         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
3694         (vec_stack_p_reserve_exact_1): Declare.
3695         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
3696         (vec_stack_free): Declare.
3697         (VEC_stack_alloc): Define.
3698         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
3699         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
3700         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
3701         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
3702         for void_p.
3703         (stack_vecs): New static variable.
3704         (vec_stack_p_reserve_exact_1): New function.
3705         (vec_stack_o_reserve_1): New static function.
3706         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
3707         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
3708         (vec_stack_free): New function.
3709         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
3710         (VEC_df_ref_stack_alloc): Define.
3711         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
3712         DEF_VEC_ALLOC_P_STACK.
3713         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
3714         (struct df_collection_rec): Change _vec fields to VEC.  Remove
3715         _use fields.
3716         (df_free_collection_rec): Adjust for new fields.
3717         (df_insn_rescan): Use new df_collection_rec fields.
3718         (df_notes_rescan, df_canonize_collection_rec): Likewise.
3719         (df_ref_create_structure, df_ref_record): Likewise.
3720         (df_get_conditional_uses, df_get_call_refs): Likewise.
3721         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
3722         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
3723         (df_record_exit_block_uses, df_bb_verify): Likewise.
3724         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
3725         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
3726         Remove count parameter.  Change return type to void.  Change all
3727         callers.
3728         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
3729         Remove count parameter.  Change return type to void.  Change all
3730         callers.
3731         (df_install_refs): Change old_vec parameter to VEC.  Remove count
3732         parameter.  Change all callers.
3733         (df_install_mws): Change old_vec parameter to VEC.  Remove count
3734         parameter.  Change all callers.
3735         (df_refs_verify): Change new_rec parameter to VEC.  Change call
3736         callers.
3737         (df_mws_verify): Likewise.
3738
3739 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
3740
3741         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
3742
3743 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
3744
3745         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
3746
3747 2009-06-10  Anthony Green  <green@moxielogic.com>
3748
3749         * config/moxie/crti.asm: New file.
3750         * config/moxie/crtn.asm: New file.
3751         * config/moxie/moxie.c: New file.
3752         * config/moxie/moxie.h: New file.
3753         * config/moxie/sfp-machine.h: New file.
3754         * config/moxie/moxie-protos.h: New file.
3755         * config/moxie/t-moxie: Created.
3756         * config/moxie/t-moxie-softfp: Created.
3757         * config/moxie/moxie.md: Created.
3758         * config/moxie/constraints.md: Created.
3759         * config.gcc: Add moxie support.
3760         * doc/md.texi (Machine Constraints): Add moxie constraints.
3761         * doc/contrib.texi (Contributors): Mention moxie port.
3762         * doc/install.texi (Specific): Mention the moxie port.
3763
3764 2009-06-09  Ian Lance Taylor  <iant@google.com>
3765
3766         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
3767         compiling with C++.
3768         * optabs.c (optab_table): Only use designated initializers if
3769         HAVE_DESIGNATED_INITIALIZERS is defined.
3770         (convert_optab_table): Likewise.
3771         (init_optabs): Always call init_insn_codes if
3772         HAVE_DESIGNATED_INITIALIZERS is not defined.
3773
3774 2009-06-09  Ian Lance Taylor  <iant@google.com>
3775
3776         * targhooks.c (default_builtin_vectorized_function): Change fn
3777         parameter to unsigned int.
3778         (default_builtin_vectorized_conversion): Change code parameter to
3779         unsigned int.
3780         (default_builtin_reciprocal): Change fn parameter to unsigned int.
3781         * targhooks.h: Update declarations.
3782         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
3783         parameter to unsigned int.
3784
3785         * c-typeck.c (comptypes_check_enum_int): New static function.
3786         (comptypes_internal): Add enum_and_int_p parameter.  Change all
3787         callers.
3788         (comp_target_types): Add location parameter.  Change all callers.
3789         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
3790         Change all callers.
3791         (function_types_compatible_p, type_lists_compatible_p): Likewise.
3792         (build_conditional_expr): Add colon_loc parameter.  Change all
3793         callers.
3794         (convert_for_assignment): Add location parameter.  Change all callers.
3795         * c-parser.c (c_parser_conditional_expression): Pass location of
3796         colon to build_conditional_expr.
3797         * c-tree.h (build_conditional_expr): Update declaration.
3798
3799 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
3800
3801         * graphite.c: Revert previous patch.
3802
3803 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
3804
3805         PR bootstrap/40103
3806         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
3807
3808 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
3809
3810         * tree-ssa-loop-prefetch.c
3811         (loop_prefetch_arrays): Fixed a portability problem in printf format
3812         string.
3813
3814 2009-06-09  Martin Jambor  <mjambor@suse.cz>
3815
3816         PR tree-optimization/40351
3817         * tree-sra.c (propagate_subacesses_accross_link): Check that a
3818         refrence to a potential artifical subaccess can be constructed.
3819
3820 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3821
3822         * config/sh/sh-protos.h (sh_optimization_options): Declare.
3823         (sh_override_options): Likewise.
3824         * config/sh/sh.c: Include params.h.
3825         (sh_optimization_options): New.
3826         (sh_override_options): Likewise.
3827         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
3828         (OVERRIDE_OPTIONS): Use sh_override_options.
3829
3830 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
3831
3832         * dwarf2out.c (emit_cfa_remember): New variable.
3833         (add_fde_cfi): If emit_cfa_remember, recurse to add
3834         DW_CFA_remember_state first.
3835         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
3836         instead just set emit_cfa_remember.
3837
3838 2009-06-08  Jan Hubicka  <jh@suse.cz>
3839
3840         PR debug/40126
3841         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
3842
3843 2009-06-08  Jan Hubicka  <jh@suse.cz>
3844
3845         PR middle-end/39834
3846         * cgraphunit.c (save_inline_function_body): Do not copy transform
3847         hooks for saved inline bodies.
3848         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
3849         for given function.
3850
3851 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
3852
3853         * jump.c (returnjump_p): Handle delayed branches.  Add missing
3854         function comment.
3855
3856 2009-06-08  Jan Hubicka  <jh@suse.cz>
3857
3858         PR middle-end/40102
3859         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
3860         original node might've been modified.
3861         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
3862
3863 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
3864
3865         * tree-object-size.c (addr_object_size): Add OSI argument.
3866         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
3867         (compute_builtin_object_size, expr_object_size): Adjust callers.
3868         (plus_stmt_object_size): Call addr_object_size instead of
3869         compute_builtin_object_size.
3870
3871 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
3872             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3873         
3874         * tree-ssa-loop-prefetch.c 
3875         (gather_memory_references): Introduced a counter for the number of 
3876         memory references.
3877         (anything_to_prefetch_p): Introduced a counter for the number of 
3878         prefetches.
3879         (is_loop_prefetching_profitable): New function with a cost model 
3880         for prefetching.
3881         (loop_prefetch_arrays): Use the new cost model to determine if 
3882         prefetching is profitable.
3883         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
3884         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
3885         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
3886         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
3887         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
3888         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
3889         
3890 2009-06-08  Michael Matz  <matz@suse.de>
3891
3892         PR debug/40012
3893         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
3894         partitions use the same.
3895         (expand_one_var): Deal with DECL_RTL sometimes begin set also
3896         for basevars of SSA_NAMEs.
3897         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
3898         to not expand them twice.
3899         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
3900         multiple places.
3901
3902 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
3903
3904         * common.opt (fcompare-debug=, fcompare-debug-second): New.
3905         (fdump-final-insns=, gtoggle): New.
3906         * doc/invoke.texi: Document them.
3907         * final.c (rest_of_clean_state): Dump final insn stream.
3908         * gcc.c (invoke_as): Hook in -fcompare-debug.
3909         (static_spec_functions): Add compare-debug-dump-opt,
3910         compare-debug-self-opt and compare-debug-auxbase-opt.
3911         (compare_debug, compare_debug_second, compare_debug_opt): New.
3912         (switches_debug_check, n_switches_debug_check): New.
3913         (debug_auxbase_opt, debug_check_temp_file): New.
3914         (process_command): Handle -fno-compare-debug, -fcompare-debug and
3915         -fcompare-debug=*.
3916         (do_self_spec): Handle arguments after switches.
3917         (do_spec_1): Add .gk extension to temp file basenames for compare.
3918         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
3919         (cc1_options): Use it instead of normal auxbase computation for
3920         the second compare-debug compilation.
3921         (compare_files): New.
3922         (main): Set up and implement compare debug mode.
3923         (compare_debug_dump_opt_spec_function): New.
3924         (compare_debug_self_opt_spec_function): New.
3925         (compare_debug_auxbase_opt_spec_function): New.
3926         * toplev.c (process_options): Handle flag_gtoggle,
3927         flag_dump_final_insns.
3928         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
3929         during -fcompare-debug-second compilation.
3930
3931 2009-06-07  Ian Lance Taylor  <iant@google.com>
3932
3933         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
3934         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
3935
3936         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
3937         with no default node.  Change warning with %H to warning_at.
3938         Don't clear warn_switch around case checking.
3939         * doc/invoke.texi (Warning Options): Clarify distinction between
3940         -Wswitch and -Wswitch-enum.
3941
3942 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3943
3944         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
3945
3946 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3947
3948         * gbl-ctors.h: Add header guard.
3949
3950 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3951
3952         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
3953         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
3954         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
3955         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
3956         prototypes for removed functions.
3957         (expressions_equal_p): Move to ...
3958         * tree-ssa-sccvn.h: ... here and ...
3959         * matrix-reorg.c: ... adjust includes.
3960
3961 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3962
3963         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
3964
3965 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3966
3967         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
3968         (finish_function): Remove erroneous whitespace.
3969
3970 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3971
3972         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
3973         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
3974
3975 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3976
3977         * errors.c (internal_error): Commentary typo fix.
3978         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
3979         * tree-ssa-pre.c: Ditto.
3980
3981 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3982
3983         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
3984         them is supposed to hold actual statements.
3985
3986 2009-06-06  Ian Lance Taylor  <iant@google.com>
3987
3988         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
3989         empty statements can now have attributes.
3990
3991 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
3992
3993         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
3994         * config/mips/mips.md: Ditto.
3995
3996 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
3997
3998         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
3999         _RELOCATABLE.
4000         (__eabi_uconvert): Likewise.
4001
4002 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
4003
4004         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
4005         CFI_* definitions with IN_GCC.
4006
4007 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
4008
4009         * xcoffout.h (xcoffout_source_line): Update prototype.
4010
4011 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4012
4013         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
4014         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
4015
4016 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
4017
4018         PR middle-end/40340
4019         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
4020         inlined_function_outer_scope_p blocks for artificial inlines
4021         even at -g0/-g1.
4022         * tree.c (tree_nonartificial_location): Rewrite using
4023         block_nonartificial_location.
4024
4025 2009-06-05  Revital Eres  <eres@il.ibm.com>
4026             Leehod Baruch  <leehod@il.ibm.com>
4027
4028         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
4029         (expand_expr_real_1): Remove comment.
4030         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
4031         Vectorize misaligned access when the target supports it.
4032         (vect_supportable_dr_alignment): Check for unaligned access support.
4033         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
4034         and remove asset.
4035
4036 2009-06-05  Julian Brown  <julian@codesourcery.com>
4037
4038         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
4039         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
4040
4041 2009-06-05  Richard Guenther  <rguenther@suse.de>
4042
4043         PR bootstrap/40350
4044         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
4045         as possibly unused.
4046
4047 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
4048
4049         * config/s390/s390.c (global_not_special_regno_p): New static inline.
4050         (save_gprs): Don't tell unwinder when a global register is saved.
4051         (s390_emit_epilogue): Emit needed epilogue unwind info.
4052
4053 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
4054
4055         * dwarf2out.c (deferred_asm_name): New.
4056         (add_name_and_src_coords_attributes): Defer creation of
4057         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
4058         computed yet.
4059         (move_linkage_attr): New.
4060         (dwarf2out_finish): Revisit deferrals and emit attributes at the
4061         right place.
4062
4063 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
4064
4065         * tree-nested.c (finalize_nesting_tree_1): Declare the
4066         frame_decl in the binding tree.
4067
4068 2009-06-04  Cary Coutant  <ccoutant@google.com>
4069
4070         * basic-block.h (struct basic_block_def): Add discriminator field.
4071         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
4072         callers.
4073         * debug.c (do_nothing_debug_hooks): Add additional entry.
4074         (debug_nothing_int_charstar_int): New function.
4075         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
4076         (debug_nothing_int_charstar_int): New declaration.
4077         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
4078         discriminator value in .loc directive.
4079         * final.c (last_discriminator): New variable.
4080         (discriminator): New variable.
4081         (final_start_function): Initialize above variables, pass current
4082         discriminator to debug hook.
4083         (notice_source_line): Check for discriminator change.
4084         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
4085         * sdbout.c (sdbout_source_line): New parameter.
4086         * tree-cfg.c (struct locus_discrim_map): New structure type.
4087         (discriminator_per_locus): New hash table.
4088         (build_gimple_cfg): Allocate and free discriminator hash table.
4089         (make_edges): Call assign_discriminator.
4090         (locus_map_hash): New function.
4091         (locus_map_eq): New function.
4092         (next_discriminator_for_locus): New function.
4093         (same_line_p): New function.
4094         (assign_discriminator): New function.
4095         (make_cond_expr_edges): Call assign_discriminator.
4096         (make_gimple_switch_edges): Likewise.
4097         (first_non_label_stmt): New function.
4098         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
4099         all callers.
4100         * xcoffout.c (xcoffout_source_line): Add new parameter.
4101
4102         * configure.ac (gcc_cv_as_discriminator): New configury check for
4103         gas support for discriminator.
4104         * configure: Regenerate.
4105         * config.in: Regenerate.
4106
4107 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4108
4109         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
4110         val after checking for integers.
4111
4112 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
4113
4114         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
4115         X64_REGPARM_MAX.
4116         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
4117         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
4118         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
4119         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
4120         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
4121         X64_SSE_REGPARM_MAX.
4122         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
4123         X64_SSE_REGPARM_MAX.
4124
4125 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
4126
4127         * gcc.c (report_times_to_file): New.
4128         (execute): Implement it.
4129         (process_command): Support -time=.
4130         * doc/invoke.texi: Document it.
4131
4132 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
4133
4134         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
4135         that have value exprs.
4136
4137 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
4138
4139         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
4140         declarations for constants until...
4141         (dw2_output_indirect_constant_1): ... this point.
4142
4143 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
4144
4145         PR target/10242
4146         * arm.md (arm_addsi3): Don't try to split an add with an
4147         eliminable register until after reload has completed.
4148
4149 2009-06-03  Ian Lance Taylor  <iant@google.com>
4150
4151         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
4152         * genattrtab.c (write_length_unit_log): Likewise.
4153         * genchecksum.c (dosum): Likewise.
4154         * gengtype.c (write_rtx_next): Likewise.
4155         (finish_root_table, write_roots): Likewise.
4156         * gimple.c (gimple_ops_offset_): Likewise.
4157         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
4158         * config/arc/arc.c (arc_attribute_table): Likewise.
4159         * config/arm/arm.c (arm_attribute_table): Likewise.
4160         * config/avr/avr.c (avr_attribute_table): Likewise.
4161         * config/crx/crx.c (crx_attribute_table): Likewise.
4162         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
4163         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
4164         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
4165         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
4166         * config/sh/sh.c (sh_attribute_table): Likewise.
4167         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
4168         * config/spu/spu.c (spu_attribute_table): Likewise.
4169         * config/v850/v850.c (v850_attribute_table): Likewise.
4170
4171         * config/alpha/alpha.c (vms_attribute_table): Make static.
4172         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
4173         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
4174         * config/mips/mips.c (mips_attribute_table): Likewise.
4175
4176         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
4177         $(SYSTEM_H).
4178         (cc1-checksum.o): Likewise.
4179
4180 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
4181
4182         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
4183
4184 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
4185
4186         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
4187         insn if it is changing sp.  Use gen_add3_insn instead of
4188         conditionally gen_addsi3 and gen_adddi3.
4189         (offset_below_red_zone_p): New static inline function.
4190         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
4191         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
4192         * config/rs6000/ppc-asm.h: Include auto-host.h.
4193         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
4194         CFI_RESTORE): Define.
4195         * config/rs6000/crtresxgpr.asm: Add unwind info.
4196         * config/rs6000/crtresxfpr.asm: Likewise.
4197         * config/rs6000/crtresgpr.asm: Likewise.
4198         * config/rs6000/crtresfpr.asm: Likewise.
4199         * config/rs6000/crtsavgpr.asm: Likewise.
4200         * config/rs6000/crtsavfpr.asm: Likewise.
4201
4202         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
4203         argument of DWARF2_FRAME_REG_OUT macros.
4204
4205 2009-06-03  Julian Brown  <julian@codesourcery.com>
4206
4207         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
4208         words or less (including TImode) in core registers.
4209
4210 2009-06-03  Richard Guenther  <rguenther@suse.de>
4211
4212         PR middle-end/40328
4213         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
4214
4215 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
4216
4217         * statistics.c (statistics_counter_event): Do not record event 
4218         in pass dump if its number == -1.
4219         (curr_statistics_hash): Add assert that we never get passes 
4220         with static number == -1.
4221
4222 2009-06-03  Richard Guenther  <rguenther@suse.de>
4223             Andrey Belevantsev  <abel@ispras.ru>
4224
4225         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
4226         non-BLKmode arrays addressable.
4227
4228 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
4229
4230         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
4231         * config/m68k/m68k.h: ... here.
4232         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
4233         m68k and fido.
4234
4235 2009-06-03  Martin Jambor  <mjambor@suse.cz>
4236
4237         PR tree-optimization/40323
4238         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
4239         assignment.
4240
4241 2009-06-03  Richard Guenther  <rguenther@suse.de>
4242
4243         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
4244         consistently.
4245
4246 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
4247
4248         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
4249         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
4250         JUMP_TABLE_DATA_P where applicable.
4251         * config/sh/sh.c: Ditto.
4252         * config/sh/sh.h: Ditto.
4253         * config/sh/sh.md: Ditto.
4254         * config/sh/symbian.c: Ditto.
4255
4256 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
4257
4258         * config/i386/driver-i386.c (describe_cache): Optimize
4259         concatenation of strings.  Use snprintf instead of sprintf.
4260         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
4261         target when not compiling with GCC.
4262
4263 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
4264
4265         * config/sh/sh.c: Revert last change.
4266         (sh_expand_epilogue): Emit a blockage insn before the frame
4267         pointer adjustment unconditionally.
4268
4269 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4270
4271         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
4272         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
4273         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
4274         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
4275         to COLLECT_GCC_OPTIONS.
4276
4277 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4278
4279         * collect2.c (target_system_root): New variable.
4280         (main): Handle --sysroot=.
4281         (ignore_library): Strip the sysroot from the library path.
4282
4283 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4284
4285         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
4286         (collect2.o): Depend on collect2-aix.h.
4287         (collect2-aix.o): New rule.
4288         * collect2-aix.h: New file.
4289         * collect2-aix.c: Likewise.
4290         * collect2.c: Include collect2-aix.h.  Don't undefine
4291         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
4292         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
4293         Use TARGET_AIX_VERSION instead of _AIX51.
4294         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
4295         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
4296         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
4297         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
4298         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
4299
4300 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4301
4302         * collect2.c (ignore_library): Avoid premature post-increment
4303         and null deference.
4304
4305 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4306
4307         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
4308         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
4309         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
4310         CROSS_DIRECTORY_STRUCTURE too.
4311         (LINK_LIBG_SPEC): Likewise.
4312         (LIB_SPEC): Add %R to sysroot paths.
4313         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
4314         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
4315         * config/rs6000/aix51.h: As for aix43.h.
4316         * config/rs6000/aix52.h: Likewise.
4317         * config/rs6000/aix53.h: Likewise.
4318         * config/rs6000/aix61.h: Likewise.
4319         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
4320         to the beginning of sysroot paths.
4321
4322 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4323
4324         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
4325         INSN_LISTs that are out of the REG_NOTE range.
4326
4327 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4328
4329         * loop-unroll.c (struct iv_to_split): Add pointer to next.
4330         (struct var_to_expand): Likewise.
4331         (struct opt_info): Add head and tail for linked lists of the above.
4332         (analyze_insn_to_expand_var): Initialize next.
4333         (analyze_iv_to_split_insn): Likewise.
4334         (analyze_insns_in_loop): Create linked lists.
4335         (allocate_basic_variable): Simplify for use without hash table.
4336         (insert_var_expansion_initialization): Likewise, make it type-safer.
4337         (combine_var_copies_in_loop_exit): Likewise.
4338         (apply_opt_in_copies): Walk lists rather than hash tables.
4339         (release_var_copies): Simplified and inlined by hand into...
4340         (free_opt_info): ... this function.
4341
4342 2009-06-02  Richard Guenther  <rguenther@suse.de>
4343
4344         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
4345         for field decls.
4346
4347 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4348
4349         * cfgexpand.c (gimple_expand_cfg): Discard the source location
4350         only for builtins that are not overridden.
4351
4352 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4353
4354         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
4355         label string.
4356
4357 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4358
4359         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
4360
4361 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4362
4363         * combine.c (move_deaths): Compare LUIDs within the same BB only.
4364
4365 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4366
4367         * common.opt (fdump-unnumbered-links): New.
4368         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
4369         * print-rtl.c (flag_dump_unnumbered_links): New.
4370         (print_rtx): Test it.
4371
4372 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
4373
4374         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
4375         push/pop multiple to 8-byte alignment.
4376
4377 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
4378
4379         * config/i386/i386.c (queued_cfa_restores): New static variable.
4380         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
4381         functions.
4382         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
4383         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
4384         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
4385         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
4386         note unconditionally.
4387         (ix86_emit_restore_regs_using_mov): Likewise.
4388         (ix86_emit_restore_sse_regs_using_mov): Likewise.
4389         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
4390         it through to ix86_emit_restore_reg_using_pop.
4391         (ix86_emit_leave): Add RED_OFFSET argument.  Call
4392         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
4393         instead of adding REG_CFA_OFFSET note unconditionally.
4394         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
4395         the above functions.  Call ix86_add_queued_cfa_restore_notes when
4396         needed.
4397
4398         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
4399         force output of the label even for dwarf2out_do_cfi_asm.
4400         (add_fde_cfi): If -g2 and above and cfi might change CFA,
4401         force creation of CFI label and chain DW_CFA_set_loc jumping to it
4402         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
4403         caller.
4404         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
4405         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
4406         dwarf2out_cfi_label callers.
4407         * tree.h (dwarf2out_cfi_label): Adjust prototype.
4408         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
4409         Adjust dwarf2out_cfi_label callers.
4410         * config/vax/vax.c (vax_output_function_prologue): Likewise.
4411
4412         * config/i386/i386.h (struct machine_cfa_state,
4413         struct machine_function): Guard with ifndef USED_FOR_TARGET
4414         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
4415
4416         PR other/40024
4417         * emutls.c (__emutls_get_address): Change arr->size to mean number
4418         of allocated arr->data entries instead of # of slots + 1.
4419
4420         PR middle-end/40316
4421         * recog.c (peep2_reinit_state): New function.
4422         (peephole2_init_state): Use it at the end of a basic block and also
4423         when seeing a RTX_FRAME_RELATED_P insn.
4424
4425 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
4426
4427         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
4428         fixuns_truncrfdi2): New.
4429         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
4430         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
4431         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
4432         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
4433         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
4434         *recip_approx): Remove.
4435         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
4436         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
4437         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
4438         move to div.md.
4439         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
4440         setf_exp_rf): New.
4441
4442 2009-06-01  Ian Lance Taylor  <iant@google.com>
4443
4444         * attribs.c (register_attribute): Use CONST_CAST.
4445         * collect2.c (main): Use CONST_CAST2.
4446         (scan_prog_file): Likewise.
4447         * gcc.c (process_command, main): Likewise.
4448         * toplev.c (toplev_main): Likewise.
4449
4450         * c-typeck.c (handle_warn_cast_qual): New static function,
4451         partially broken out of build_c_cast.
4452         (build_c_cast): Call handle_warn_cast_qual.
4453         * doc/invoke.texi (Warning Options): Document new effect of
4454         -Wcast-qual.
4455
4456 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
4457
4458         * diagnostic.c (diagnostic_build_prefix): Always print columns.
4459         (diagnostic_report_current_module): Print columns.
4460         * common.opt (flag_show_column): Enable by default.
4461
4462 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
4463
4464         * alias.c (find_base_term): Check for NULL term before returning.
4465
4466 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
4467
4468         Revert due to PR40320:
4469         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
4470         * calls.c (emit_library_call_value_1): Don't force_operand for move
4471         and push insns.
4472
4473 2009-06-01  Olivier Hainque  <hainque@adacore.com>
4474             Eric Botcazou  <ebotcazou@adacore.com>
4475
4476         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
4477         to be processed as a bitfield for constructor output purposes.
4478         * output.h (initializer_constant_valid_for_bitfield_p): Declare
4479         new function.
4480         * varasm.c (oc_local_state): New type, output_constructor
4481         local state to support communication with helpers.
4482         (oc_outer_state): New type, output_constructor outer state of
4483         relevance in recursive calls.
4484         (output_constructor_array_range): New output_constructor helper,
4485         extracted code for an array range element.
4486         (output_constructor_regular_field): New output_constructor helper,
4487         extracted code for an element that is not a bitfield.
4488         (output_constructor_bitfield): New output_constructor helper,
4489         extracted code for a bitfield element.  Accept an OUTER state
4490         argument for recursive processing.  Recurse on record or array
4491         CONSTRUCTOR values, possibly past noop conversions.
4492         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
4493         VALUE is a valid constant-valued expression for use in a static
4494         bit-field initializer.
4495         (output_constructor): Rework to use helpers.  Accept and honor an
4496         OUTER state argument for recursive calls.  Return total size.  Be
4497         prepared for nested constructors initializing bitfields.
4498         (output_constant): Feed OUTER in calls to output_constructor.
4499
4500 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
4501
4502         * calls.c (emit_library_call_value_1): Don't force_operand for move
4503         and push insns.
4504
4505 2009-06-01  Nick Clifton  <nickc@redhat.com>
4506
4507         * doc/invoke.texi (IA-64 Options): Fix typo.
4508
4509 2009-06-01  Ira Rosen  <irar@il.ibm.com>
4510
4511         PR tree-optimization/39129
4512         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
4513         printed message.
4514         (vect_do_peeling_for_loop_bound): Use
4515         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
4516         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
4517         (vect_loop_versioning): Likewise.
4518         (vect_create_cond_for_alias_checks): Fix indentation.
4519         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
4520         macros.
4521         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
4522         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
4523         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
4524         "control flow in loop".
4525         (vect_estimate_min_profitable_iters): Use
4526         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
4527         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
4528         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
4529         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
4530         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
4531         statement belongs to a group of strided accesses with the exact code
4532         check.
4533         (vectorizable_load): Likewise.
4534         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
4535         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
4536
4537 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
4538
4539         * config/freebsd-stdint.h: New file.
4540         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
4541         Add freebsd-stdint.h to tm_file.
4542
4543 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
4544
4545         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
4546         (thumb2_extendhidi2): Likewise.
4547
4548 2009-05-31  Ian Lance Taylor  <iant@google.com>
4549
4550         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
4551
4552 2009-05-31  Ian Lance Taylor  <iant@google.com>
4553
4554         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
4555         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
4556         (ipa-reference.o): Depend upon gt-ipa-reference.h.
4557
4558 2009-05-31  Jason Merrill  <jason@redhat.com>
4559
4560         * tree-pretty-print.c (print_call_name): Take the callee, not the
4561         call itself.  Make non-static.  Use dump_function_name for functions.
4562         (dump_generic_node): Adjust.
4563         * diagnostic.h: Declare print_call_name.
4564         * gimple-pretty-print.c (dump_gimple_call): Use it.
4565
4566 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
4567
4568         * config/sh/sh.md (ashldi3_std): New define_expand.
4569         (ashldi3): Use it.
4570
4571 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
4572
4573         PR target/40313
4574         * config/sh/sh.c: Include debug.h.
4575         (sh_expand_epilogue): Emit a blockage insn before the frame
4576         pointer adjustment also when dwarf2out_do_frame returns true.
4577
4578 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
4579
4580         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
4581         (thumb2_extendqidi2): New pattern.
4582
4583 2009-05-31  Ira Rosen  <irar@il.ibm.com>
4584
4585         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
4586         mark phis for renaming.
4587         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
4588         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
4589         Call mark_sym_for_renaming.
4590         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
4591         * tree-vect-loop.c (vect_transform_loop): Remove
4592         vect_memsyms_to_rename initialization and a call to
4593         mark_set_for_renaming.
4594
4595 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
4596
4597         PR middle-end/40304
4598         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
4599         frame related even if !set_cfa && style < 0.
4600
4601 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
4602
4603         * config/i386/mingw-tls.c: New file.
4604         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
4605         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
4606         defining _WIN32 but not __CYGWIN__.
4607
4608 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4609
4610         * configure.ac: Add MPC support.
4611         
4612         * config.in, configure: Regenerate.     
4613
4614 2009-05-29  Richard Henderson  <rth@redhat.com>
4615
4616         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
4617         NOTE_INSN_BASIC_BLOCK.
4618         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
4619         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
4620         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
4621         to be deleted.
4622         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
4623         add in_use field.
4624         (add_cfi): Disable check redefining cfa away from drap.
4625         (lookup_cfa_1): Add remember argument; handle remember/restore.
4626         (lookup_cfa): Pass remember argument.
4627         (cfa_remember): New.
4628         (compute_barrier_args_size_1): Remove sibcall check.
4629         (dwarf2out_frame_debug_def_cfa): New.
4630         (dwarf2out_frame_debug_adjust_cfa): New.
4631         (dwarf2out_frame_debug_cfa_offset): New.
4632         (dwarf2out_frame_debug_cfa_register): New.
4633         (dwarf2out_frame_debug_cfa_restore): New.
4634         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
4635         (dwarf2out_begin_epilogue): New.
4636         (dwarf2out_frame_debug_restore_state): New.
4637         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
4638         DW_CFA_restore_state.
4639         (output_cfi_directive): Likewise.
4640         (convert_cfa_to_fb_loc_list): Likewise.
4641         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
4642         * dwarf2out.h: Update.
4643         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
4644         (copy_insn_1): Early out for null.
4645         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
4646         and dwarf2out_frame_debug_restore_state.
4647         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
4648         (prologue_insn_hash, epilogue_insn_hash): New.
4649         (free_after_compilation): Adjust freeing accordingly.
4650         (record_insns): Create hash table if needed; push insns into
4651         hash instead of array.
4652         (maybe_copy_epilogue_insn): New.
4653         (contains): Search hash table instead of array.
4654         (sibcall_epilogue_contains): Remove.
4655         (thread_prologue_and_epilogue_insns): Split eh_return insns
4656         and mark them as epilogues.
4657         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
4658         scanning in terms of basic blocks.
4659         * insn-notes.def (CFA_RESTORE_STATE): New.
4660         * jump.c (returnjump_p_1): Accept EH_RETURN.
4661         (eh_returnjump_p_1, eh_returnjump_p): New.
4662         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
4663         CFA_REGISTER, CFA_RESTORE): New.
4664         * rtl.def (EH_RETURN): New.
4665         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
4666
4667         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
4668         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
4669
4670         * config/i386/i386.c (gen_push): Update cfa state.
4671         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
4672         add a CFA_ADJUST_CFA note.
4673         (ix86_dwarf_handle_frame_unspec): Remove.
4674         (ix86_expand_prologue): Update cfa state.
4675         (ix86_emit_restore_reg_using_pop): New.
4676         (ix86_emit_restore_regs_using_pop): New.
4677         (ix86_emit_leave): New.
4678         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
4679         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
4680         * config/i386/i386.h (struct machine_cfa_state): New.
4681         (ix86_cfa_state): New.
4682         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
4683         (eh_return_internal): Merge from eh_return_<mode>,
4684         use eh_return rtx, split w/ epilogue.
4685
4686 2009-05-29  Ian Lance Taylor  <iant@google.com>
4687
4688         * builtins.c (validate_gimple_arglist): Don't use va_arg with
4689         enum type.
4690         * calls.c (emit_library_call_value_1): Likewise.
4691
4692         * c-typeck.c (c_build_va_arg): New function.
4693         * c-tree.h (c_build_va_arg): Declare.
4694         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
4695         instead of build_va_arg.
4696
4697 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
4698
4699         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
4700         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
4701         (ptr_difference_cost): Use affine combinations to compute it.
4702         (difference_cost): Likewise.
4703         (get_computation_cost_at): Compute more accurate cost for addresses
4704         if the ratio is a multiplier allowed in addresses.
4705         For non-addresses, consider that an additional offset or symbol is
4706         added only once.
4707
4708 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
4709
4710         * config/i386/i386.c (ix86_decompose_address): Avoid useless
4711         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
4712
4713         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
4714         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
4715         (prefix_rex): For UNIT_MMX don't imply the prefix by default
4716         if MODE_DI.
4717         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
4718         to 1 for TYPE_SSE{IADD1,CVT1}.
4719         (prefix_vex_imm8): Removed.
4720         (length_vex): Only pass 1 as second argument to
4721         ix86_attr_length_vex_default if prefix_extra is 0.
4722         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
4723         (length): For prefix vex computation use length_immediate
4724         attribute instead of prefix_vex_imm8.
4725         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
4726         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
4727         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
4728         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
4729         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
4730         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
4731         a space in between the operands.
4732         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
4733         if one operand is 0xff and the other one si, di, bp or sp.
4734         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
4735         other one si, di, bp or sp.
4736         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
4737         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
4738         type and mode attributes.
4739         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
4740         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
4741         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
4742         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
4743         prefix_data16 attribute iff MODE_DF.
4744         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
4745         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
4746         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
4747         constm128_operand in length_immediate computation.
4748         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
4749         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
4750         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
4751         length_immediate attribute to 1.
4752         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
4753         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
4754         for certain alternatives.
4755         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
4756         prefix_data16 attribute if MODE_V1DF.
4757         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
4758         length_immediate to 1.
4759         (set_got_rex64, set_rip_rex64): Remove length attribute, set
4760         length_address to 4, set mode attribute to MODE_DI.
4761         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
4762         (fxam<mode>2_i387): Set length attribute to 4.
4763         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
4764         *prefetch_3dnow_rex): Override length_address attribute.
4765         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
4766         attributes.
4767         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
4768         (constm128_operand): Removed.
4769         * config/i386/i386.c (memory_address_length): For
4770         disp && !index && !base in 64-bit mode account for SIB byte if
4771         print_operand_address can't optimize disp32 into disp32(%rip)
4772         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
4773         for fs: or gs: segment.
4774         (ix86_attr_length_immediate_default): When checking if shortform
4775         is possible, truncate immediate to the length of the non-shortened
4776         immediate.
4777         (ix86_attr_length_address_default): Ignore MEM_P operands
4778         with X constraint.
4779         (ix86_attr_length_vex_default): Only check for DImode on
4780         GENERAL_REG_P operands.
4781         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
4782         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
4783         (sse_cvttps2pi): Clear prefix_rep attribute.
4784         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
4785         attribute.
4786         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
4787         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
4788         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
4789         iff operand 2 is const_int_operand.
4790         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
4791         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
4792         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
4793         instead of vex.
4794         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
4795         prefix_data16.
4796         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
4797         prefix_data16 attribute for movlpd and movhpd instructions.
4798         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
4799         length_immediate for shufpd instruction.
4800         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
4801         (avx_cmpp<avxmodesuffixf2c><mode>3,
4802         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
4803         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
4804         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
4805         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
4806         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
4807         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
4808         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
4809         prefix_data16 attribute for the first alternative to 1.
4810         (*avx_loadlps): Override length_immediate for the first alternative.
4811         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
4812         attributes for second alternative.
4813         (*vec_concatv2sf_sse4_1): Override length_immediate and
4814         prefix_data16 attributes for second alternative.
4815         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
4816         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
4817         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
4818         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
4819         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
4820         prefix_data16 and length_immediate to 1.
4821         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
4822         to 1.
4823         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
4824         prefix_extra attribute for variants that don't have 0f prefix alone.
4825         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
4826         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
4827         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
4828         *sse4_1_pextrd): Set length_immediate to 1.
4829         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
4830         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
4831         to 1.
4832         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
4833         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
4834         length_immediate to 1 for second alternative.
4835         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
4836         prefix_extra and length_immediate attributes for the first
4837         alternative.
4838         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
4839         first alternative.
4840         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
4841         to 1 for the first and third alternative.
4842         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
4843         alternative.
4844         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
4845         attribute.
4846         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
4847         attribute to 0.
4848         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
4849         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
4850         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
4851         *avx_psign<mode>3): Set prefix_extra attribute to 1.
4852         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
4853         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
4854         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
4855         ssse3_psign<mode>3): Override prefix_rex attribute.
4856         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
4857         (ssse3_palignrti): Override length_immediate to 1.
4858         (ssse3_palignrdi): Override length_immediate to 1, override
4859         prefix_rex attribute.
4860         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
4861         (sse4a_extrqi): Override length_immediate to 2.
4862         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
4863         (sse4a_insertq): Override prefix_data16 to 0.
4864         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
4865         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
4866         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
4867         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
4868         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
4869         and length_immediate to 1.
4870         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
4871         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
4872         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
4873         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
4874         and length_immediate to 1.
4875         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
4876         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
4877         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
4878         avx_ptest256): Override prefix_extra to 1.
4879         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
4880         Override prefix_data16 and length_immediate to 1.
4881         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
4882         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
4883         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
4884         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
4885         prefix_data16 to 0 and prefix_extra to 2.
4886         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
4887         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
4888         attribute.
4889         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
4890         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
4891         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
4892         and prefix_extra to 2.
4893         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
4894         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
4895         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
4896         avx_vpermilvar<mode>3,
4897         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
4898         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
4899         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
4900         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
4901         Override prefix_extra to 1.
4902         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
4903         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
4904         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
4905         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
4906         prefix_extra and length_immediate to 1.
4907         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
4908         modrm to 0.
4909         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
4910         to 1 for the first alternative.
4911         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
4912         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
4913         cases.
4914         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
4915         *movv2sf_internal_avx, *movv2sf_internal): Override
4916         prefix_rep attribute for certain alternatives.
4917         (*mov<mode>_internal): Override prefix_rep or prefix_data16
4918         attributes for certain alternatives.
4919         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
4920         attributes for certain alternatives.
4921         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
4922         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
4923         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
4924         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
4925         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
4926         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
4927         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
4928         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
4929         length_immediate to 1 if operand 2 is const_int_operand.
4930         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
4931         *vec_extractv2si_1): Set length_immediate attribute to 1.
4932         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
4933         using old 3DNOW insn rather than SSE/3DNOW_A.
4934         (mmx_emms, mmx_femms): Clear modrm attribute.
4935
4936 2009-05-29  Martin Jambor  <mjambor@suse.cz>
4937
4938         * tree-sra.c:  New implementation of SRA.
4939
4940         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
4941         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
4942         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
4943         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
4944         (SRA_MAX_STRUCTURE_COUNT): Removed.
4945         (SRA_FIELD_STRUCTURE_RATIO): Removed.
4946         * doc/invoke.texi (sra-max-structure-size): Removed.
4947         (sra-field-structure-ratio): Removed.
4948
4949 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
4950
4951         PR middle-end/40291
4952         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
4953         before expansion.
4954
4955 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
4956
4957         PR rtl-optimization/40101
4958         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
4959         seqno.  Adjust comment.
4960         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
4961         inserting bookkeeping before a jump, the jump is not scheduled.
4962         When no positive seqno found, provide a value.  Add comment.
4963
4964 2009-05-29  Richard Guenther  <rguenther@suse.de>
4965
4966         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
4967         short-cutting on the first component.
4968
4969 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
4970
4971         PR middle-end/39958
4972         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
4973         for trees other than decls/types.
4974
4975 2009-05-29  Richard Guenther  <rguenther@suse.de>
4976
4977         * tree-ssa-operands.c (get_expr_operands): Do not handle
4978         INDIRECT_REFs in the handled-component case.  Remove
4979         unused get_ref_base_and_extent case.
4980         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
4981         tree_low_cst and host_integerp where possible.
4982         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
4983         codes for equivalence.
4984         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
4985
4986 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
4987
4988         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
4989         to tmake_file for i[34567]86-*-cygwin*. 
4990
4991 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
4992
4993         PR target/40017
4994         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
4995         (altivec_categorize_keyword, init_vector_keywords,
4996         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
4997         similar to bool.
4998
4999 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
5000
5001         * tree.c (handle_dll_attribute): Check if node is
5002         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
5003
5004 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
5005
5006         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
5007         component.
5008         (thumb2_zero_extendqidi2): Likewise.
5009
5010 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
5011
5012         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
5013         instead of gen_movrt.
5014         * config/sh/sh.md (movrt): Remove.
5015
5016 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
5017
5018         * doc/invoke.texi (IA-64 Options):
5019         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
5020         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
5021         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
5022         -msched-prefer-non-control-spec-insns,
5023         -msched-stop-bits-after-every-cycle,
5024         -msched-count-spec-in-critical-path,
5025         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
5026         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
5027         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
5028         and -msched-spec-verbose.
5029
5030 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
5031
5032         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
5033         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
5034         error if used.
5035         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
5036
5037 2009-05-28  Richard Guenther  <rguenther@suse.de>
5038
5039         * tree-ssa-alias.c (ao_ref_init): New function.
5040         (ao_ref_base): Likewise.
5041         (ao_ref_base_alias_set): Likewise.
5042         (ao_ref_alias_set): Likewise.
5043         (refs_may_alias_p_1): Change signature.
5044         (refs_may_alias_p): Adjust.
5045         (refs_anti_dependent_p): Likewise.
5046         (refs_output_dependent_p): Likewise.
5047         (call_may_clobber_ref_p_1): Change signature.
5048         (call_may_clobber_ref_p): Adjust.
5049         (stmt_may_clobber_ref_p_1): New function split out from ...
5050         (stmt_may_clobber_ref_p): ... here.
5051         (maybe_skip_until): Adjust signature.
5052         (get_continuation_for_phi): Likewise.
5053         (walk_non_aliased_vuses): Likewise.
5054         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
5055         (ao_ref_init): Declare.
5056         (ao_ref_base): Likewise.
5057         (ao_ref_alias_set): Likewise.
5058         (stmt_may_clobber_ref_p_1): Likewise.
5059         (walk_non_aliased_vuses): Adjust.
5060         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
5061         (get_ref_from_reference_ops): remove.
5062         (vn_reference_lookup_2): Adjust signature.
5063         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
5064         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
5065         (vn_reference_lookup): Adjust.
5066         (vn_reference_insert): Likewise.
5067         (vn_reference_insert_pieces): Adjust signature.
5068         (visit_reference_op_call): Adjust.
5069         * tree-ssa-pre.c (get_expr_type): Simplify.
5070         (phi_translate_1): Adjust.
5071         (compute_avail): Likewise.
5072         (translate_vuse_through_block): Do not re-build trees.
5073         (value_dies_in_block_x): Likewise.
5074         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
5075         fields.
5076         (vn_reference_lookup_pieces): Adjust declaration.
5077         (vn_reference_insert_pieces): Likewise.
5078
5079 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
5080
5081         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
5082         with checking disabled.
5083
5084 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
5085
5086         PR target/37216
5087
5088         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
5089         macro definition for support of three-operand format aligned
5090         .comm directive in assembler on cygwin/pe/mingw target OS.
5091         * configure:  Regenerate.
5092         * config.h:  Regenerate.
5093
5094         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
5095         aligned form of .comm directive if -mpe-aligned-commons is in effect.
5096         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
5097
5098         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
5099         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
5100
5101 2009-05-28  Ira Rosen  <irar@il.ibm.com>
5102
5103         PR tree-optimization/40254
5104         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
5105         in analysis of basic blocks.
5106
5107 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
5108
5109         PR middle-end/33699
5110         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
5111         * target-def.h (TARGET_CONST_ANCHOR): New macro.
5112         (TARGET_INITIALIZER): Use it.
5113         * cse.c (CHEAPER): Move it up to the other macros.
5114         (insert): Rename this ...
5115         (insert_with_costs): ... to this.  Add cost parameters.  Update
5116         function comment.
5117         (insert): New function.  Call insert_with_costs.
5118         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
5119         find_reg_offset_for_const, try_const_anchors): New functions.
5120         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
5121         when using a const-anchor.  Call insert_const_anchors.
5122         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
5123         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
5124
5125 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
5126
5127         * tree-inline.c (remap_decls): Enable nonlocalized variables
5128         when not optimizing.
5129
5130 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
5131
5132         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
5133         Simplify other tests involving optimize.
5134
5135 2009-05-27  Tom Tromey  <tromey@redhat.com>
5136
5137         * unwind-dw2.c (_Unwind_DebugHook): New function.
5138         (uw_install_context): Call _Unwind_DebugHook.
5139
5140 2009-05-27  Tom Tromey  <tromey@redhat.com>
5141
5142         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
5143
5144 2009-05-27  Ian Lance Taylor  <iant@google.com>
5145
5146         * Makefile.in (LINKER, LINKER_FLAGS): Define.
5147         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
5148         (ALL_LINKERFLAGS): Define.
5149         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
5150         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
5151         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
5152         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
5153         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
5154         $(LINKER_FOR_BUILD).
5155         (build/gcov-iov$(build_exeext)): Likewise.
5156
5157 2009-05-27  Julian Brown  <julian@codesourcery.com>
5158
5159         * gcse.c (target.h): Include.
5160         (can_assign_to_reg_without_clobbers_p): Check that the target allows
5161         copy of argument to a pseudo register.
5162
5163 2009-05-27  Diego Novillo  <dnovillo@google.com>
5164
5165         * tree-ssa-live.c (dump_scope_block): Document arguments.
5166         (dump_scope_blocks): Document.
5167         (debug_scope_blocks): New.
5168         * tree-flow.h (debug_scope_blocks): Declare.
5169
5170 2009-05-21  Denis Chertykov  <denisc@overta.ru>
5171
5172         * doc/contrib.texi (Contributors): Add myself to the list.
5173
5174 2009-05-27  Olivier Hainque  <hainque@adacore.com>
5175
5176         * expr.c (target_align): New function.  Alignment the TARGET of an
5177         assignment may be assume to have.
5178         (highest_pow2_factor_for_target): Use it instead of relying on
5179         immediate tree attributes of TARGET, not necessarily honored when
5180         intermediate bitfields are involved.
5181         
5182 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
5183
5184         PR target/40266
5185         * config/i386/driver-i386.c (host_detect_local_cpu): Support
5186         AVX, SSE4, AES, PCLMUL and POPCNT.
5187
5188 2009-05-27  Diego Novillo  <dnovillo@google.com>
5189
5190         * tree-pretty-print.c (dump_location): New.
5191         (dump_generic_node): Call it.
5192         Factor code to handle BLOCK nodes ...
5193         (dump_block_node): ... here.
5194
5195 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
5196
5197         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
5198         with it.
5199         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
5200         included.
5201         * gcc-plugin.h: Include config.h and system.h.
5202         (IN_GCC): Define if not defined.
5203
5204 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
5205
5206         PR middle-end/40249
5207         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
5208         with -fno-inline.
5209
5210 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
5211
5212         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
5213         applicable.
5214         * config/m32r/m32r.h: Ditto.
5215         * config/m32r/m32r.md: Ditto.
5216         * config/m32r/predicates.md: Ditto.
5217
5218 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
5219
5220         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
5221
5222 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
5223
5224         * doc/plugins.texi
5225         (Loading plugins): typo.
5226         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
5227         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
5228         (Interacting with the GCC Garbage Collector): Added new section.
5229         (Giving information about a plugin): Added new section for
5230         PLUGIN_INFO.
5231         * ggc.h (ggc_register_root_tab): Added declaration.
5232         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
5233         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
5234         (register_callback): Improved comment in declaration.
5235         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
5236         (extra_root_vec) Added static variable for dynamic roots registration.
5237         (ggc_register_root_tab) Added new routine.
5238         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
5239         PLUGIN_GGC_MARKING event.
5240         * ggc-zone.c: Include plugin.h.
5241         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
5242         * ggc-page.c: Include plugin.h.
5243         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
5244         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
5245         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
5246         (register_callback): check lack of callbacks for
5247         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
5248         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
5249         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
5250         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
5251         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
5252         dependency on plugin.h.
5253         (plugin.o): Added dependency on ggc.h...
5254
5255 2009-05-26  Richard Guenther  <rguenther@suse.de>
5256
5257         PR middle-end/40248
5258         Revert
5259         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
5260         with mismatched comparison modes.
5261
5262         * expr.c (expand_expr_real_1): Expand the operand of a
5263         VIEW_CONVERT_EXPR in its natural mode.
5264
5265 2009-05-26  Ian Lance Taylor  <iant@google.com>
5266
5267         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
5268         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
5269         (ALL_COMPILERFLAGS): Define.
5270         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
5271         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
5272         (collect2$(exeext), collect2.o): Likewise.
5273         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
5274         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
5275         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
5276         (libbackend.o, intl.o, cppdefault.o): Likewise.
5277         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
5278         (build/%.o): Use $(COMPILER_FOR_BUILD).
5279         (build/gen%$(build_exeext)): Likewise.
5280         (build/gcov-iov$(build_exeext)): LIkewise.
5281         * config/t-darwin (darwin.o): Use $(COMPILER).
5282         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
5283         * config/t-sol2 (sol2-c.o): Likewise.
5284         (sol2.o): Likewise.
5285         * config/t-vxworks (vxworks.o): Likewise.
5286         * config/x-darwin (host-darwin.o): Likewise.
5287         * config/x-hpux (host-hpux.o): Likewise.
5288         * config/x-linux (host-linux.o): Likewise.
5289         * config/x-solaris (host-solaris.o): Likewise.
5290         * config/alpha/x-alpha (driver-alpha.o): Likewise.
5291         * config/arm/t-arm (arm-c.o): Likewise.
5292         * config/arm/t-pe (pe.o): Likewise.
5293         * config/arm/t-wince-pe (pe.o): Likewise.
5294         * config/i386/t-cygming (winnt.o): Likewise.
5295         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
5296         * config/i386/t-cygwin (cygwin1.o): Likewise.
5297         (cygwin2.o): Likewise.
5298         * config/i386/t-i386 (i386-c.o): Likewise.
5299         * config/i386/t-interix (winnt.o): Likewise.
5300         * config/i386/t-netware (netware.o): Likewise.
5301         * config/i386/t-nwld (nwld.o): Likewise.
5302         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
5303         * config/i386/x-i386 (driver-i386.o): Likewise.
5304         * config/i386/x-cygwin (host-cygwin.o): Likewise.
5305         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
5306         * config/ia64/t-ia64 (ia64-c.o): Likewise.
5307         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
5308         * config/mips/x-native (driver-native.o): Likewise.
5309         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
5310         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
5311         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
5312         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
5313         * config/score/t-score-elf (score7.o): Likewise.
5314         (score3.o): Likewise.
5315         * config/sh/t-sh (sh-c.o): Likewise.
5316         * config/sh/t-symbian (sh-c.o): Likewise.
5317         (symbian.o): Likewise.
5318         * config/spu/t-spu-elf (spu-c.o): Likewise.
5319         * config/v850/t-v850 (v850-c.o): Likewise.
5320         * config/v850/t-v850e (v850-c.o): Likewise.
5321
5322 2009-05-26  Richard Guenther  <rguenther@suse.de>
5323
5324         PR tree-optimization/40122
5325         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
5326         VECTOR_CSTs if possible.
5327         (fold_gimple_assign): Likewise.
5328
5329 2009-05-26  Richard Guenther  <rguenther@suse.de>
5330
5331         PR middle-end/40252
5332         * fold-const.c (fold_binary): Use the correct types for building
5333         rotates.
5334
5335 2009-05-26  Richard Guenther  <rguenther@suse.de>
5336
5337         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
5338         redundant calls to merge_alias_info.
5339         (bump_vector_ptr): Likewise.
5340         * tree-ssa-copy.c (merge_alias_info): Remove.
5341         (replace_exp_1): Remove call to merge_alias_info.
5342         (propagate_tree_value): Likewise.
5343         (fini_copy_prop): Propagate points-to info.
5344         * tree-flow.h (merge_alias_info): Remove.
5345
5346 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
5347
5348         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
5349
5350 2009-05-25  Jan Hubicka  <jh@suse.cz>
5351
5352         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
5353         * cgraph.h (struct inline_summary): New filed self_wize,
5354         size_inlining_benefit, self_time and time_inlining_benefit.
5355         (struct cgraph_global_info): Replace insns by time ans size fields.
5356         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
5357         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
5358         (ipcp_update_callgraph): Do not touch function bodies.
5359         * ipa-inline.c: Include except.h
5360         (MAX_TIME): New constant.
5361         (overall_insns): Remove.
5362         (leaf_node_p): New.
5363         (overall_size, max_benefit): New static variables.
5364         (cgraph_estimate_time_after_inlining): New function.
5365         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
5366         (cgraph_clone_inlined_nodes): Update size.
5367         (cgraph_mark_inline_edge): Update size.
5368         (cgraph_estimate_growth): Use size info.
5369         (cgraph_check_inline_limits): Check size.
5370         (cgraph_default_inline_p): Likewise.
5371         (cgraph_edge_badness): Compute badness based on benefit and size cost.
5372         (cgraph_decide_recursive_inlining): Check size.
5373         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
5374         and times.
5375         (cgraph_decide_inlining): Likewise.
5376         (cgraph_decide_inlining_incrementally): Likewise; honor
5377         PARAM_EARLY_INLINING_INSNS.
5378         (likely_eliminated_by_inlining_p): New predicate.
5379         (estimate_function_body_sizes): New function.
5380         (compute_inline_parameters): Use it.
5381         * except.c (must_not_throw_labels): New function.
5382         * except.h (must_not_throw_labels): Declare.
5383         * tree-inline.c (init_inline_once): Kill inlining_weigths
5384         * tree-ssa-structalias.c: Avoid uninitialized warning.
5385         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
5386         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
5387         (PARAM_INLINE_CALL_COST): Remove.
5388         (PARAM_EARLY_INLINING_INSNS): New.
5389
5390 2009-05-25  Richard Guenther  <rguenther@suse.de>
5391
5392         PR tree-optimization/36327
5393         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
5394         callback for reference translation or lookup at the point of may-defs.
5395         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
5396         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
5397         for union COMPONENT_REFs.
5398         (vn_reference_lookup_3): New callback.  Lookup from memset
5399         and CONSTRUCTOR assignment, translate through struct copies.
5400         (vn_reference_lookup_pieces): Make sure to not free the
5401         passed operands array.  Adjust walk_non_aliased_vuses call.
5402         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
5403         make sure we do not leak memory.
5404
5405 2009-05-25  Richard Guenther  <rguenther@suse.de>
5406
5407         * tree-ssa-alias.h (dump_points_to_solution): Declare.
5408         * tree-inline.c (expand_call_inline): Reset the escaped and
5409         callused solutions.
5410         * tree-ssa-structalias.c (pass_build_ealias): New.
5411         * tree-pass.h (pass_build_ealias): Declare.
5412         * passes.c (init_optimization_passes): Add PTA during 
5413         early optimizations.
5414         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
5415         and CALLUSED solutions.
5416         (dump_points_to_solution): New function, split out from ...
5417         (dump_points_to_info_for): ... here.
5418         * tree-parloops.c (parallelize_loops): Reset the escaped and
5419         callused solutions.
5420
5421 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5422
5423         PR bootstrap/40027
5424         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
5425         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
5426
5427 2009-05-25  Ira Rosen  <irar@il.ibm.com>
5428
5429         PR tree-optimization/40238
5430         * tree-vect-stmts.c (vect_init_vector): Insert initialization
5431         statements after basic block's labels.
5432         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
5433         to free the allocated memory.
5434
5435 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
5436
5437         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
5438         return address with a USE.
5439
5440 2009-05-24  Richard Guenther  <rguenther@suse.de>
5441
5442         PR middle-end/40233
5443         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
5444         array type from the main variant of the inner type.
5445
5446 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
5447
5448         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
5449         definition to bool (from int) to un-break build.
5450         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
5451
5452 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
5453
5454         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
5455         discard_stmt_changes): Delete.
5456         * tree-ssa-operands.c (scb_stack): Delete.
5457         (init_ssa_operands): Do not initialize it.
5458         (fini_ssa_operands): Do not free it.
5459         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
5460
5461         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
5462         update_stmt, remove the others.  Fix comments.
5463         * tree-dfa.c (optimize_stack_restore): Likewise.
5464         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
5465         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
5466         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
5467         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
5468         Likewise.
5469         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
5470         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
5471         (dom_opt_finalize_block): Likewise, adjusting access to
5472         stmts_to_rescan.
5473         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
5474         (stmts_to_rescan): Change item type to gimple.
5475         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
5476
5477 2009-05-24  Ira Rosen  <irar@il.ibm.com>
5478
5479         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
5480         * tree-pass.h (pass_slp_vectorize): New pass.
5481         * params.h (SLP_MAX_INSNS_IN_BB): Define.
5482         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
5483         * tree-vectorizer.c (timevar.h): Include.
5484         (user_vect_verbosity_level): Declare.
5485         (vect_location): Fix comment.
5486         (vect_set_verbosity_level): Update user_vect_verbosity_level
5487         instead of vect_verbosity_level.
5488         (vect_set_dump_settings): Add an argument. Ignore user defined
5489         verbosity if dump flags require higher level of verbosity. Print to
5490         stderr only for loop vectorization.
5491         (vectorize_loops): Update call to vect_set_dump_settings.
5492         (execute_vect_slp): New function.
5493         (gate_vect_slp): Likewise.
5494         (struct gimple_opt_pass pass_slp_vectorize): New.
5495         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
5496         access its members.
5497         (vec_info_for_bb): New function.
5498         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
5499         (VECTORIZATION_ENABLED): New macro.
5500         (SLP_ENABLED, SLP_DISABLED): Likewise.
5501         (vect_is_simple_use): Add bb_vec_info argument.
5502         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
5503         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
5504         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
5505         vect_schedule_slp, vect_analyze_slp): Likewise.
5506         (vect_analyze_stmt): Add slp_tree argument.
5507         (find_bb_location): Declare.
5508         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
5509         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
5510         (vect_analyze_loop_operations, vect_analyze_loop,
5511         get_initial_def_for_induction, vect_create_epilog_for_reduction,
5512         vect_finalize_reduction, vectorizable_reduction,
5513         vectorizable_live_operation, vect_transform_loop): Likewise.
5514         * tree-data-ref.c (dr_analyze_innermost): Update comment,
5515         skip evolution analysis if analyzing a basic block.
5516         (dr_analyze_indices): Likewise.
5517         (initialize_data_dependence_relation): Skip the test whether the
5518         object is invariant for basic blocks.
5519         (compute_all_dependences): Skip dependence analysis for data
5520         references in basic blocks.
5521         (find_data_references_in_stmt): Don't fail in case of invariant
5522         access in basic block.
5523         (find_data_references_in_bb): New function.
5524         (find_data_references_in_loop): Move code to
5525         find_data_references_in_bb and add a call to it.
5526         (compute_data_dependences_for_bb): New function.
5527         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
5528         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
5529         that STEP is 0.
5530         (vect_analyze_data_ref_dependence): Check for interleaving in case of
5531         unknown dependence in basic block and fail in case of dependence in
5532         basic block.
5533         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
5534         dependence instances from either loop or basic block vectorization
5535         info.
5536         (vect_compute_data_ref_alignment): Check if it is loop vectorization
5537         before calling nested_in_vect_loop_p.
5538         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
5539         dependence instances from either loop or basic block vectorization
5540         info.
5541         (vect_verify_datarefs_alignment): Likewise.
5542         (vect_enhance_data_refs_alignment): Adjust function calls.
5543         (vect_analyze_data_refs_alignment): Likewise.
5544         (vect_analyze_group_access): Fix printing. Skip different checks if
5545         DR_STEP is 0. Keep strided stores either in loop or basic block
5546         vectorization data structure. Fix indentation.
5547         (vect_analyze_data_ref_access): Fix comments, allow zero step in
5548         basic blocks.
5549         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
5550         dependence instances from either loop or basic block vectorization
5551         info.
5552         (vect_analyze_data_refs): Update comment. Call
5553         compute_data_dependences_for_bb to analyze basic blocks.
5554         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
5555         case of loop vectorization. In case of basic block vectorization use
5556         data-ref itself as a base.
5557         (vect_create_data_ref_ptr): In case of basic block vectorization:
5558         don't advance the pointer, add new statements before the current
5559         statement.  Adjust function calls.
5560         (vect_supportable_dr_alignment): Support only aligned accesses in
5561         basic block vectorization.
5562         * common.opt (ftree-slp-vectorize): New flag.
5563         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
5564         (vect_pattern_recog_1): Likewise.
5565         * tree-vect-stmts.c (process_use): Likewise.
5566         (vect_init_vector): Add new statements in the beginning of the basic
5567         block in case of basic block SLP.
5568         (vect_get_vec_def_for_operand): Adjust function calls.
5569         (vect_finish_stmt_generation): Likewise.
5570         (vectorizable_call): Add assert that it is loop vectorization, adjust
5571         function calls.
5572         (vectorizable_conversion, vectorizable_assignment): Likewise.
5573         (vectorizable_operation): In case of basic block SLP, take
5574         vectorization factor from statement's type and skip the relevance
5575         check. Adjust function calls.
5576         (vectorizable_type_demotion): Add assert that it is loop
5577         vectorization, adjust function calls.
5578         (vectorizable_type_promotion): Likewise.
5579         (vectorizable_store): Check for outer loop only in case of loop
5580         vectorization. Adjust function calls. For basic blocks, skip the
5581         relevance check and don't advance pointers.
5582         (vectorizable_load): Likewise.
5583         (vectorizable_condition): Add assert that it is loop vectorization,
5584         adjust function calls.
5585         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
5586         that it is not reduction, get vector type, call only supported
5587         functions, skip loop specific parts.
5588         (vect_transform_stmt): Check for outer loop only in case of loop
5589         vectorization.
5590         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
5591         (vect_is_simple_use): Fix comment, add new argument, fix conditions
5592         for external definition.
5593         * passes.c (pass_slp_vectorize): New pass.
5594         * tree-vect-slp.c (find_bb_location): New function.
5595         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
5596         check for patterns only in loops.
5597         (vect_build_slp_tree): Add argument, adjust function calls, fail in
5598         case of multiple types in basic block SLP.
5599         (vect_mark_slp_stmts_relevant): New function.
5600         (vect_supported_load_permutation_p): Fix comment.
5601         (vect_analyze_slp_instance): Add argument. In case of basic block
5602         SLP, take vectorization factor from statement's type, check that
5603         unrolling factor is 1. Adjust function call. Save SLP instance in
5604         either loop or basic block vectorization structure. Return FALSE,
5605         if SLP failed.
5606         (vect_analyze_slp): Add argument. Get strided stores groups from
5607         either loop or basic block vectorization structure. Return FALSE
5608         if basic block SLP failed.
5609         (new_bb_vec_info): New function.
5610         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
5611         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
5612         (vect_schedule_slp): Add argument. Get SLP instances from either
5613         loop or basic block vectorization structure. Set vectorization factor
5614         to be 1 for basic block SLP.
5615         (vect_slp_transform_bb): New function.
5616         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
5617
5618 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
5619
5620         * final.c (shorten_branches): Do not align labels for jump tables.
5621         (final_scan_insn): Use JUMP_TABLE_DATA_P.
5622
5623 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
5624
5625         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
5626         Remove outdated reference to flow.c and fix nits.
5627         * doc/gccint.texi: Tweak RTL description.
5628         * doc/rtl.texi: Likewise.
5629
5630 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
5631
5632         * config/avr/avr.c: Change my email address.
5633         * config/avr/avr.h: Likewise.
5634         * config/avr/avr.md: Likewise.
5635         * config/avr/avr-protos.h: Likewise.
5636         * config/avr/libgcc.S: Likewise.
5637
5638 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
5639
5640         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
5641         (spu_split_load, spu_split_store): Change return type to int.
5642         (spu_split_convert): Declare.
5643         * config/spu/predicates.md (spu_mem_operand): Remove.
5644         (spu_mov_operand): Update.
5645         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
5646         * config/spu/spu.c (regno_aligned_for_load): Remove.
5647         (reg_aligned_for_addr, spu_expand_load): Define.
5648         (spu_expand_extv): Reimplement and handle MEM.
5649         (spu_expand_insv): Handle MEM.
5650         (spu_sched_reorder): Handle insn's with length 0.
5651         (spu_legitimate_address_p): Reimplement.
5652         (store_with_one_insn_p): Return TRUE for any mode with size
5653         larger than 16 bytes.
5654         (address_needs_split): Define.
5655         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
5656         operands.
5657         (spu_convert_move): Define.
5658         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
5659         (spu_split_store): Change all MEM's to TImode.
5660         (spu_init_expanders): Preallocate registers that correspond to
5661         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
5662         mark_reg_pointer.
5663         (spu_split_convert): Define.
5664         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
5665         (_move<mode>, _movdi, _movti): Update predicate and condition.
5666         (load, store): Change to define_split.
5667         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
5668         extend<mode>ti2.
5669         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
5670         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
5671         define_insn_and_split of lshr<mode>3.
5672         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
5673         (<v>ashr<mode>3_imm): Define.
5674         (extv, extzv, insv): Allow MEM operands.
5675         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
5676         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
5677         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
5678         (_spu_convert2): Change to define_insn_and_split and remove the
5679         corresponding define_peephole2.
5680         (stack_protect_set, stack_protect_test, stack_protect_test_si):
5681         Change predicates to memory_operand.
5682
5683 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
5684
5685         * config/arm/thumb2.md: Add 16-bit multiply instructions.
5686
5687 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
5688
5689         PR tree-optimization/40219
5690         * tree.c (iterative_hash_expr): Make sure the builtin function is
5691         a normal builtin function and not a front end or back end builtin
5692         before indexing into the built_in_decls array.
5693
5694 2009-05-22  Richard Guenther  <rguenther@suse.de>
5695
5696         PR middle-end/38964
5697         * alias.c (write_dependence_p): Do not use TBAA for answering
5698         anti-dependence or output-dependence.
5699         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
5700         (emit_pointer_definition): Remove.
5701         (emit_alias_warning): Likewise.
5702         (find_what_var_points_to): Remove TBAA pruning code.
5703         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
5704         violations.
5705         (compute_points_to_sets): Remove code computing the set of
5706         dereferenced pointers.
5707         * tree-data-ref.c (dr_may_alias_p): Properly use the split
5708         oracle for querying anti and output dependencies.
5709         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
5710         if TBAA may be applied.
5711         (refs_anti_dependent_p): New function.
5712         (refs_output_dependent_p): Likewise.
5713         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
5714         (refs_output_dependent_p): Likewise.
5715         * doc/tree-ssa.texi (Memory model): New section.
5716         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
5717         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
5718         * cfgexpand.c (expand_gimple_basic_block): Do not handle
5719         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
5720         * expr.c (expand_expr_real_1): Likewise.
5721         * gimple-low.c (lower_stmt): Likewise.
5722         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
5723         (dump_gimple_cdt): Remove.
5724         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
5725         (gimple_size): Likewise.
5726         (walk_gimple_op): Likewise.
5727         (is_gimple_stmt): Likewise.
5728         (walk_stmt_load_store_addr_ops): Likewise.
5729         (gimple_build_cdt): Remove.
5730         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
5731         * gimple.h (gimple_cdt_new_type): Remove.
5732         (gimple_cdt_new_type_ptr): Likewise.
5733         (gimple_cdt_set_new_type): Likewise.
5734         (gimple_cdt_location): Likewise.
5735         (gimple_cdt_location_ptr): Likewise.
5736         (gimple_cdt_set_location): Likewise.
5737         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
5738         * tree-cfg.c (remove_useless_stmts_1): Do not handle
5739         GIMPLE_CHANGE_DYNAMIC_TYPE.
5740         (verify_types_in_gimple_stmt): Likewise.
5741         * tree-inline.c (estimate_num_insns): Likewise.
5742         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
5743         (copy_decl_to_var): Likewise.
5744         (copy_result_decl_to_var): Likewise.
5745         * tree-pretty-print.c (dump_generic_node): Do not handle
5746         CHANGE_DYNAMIC_TYPE_EXPR.
5747         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
5748         * tree-ssa-operands.c (get_expr_operands): Likewise.
5749         * tree-ssa-structalias.c (struct variable_info): Remove
5750         no_tbaa_pruning member.
5751         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
5752         (unify_nodes): Do not copy it.
5753         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
5754         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
5755         (set_uids_in_ptset): Do not check it.
5756         (find_what_var_points_to): Likewise.
5757         (compute_tbaa_pruning): Remove.
5758         (compute_points_to_sets): Do not call it.
5759         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
5760         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
5761         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
5762         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
5763         (DECL_NO_TBAA_P): Likewise.
5764         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
5765         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
5766         (expand_omp_atomic_pipeline): Do not set it.
5767         * print-tree.c (print_node): Do not dump it.
5768         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
5769         redundant check.
5770
5771 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
5772
5773         PR target/39856
5774         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
5775         for clobber.
5776
5777 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
5778
5779         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
5780         non-external.
5781
5782 2009-05-22  Ben Elliston  <bje@au.ibm.com>
5783
5784         * Makefile.in (bversion.h, s-bversion): New targets.
5785         (TOPLEV_H): Add bversion.h.
5786         * toplev.h: Include "bversion.h".
5787         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
5788         the __format__ attribute only if compiling with the same version
5789         of GCC as the sources (the "build version").
5790
5791 2009-05-22  Ben Elliston  <bje@au.ibm.com>
5792
5793         * c-format.c (handle_format_attribute): Fix comment typo.
5794
5795 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
5796
5797         PR target/37846
5798         * config/ia64/ia64.opt (mfused-madd): New.
5799         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
5800         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
5801         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
5802         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
5803         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
5804         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
5805         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
5806         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
5807         instruction if !TARGET_FUSED_MADD.
5808         (fpma, fpms): Remove colon from name.
5809
5810 2009-05-22  Richard Guenther  <rguenther@suse.de>
5811
5812         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
5813         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
5814         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
5815         TARGET_MEM_REF.
5816         (create_expression_by_pieces): Only convert if necessary.
5817         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
5818         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
5819
5820 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
5821
5822         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
5823         regular pattern from a template and rename it ...
5824         (*extzv_truncsi_exts): ... to this.
5825
5826 2009-05-21  Richard Guenther  <rguenther@suse.de>
5827
5828         * cgraph.h (struct cgraph_node): Remove inline_decl member.
5829         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
5830         (cgraph_default_inline_p): Likewise.
5831         (cgraph_decide_inlining_incrementally): Likewise.
5832
5833 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
5834             Uros Bizjak  <ubizjak@gmail.com>
5835
5836         * config/i386/cpuid.h (bit_MOVBE): New.
5837
5838         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
5839
5840         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
5841         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
5842         (ix86_handle_option): Handle OPT_mmovbe.
5843         (ix86_target_string): Add -mmovbe.
5844         (pta_flags): Add PTA_MOVBE.
5845         (processor_alias_table): Add PTA_MOVBE to "atom".
5846         (override_options): Handle PTA_MOVBE.
5847
5848         * config/i386/i386.h (TARGET_MOVBE): New.
5849
5850         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
5851         (*bswapsi_movbe): New.
5852         (*bswapdi_movbe): Likewise.
5853         (bswapdi2): Renamed to ...
5854         (*bswapdi_1): This.
5855         (bswapdi2): New expander.
5856
5857         * config/i386/i386.opt (mmovbe): New.
5858
5859         * doc/invoke.texi: Document -mmovbe.
5860
5861 2009-05-21  Taras Glek  <tglek@mozilla.com>
5862
5863         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
5864         * gcc-plugin.h (plugin_init): Updated signature.
5865         * gcc-plugin.h (plugin_name_args): Moved to this header.
5866         * doc/plugins.texi (plugin_init): Updated documention to reflect
5867         API change.
5868         * doc/plugins.texi (plugin_name_args): Added to documention.
5869
5870 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
5871
5872         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
5873         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
5874
5875 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
5876
5877         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
5878         JUMP_TABLE_DATA_P predicates where applicable.
5879         * config/i386/predicates.md: Ditto.
5880         * config/i386/sse.md: Ditto.
5881
5882 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
5883
5884         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
5885         operand2 -128 override length_immediate attribute to 1.
5886         * config/i386/predicates.md (constm128_operand): New predicate.
5887
5888         * config/i386/i386.c (memory_address_length): Handle %r12
5889         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
5890         also check REGNO.
5891         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
5892         mode look through optional ZERO_EXTEND and SUBREG.
5893         * config/i386/i386.md (R12_REG): New define_constant.
5894         (prefix_data16): For sse unit set also for MODE_TI insns.
5895         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
5896         insns set if operand 1 is ext_QIreg_operand.
5897         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
5898         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
5899         immediate.
5900         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
5901         mode from MODE_DI to MODE_SI.
5902         (movdi_1_rex64): Override modrm and length_immediate attributes
5903         only for movabs (TYPE_IMOV, alternative 2).
5904         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
5905         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
5906         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
5907         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
5908         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
5909         prefix_rex attribute if DImode.
5910         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
5911         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
5912         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
5913         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
5914         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
5915         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
5916         Likewise.  For TYPE_IMOV clear length_immediate attribute.
5917         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
5918         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
5919         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
5920         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
5921         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
5922         or one operand TYPE_ISHIFT.
5923         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
5924         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
5925         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
5926         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
5927         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
5928         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
5929         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
5930         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
5931         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
5932         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
5933         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
5934         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
5935         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
5936         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
5937         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
5938         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
5939         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
5940         set mode attribute, don't override length attribute.
5941         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
5942         to 1.
5943         (return_internal_long): Set length attribute to 2 instead of 1.
5944         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
5945         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
5946         prefix_rex attribute.
5947         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
5948         New predicates.
5949         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
5950
5951 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5952
5953         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
5954
5955 2009-05-20  Ian Lance Taylor  <iant@google.com>
5956
5957         * tree.c (build_tree_list_vec_stat): New function.
5958         (ctor_to_vec): New function.
5959         (build_nt_call_vec): New function.
5960         (build_call_array): Change args to be a const pointer.
5961         (build_call_vec): New function.
5962         * tree.h (build_nt_call_vec): Declare.
5963         (build_tree_list_vec_stat): Declare.
5964         (build_tree_list_vec): Define.
5965         (build_call_array): Update declaration.
5966         (build_call_vec): Declare.
5967         (ctor_to_vec): Declare.
5968         * c-common.c (tree_vector_cache): New static variable.
5969         (make_tree_vector): New function.
5970         (release_tree_vector): New function.
5971         (make_tree_vector_single): New function.
5972         (make_tree_vector_copy): New function.
5973         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
5974         (make_tree_vector_single, make_tree_vector_copy): Declare.
5975         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
5976         (c_parser_expr_list): Don't manage cache here, instead call
5977         make_tree_vector.
5978         (c_parser_release_expr_list): Remove static function.
5979         (c_parser_vec_to_tree_list): Remove static function.
5980         (c_parser_attributes): Call build_tree_list_vec instead of
5981         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
5982         c_parser_release_expr_list.
5983         (c_parser_postfix_expression_after_primary): Likewise.
5984         (c_parser_objc_keywordexpr): Likewise.
5985
5986 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
5987
5988         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
5989         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
5990         TARGET_CONVERT_TO_TYPE.
5991         * hooks.c (hook_tree_const_tree_null): Define.
5992         * hooks.h (hook_tree_const_tree_null): Declare.
5993         * target.h (struct gcc_target):  Add invalid_parameter_type,
5994         invalid_return_type, promoted_type, and convert_to_type fields.
5995         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
5996         (TARGET_INVALID_RETURN_TYPE): Define.
5997         (TARGET_PROMOTED_TYPE): Define.
5998         (TARGET_CONVERT_TO_TYPE): Define.
5999         (TARGET_INITIALIZER): Update for new fields.
6000         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
6001         (grokparms): Check targetm.invalid_parameter_type.
6002         * c-typeck.c (default_conversion): Check targetm.promoted_type.
6003         * c-convert.c (convert): Check targetm.convert_to_type.
6004
6005 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
6006
6007         * config/mips/mips.md (*extenddi_truncate<mode>,
6008         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
6009         defintions.
6010         (*extendhi_truncateqi): New define_insn_and_sptit.
6011
6012 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
6013
6014         PR middle-end/40204
6015         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
6016         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
6017
6018 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
6019
6020         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
6021         the operand of VIEW_CONVERT_EXPR.
6022
6023 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
6024
6025         * config/i386/driver-i386.c (host_detect_local_cpu): Check
6026         extended family and model for Intel processors.  Support Intel Atom.
6027
6028 2009-05-20  Olivier Hainque  <hainque@adacore.com>
6029
6030         * gstab.h (stab_code_type): Define, to be used instead of the
6031         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
6032         notice.
6033         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
6034         occurrences by stab_code_type.
6035         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
6036
6037 2009-05-20  Martin Jambor  <mjambor@suse.cz>
6038
6039         * tree-flow.h (insert_edge_copies_seq): Undeclare.
6040         (sra_insert_before): Likewise.
6041         (sra_insert_after): Likewise.
6042         (sra_init_cache): Likewise.
6043         (sra_type_can_be_decomposed_p): Likewise.
6044         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
6045         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
6046         (sra_insert_before): Likewise.
6047         (sra_insert_after): Likewise.
6048         (sra_init_cache): Likewise.
6049         (insert_edge_copies_seq): Made static and moved upwards.
6050
6051         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
6052         case.
6053
6054         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
6055
6056         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
6057         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
6058         simple copies.
6059
6060 2009-05-20  Richard Guenther  <rguenther@suse.de>
6061
6062         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
6063         with mismatched comparison modes.
6064
6065 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6066
6067         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
6068         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
6069         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
6070         with shifts for Thumb2.
6071         (orsi_notsi): New for orn.
6072         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
6073         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
6074         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
6075         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
6076         Don't invert remainder for IOR.
6077         
6078 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
6079
6080         PR tree-optimization/40087
6081         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
6082         number_of_iterations_ne): Rename never_infinite argument.
6083         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
6084         number_of_iterations_le): Handle pointer-type ivs when
6085         exit_must_be_taken is false.
6086         (number_of_iterations_cond):  Do not always assume that
6087         exit_must_be_taken if the control variable is a pointer.
6088
6089 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6090
6091         * c-typeck.c (build_binary_op): Allow % on integal vectors.
6092         * doc/extend.texi (Vector Extension): Document that % is allowed too.
6093
6094 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
6095
6096         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
6097         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
6098
6099 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6100
6101         PR c/40172
6102         * c.opt (Wlogical-op): Disabled by default.
6103         * c-opt (c_common_post_options): Do not enable Wlogical-op with
6104         Wextra.
6105         * doc/invoke.texi (Wlogical-op): Likewise.
6106         
6107 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
6108
6109         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
6110         into CASE_CONVERT.
6111         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
6112         Propagate the type of the first operand.
6113         <ASSERT_EXPR>: Simplify.
6114         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
6115         Rewrite using the RHS code as discriminant.
6116         <NOP_EXPR>: Turn into CASE_CONVERT.
6117         <PLUS_EXPR>: Propagate the type of the first operand.
6118
6119 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
6120
6121         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
6122         (ia64_dconst_0_375): New.
6123         * config/ia64/ia64.c (ia64_override_options): Remove
6124         -minline-sqrt-min-latency warning.
6125         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
6126         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
6127         * config/ia64/ia64.md (*sqrt_approx): Remove.
6128         (sqrtsf2): Remove #if 0.
6129         (sqrtsf2_internal_thr): Rewrite and move to div.md.
6130         (sqrtdf): Remove assert.
6131         (sqrtdf2_internal_thr): Rewrite and move to div.md.
6132         (sqrtxf2): Remove #if 0.
6133         (sqrtxf2_internal_thr): Rewrite and move to div.md.
6134         * div.md (sqrt_approx_rf): New.
6135         (sqrtsf2_internal_thr): New implementation.
6136         (sqrtsf2_internal_lat): New.
6137         (sqrtdf2_internal_thr: New implementation.
6138         (sqrtxf2_internal): New implementation.
6139
6140 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
6141             Hans-Peter Nilsson  <hp@axis.com>
6142
6143         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
6144         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
6145         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
6146         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
6147         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
6148         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
6149         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
6150         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
6151         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
6152         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
6153         * c-common.c: ...from here.
6154
6155 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6156
6157         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
6158
6159 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6160
6161         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
6162
6163 2009-05-19  Ben Elliston  <bje@au.ibm.com>
6164
6165         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
6166         assignments with memcpy calls.
6167         (add_fdes): Likewise.
6168         (binary_search_unencoded_fdes): Likewise.
6169         (linear_search_fdes): Eliminate type puns.
6170         
6171 2009-05-19  Richard Guenther  <rguenther@suse.de>
6172
6173         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
6174         not falsely claim to have propagated into all uses.
6175
6176 2009-05-19  Ben Elliston  <bje@au.ibm.com>
6177
6178         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
6179         version to v3.0.
6180
6181 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
6182
6183         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
6184         * config/sh/sh.c (sh_legitimate_address_p): Make static.
6185         (TARGET_LEGITIMATE_ADDRESS_P): New.
6186         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6187         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
6188         
6189 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
6190
6191         PR debug/40109
6192         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
6193         child of the containing namespace's DIE.
6194
6195 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
6196
6197         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
6198         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
6199         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
6200         extend patterns.
6201
6202 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
6203
6204         PR target/39942
6205         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
6206         gen_align with gen_pad.
6207         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
6208         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
6209
6210         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
6211         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
6212
6213         * config/i386/i386.md (align): Renamed to ...
6214         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
6215         ASM_OUTPUT_MAX_SKIP_PAD.
6216
6217 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
6218
6219         * config.gcc: Fix variable syntax.
6220
6221         PR target/39531
6222         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
6223         before calling exact_log2.
6224         (output_iorsi3): Likewise.
6225         (output_xorsi3): Likewise.
6226
6227 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
6228
6229         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
6230         for the none zero constant operand except for EQ and NE
6231         comprisons even when the first operand is R0.
6232
6233 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
6234
6235         * config/s390/2064.md: Remove trailing whitespaces.
6236         * config/s390/2084.md: Likewise.
6237         * config/s390/constraints.md: Likewise.
6238         * config/s390/fixdfdi.h: Likewise.
6239         * config/s390/libgcc-glibc.ver: Likewise.
6240         * config/s390/s390-modes.def: Likewise.
6241         * config/s390/s390-protos.h: Likewise.
6242         * config/s390/s390.c: Likewise.
6243         * config/s390/s390.h: Likewise.
6244         * config/s390/s390.md: Likewise.
6245         * config/s390/tpf-unwind.h: Likewise.
6246
6247 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
6248
6249         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
6250
6251 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
6252
6253         M68K TLS support.
6254         * configure.ac (m68k-*-*): Check if binutils support TLS.
6255         * configure: Regenerate.
6256         * config/m68k/predicates.md (symbolic_operand): Extend comment.
6257         * config/m68k/constraints.md (Cu): New constraint.
6258         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
6259         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
6260         (movsi): Handle TLS symbols.
6261         (addsi3_5200): Handle XTLS symbols, indent.
6262         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
6263         (m68k_tls_reference_p): Declare.
6264         (m68k_legitimize_address): Declare.
6265         (m68k_unwrap_symbol): Declare.
6266         * config/m68k/m68k.opt (mxtls): New option.
6267         * config/m68k/m68k.c (ggc.h): Include.
6268         (m68k_output_dwarf_dtprel): Implement hook.
6269         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
6270         (m68k_expand_prologue): Load GOT pointer when function needs it.
6271         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
6272         (m68k_legitimate_constant_address_p): Same.
6273         (m68k_decompose_address): Handle TLS references.
6274         (m68k_get_gp): New static function.
6275         (enum m68k_reloc): New contants.
6276         (TLS_RELOC_P): New macro.
6277         (m68k_wrap_symbol): New static function.
6278         (m68k_unwrap_symbol): New function.
6279         (m68k_final_prescan_insn_1): New static function.
6280         (m68k_final_prescan_insn): New function.
6281         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
6282         functions.
6283         (legitimize_pic_address): Handle TLS references..
6284         (m68k_tls_get_addr, m68k_get_tls_get_addr)
6285         (m68k_libcall_value_in_a0_p)
6286         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
6287         (m68k_call_m68k_read_tp): Helper variables and functions for ...
6288         (m68k_legitimize_tls_address): Handle TLS references.
6289         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
6290         New functions.
6291         (m68k_legitimize_address): Handle TLS symbols.
6292         (m68k_get_reloc_decoration): New static function.
6293         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
6294         UNSPEC_RELOC32.
6295         (m68k_output_dwarf_dtprel): Implement hook.
6296         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
6297         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
6298         m68k_call_* routines.
6299         (sched_attr_op_type): Handle TLS symbols.
6300         (gt-m68k.h): Include.
6301         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
6302         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
6303
6304 2009-05-18  Martin Jambor  <mjambor@suse.cz>
6305
6306         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
6307         (visit_store_addr_for_mod_analysis): New function.
6308         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
6309         (determine_cst_member_ptr): Use gimple_assign_single_p.
6310         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
6311         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
6312         operands.  Don't check number of operands of a NOP_EXPR.
6313
6314 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
6315
6316         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
6317
6318 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6319
6320         PR c/40172
6321         * c-common.c (warn_logical_operator): Don't warn if one of
6322         expression isn't always true or false.
6323
6324 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
6325
6326         * config/i386/biarch32.h: New file.
6327         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
6328
6329 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
6330
6331         * config/mips/mips.md (*zero_extend<mode>_trunchi,
6332         *zero_extend<mode>_truncqi): Merge these into ...
6333         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
6334         Name the pattern following this as *zero_extendhi_truncqi.
6335
6336 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
6337
6338         PR middle-end/39301
6339         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
6340         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
6341         (output_info): Make field HOST_WIDEST_INT.
6342         (print_statistics): Use HOST_WIDEST_INT_PRINT.
6343         (dump_bitmat_statistics): Same.
6344
6345 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
6346
6347         * config.gcc (use_gcc_stdint):  Set to wrap.
6348         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
6349         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
6350         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
6351         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
6352         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
6353         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
6354         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
6355         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
6356
6357 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
6358
6359         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
6360         tune_64.
6361         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
6362         Move definitions earlier.
6363         (OPT_ARCH64, OPT_ARCH32): Define.
6364         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
6365         and tune_64.
6366
6367 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
6368
6369         PR target/40153
6370         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
6371         implies.
6372
6373 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
6374
6375         * arm.md (movdi2): Copy non-reg values to DImode registers.
6376
6377 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
6378
6379         PR target/39942
6380         * final.c (label_to_max_skip): New function.
6381         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
6382         CODE_LABEL_NUMBER <= max_labelno.
6383         * output.h (label_to_max_skip): New prototype.
6384         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
6385         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
6386         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
6387         Handle CODE_LABELs with >= 16 byte alignment or with
6388         max_skip == (1 << align) - 1.
6389         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
6390         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
6391
6392         PR target/39942
6393         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
6394         .p2align 3 if MAX_SKIP is smaller than 7.
6395         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
6396
6397 2009-05-15  Ian Lance Taylor  <iant@google.com>
6398
6399         * alias.c (struct alias_set_entry_d): Rename from struct
6400         alias_set_entry.  Change all uses.
6401         * except.c (struct call_site_record_d): Rename from struct
6402         call_site_record.  Change all uses.
6403         * except.h (struct eh_region_d): Rename from struct eh_region.
6404         Change all uses.
6405         * gcse.c (struct hash_table_d): Rename from struct hash_table.
6406         Change all uses.
6407         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
6408         ivtype_map_elt.  Change all uses.
6409         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
6410         Change all uses.
6411         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
6412         * graphite.h (struct name_tree_d): Rename from struct name_tree.
6413         Change all uses.
6414         (struct sese_d): Rename from struct sese.  Change all uses.
6415         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
6416         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
6417         * optabs.h (struct optab_d): Rename from struct optab.  Change all
6418         uses.
6419         (struct convert_optab_d): Rename from struct convert_optab.
6420         Change all uses.
6421         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
6422         ipa_opt_pass.  Change all uses.
6423         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
6424         all uses.
6425
6426         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
6427         defined as a typedef.
6428         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
6429         defined as a tag.
6430
6431 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6432
6433         PR 16302
6434         * fold-const.c (make_range,build_range_check,merge_ranges): Move
6435         declaration to...
6436         (merge_ranges): Returns bool. 
6437         * tree.h (make_range): .. to here.
6438         (build_range_check): Likewise.
6439         (merge_ranges): Likewise. Renamed from merge_ranges.
6440         * c-typeck.c (parser_build_binary_op): Update calls to
6441         warn_logical_operator.
6442         * c-common.c (warn_logical_operator): Add new warning.
6443         * c-common.h (warn_logical_operator): Update declaration.
6444         
6445 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6446
6447         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
6448         
6449 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6450
6451         * doc/install.texi: Document MPC requirements, flags etc.
6452
6453         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
6454         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
6455         Evaluate constant arguments.
6456         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
6457         (fold_builtin_1): Likewise, also evaluate constant arguments.
6458         Remove superfluous break.
6459         (do_mpc_ckconv): New.
6460         * real.h: Include mpc.h.
6461         * toplev.c (print_version): Output MPC version info if available.
6462
6463 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
6464
6465         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
6466
6467 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
6468
6469         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
6470         only once.
6471
6472 2009-05-15  Jan Hubicka  <jh@suse.cz>
6473
6474         * doc/invoke.texi (max-early-inliner-iterations): New flag.
6475         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
6476         (try_inline): Fix return value.
6477         (cgraph_decide_inlining_incrementally): Honor new value.
6478         (cgraph_early_inlining): Handle indirect inlining.
6479         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
6480
6481 2009-05-15  Jan Hubicka  <jh@suse.cz>
6482
6483         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
6484         * cgraphunit.c (cgraph_finalize_function): Set it.
6485         (cgraph_expand_function): Use it.
6486
6487 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
6488
6489         * real.c (encode_ieee_half): Define.
6490         (decode_ieee_half): Define.
6491         (ieee_half_format): Define.
6492         (arm_half_format): Define.
6493         * real.h (ieee_half_format): Declare.
6494         (arm_half_format): Declare.
6495
6496 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
6497
6498         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
6499         swapped, and reversed optabs exist before trying to use them.
6500
6501 2009-05-15  Paul Brook  <paul@codesourcery.com>
6502             Sandra Loosemore  <sandra@codesourcery.com>
6503
6504         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
6505         loads.  Allow PRE_DEC.
6506         (output_move_neon): Handle PRE_DEC.
6507         (arm_print_operand): Add 'A' for neon structure loads.
6508         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
6509         * config/arm/neon.md (neon_mov): Update comment.
6510         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
6511         calls.
6512         (Um): New constraint.
6513
6514 2009-05-15  Jan Hubicka  <jh@suse.cz>
6515
6516         Revert the following patch until testsuite fallout is fixed:
6517         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
6518         * cgraph.h (struct inline_summary): New filed self_wize,
6519         size_inlining_benefit, self_time and time_inlining_benefit.
6520         (struct cgraph_global_info): Replace insns by time ans size fields.
6521         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
6522         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
6523         (ipcp_update_callgraph): Do not touch function bodies.
6524         * ipa-inline.c: Include except.h
6525         (MAX_TIME): New constant.
6526         (overall_insns): Remove
6527         (overall_size, max_benefit): New static variables.
6528         (cgraph_estimate_time_after_inlining): New function.
6529         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
6530         (cgraph_clone_inlined_nodes): Update size.
6531         (cgraph_mark_inline_edge): Update size.
6532         (cgraph_estimate_growth): Use size info.
6533         (cgraph_check_inline_limits): Check size.
6534         (cgraph_default_inline_p): Likewise.
6535         (cgraph_edge_badness): Compute badness based on benefit and size cost.
6536         (cgraph_decide_recursive_inlining): Check size.
6537         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
6538         and times.
6539         (cgraph_decide_inlining): Likewise.
6540         (cgraph_decide_inlining_incrementally): Likewise; honor
6541         PARAM_EARLY_INLINING_INSNS.
6542         (likely_eliminated_by_inlining_p): New predicate.
6543         (estimate_function_body_sizes): New function.
6544         (compute_inline_parameters): Use it.
6545         * except.c (must_not_throw_labels): New function.
6546         * except.h (must_not_throw_labels): Declare.
6547         * tree-inline.c (init_inline_once): Kill inlining_weigths
6548         * tree-ssa-structalias.c: Avoid uninitialized warning.
6549         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
6550         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
6551         (PARAM_INLINE_CALL_COST): Remove.
6552         (PARAM_EARLY_INLINING_INSNS): New.
6553
6554 2009-05-15  Richard Guenther  <rguenther@suse.de>
6555
6556         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
6557         not TODO_update_ssa.
6558
6559 2009-05-15  Richard Guenther  <rguenther@suse.de>
6560
6561         PR tree-optimization/39999
6562         * gimple.h (gimple_expr_type): Use the expression type looking
6563         through useless conversions.
6564         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
6565         (vn_nary_op_insert_stmt): Likewise.
6566         (simplify_binary_expression): Likewise.
6567
6568 2009-05-15  Richard Guenther  <rguenther@suse.de>
6569
6570         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
6571         New options, enabled by default.
6572         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
6573         Document.
6574         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
6575         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
6576         * tree-ssa-structalias.c (gate_tree_pta): New function.
6577         (pass_build_alias): Use it.
6578
6579 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
6580
6581         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
6582         recurse on an invariant address if a conversion from a pointer
6583         type to a wider integer type is involved.
6584
6585 2009-05-15  Jan Hubicka  <jh@suse.cz>
6586
6587         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
6588         * cgraph.h (struct inline_summary): New filed self_wize,
6589         size_inlining_benefit, self_time and time_inlining_benefit.
6590         (struct cgraph_global_info): Replace insns by time ans size fields.
6591         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
6592         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
6593         (ipcp_update_callgraph): Do not touch function bodies.
6594         * ipa-inline.c: Include except.h
6595         (MAX_TIME): New constant.
6596         (overall_insns): Remove
6597         (overall_size, max_benefit): New static variables.
6598         (cgraph_estimate_time_after_inlining): New function.
6599         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
6600         (cgraph_clone_inlined_nodes): Update size.
6601         (cgraph_mark_inline_edge): Update size.
6602         (cgraph_estimate_growth): Use size info.
6603         (cgraph_check_inline_limits): Check size.
6604         (cgraph_default_inline_p): Likewise.
6605         (cgraph_edge_badness): Compute badness based on benefit and size cost.
6606         (cgraph_decide_recursive_inlining): Check size.
6607         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
6608         and times.
6609         (cgraph_decide_inlining): Likewise.
6610         (cgraph_decide_inlining_incrementally): Likewise; honor
6611         PARAM_EARLY_INLINING_INSNS.
6612         (likely_eliminated_by_inlining_p): New predicate.
6613         (estimate_function_body_sizes): New function.
6614         (compute_inline_parameters): Use it.
6615         * except.c (must_not_throw_labels): New function.
6616         * except.h (must_not_throw_labels): Declare.
6617         * tree-inline.c (init_inline_once): Kill inlining_weigths
6618         * tree-ssa-structalias.c: Avoid uninitialized warning.
6619         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
6620         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
6621         (PARAM_INLINE_CALL_COST): Remove.
6622         (PARAM_EARLY_INLINING_INSNS): New.
6623         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
6624         (inline-call-cost): Remove.
6625         (early-inlining-insns): New.
6626
6627 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
6628
6629         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
6630         for bounds.
6631         (print_int_cst_bounds_in_octal_p): Likewise.
6632         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
6633         with subtypes.
6634         * dwarf2out.c (base_type_die): Likewise.
6635         (is_subrange_type): Delete.
6636         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
6637         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
6638         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
6639         if the destination type is boolean.
6640         (build_range_check): Do not special-case subtypes.
6641         (fold_sign_changed_comparison): Likewise.
6642         (fold_unary): Likewise.
6643         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
6644         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
6645         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
6646         * tree.c (subrange_type_for_debug_p): New predicate based on the
6647         former is_subrange_type.
6648         * tree.h (subrange_type_for_debug_p): Declare.
6649         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
6650         (convert_affine_scev): Remove call to above function.
6651         (chrec_convert_aggressive): Likewise.
6652         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
6653         false for conversions involving subtypes.
6654         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
6655         (vrp_val_min): Likewise.
6656         (needs_overflow_infinity): Likewise.
6657         (extract_range_from_unary_expr): Likewise.
6658
6659 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
6660
6661         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
6662         * config/frv/frv.c: Likewise.
6663         * config/s390/s390.c: Likewise.
6664         * config/sparc/sparc.h: Likewise.
6665         * config/i386/i386.h: Likewise.
6666         * config/i386/i386.c: Likewise.
6667         * config/crx/crx.c: Likewise.
6668         * config/m68hc11/m68hc11.h: Likewise.
6669         * config/iq2000/iq2000.c: Likewise.
6670         * config/mn10300/mn10300.h: Likewise.
6671         * config/mn10300/mn10300.c: Likewise.
6672         * config/m68k/m68k.c: Likewise.
6673         * config/rs6000/rs6000.c: Likewise.
6674         * config/rs6000/xcoff.h: Likewise.
6675         * config/rs6000/linux64.h: Likewise.
6676         * config/rs6000/sysv4.h: Likewise.
6677         * config/score/score3.c: Likewise.
6678         * config/score/score7.c: Likewise.
6679         * config/score/score.c: Likewise.
6680         * config/arm/arm.md: Likewise.
6681         * config/mips/mips.c: Likewise.
6682         * config/mips/mips.md: Likewise.
6683         * config/bfin/bfin.h: Likewise.
6684         * config/pa/pa.c: Likewise.
6685         * config/pa/constraints.md: Likewise.
6686
6687         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
6688         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
6689         * config/pdp11/pdp11.h: Use memory_address_p instead.
6690
6691 2009-05-14  Ian Lance Taylor  <iant@google.com>
6692
6693         * passes.c (finish_optimization_passes): Change i to int.
6694         * plugin.c (plugins_active_p): Change event to int.
6695         (dump_active_plugins): Likewise.
6696         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
6697         Add cast.
6698         * tree.c (tree_range_check_failed): Change c to unsigned int.
6699         (omp_clause_range_check_failed): Likewise.
6700         (build_common_builtin_nodes): Change mode to int.  Add cast.
6701         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
6702         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
6703
6704         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
6705         ++ or -- with a variable of enum type.
6706
6707 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
6708
6709         PR driver/40144
6710         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
6711
6712 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
6713
6714         * store-motion.c: Do not include params.h
6715         * Makefile.in: Fix dependencies for various files.
6716
6717 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
6718
6719         * auto-inc-dec.c: Fix pass description, remove apparent
6720         accidental duplication.
6721
6722 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
6723
6724         PR middle-end/40147
6725         * ipa-utils.h (memory_identifier_string): Moved to ...
6726         * tree.h (memory_identifier_string): Here.  Add GTY(()).
6727
6728 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
6729
6730         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
6731         in the former documentation of...
6732         (GO_IF_LEGITIMATE_ADDRESS): ... this.
6733         * ira-conflicts.c (get_dup_num): Use address_operand.
6734         * targhooks.c (default_legitimate_address_p): New.
6735         * targhooks.h (default_legitimate_address_p): New.
6736         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
6737         Call hook.
6738         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
6739         * target.h (struct target): Add legitimate_address_p.
6740         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
6741         (TARGET_INITIALIZER): Include it.
6742
6743         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6744         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
6745         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
6746         (TARGET_LEGITIMATE_ADDRESS_P): New.
6747
6748         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6749         (REG_OK_STRICT_P): Delete.
6750         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
6751         (frv_legitimate_address_p_1): ... this.
6752         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
6753         (frv_legitimate_address_p_1): ... the renamed old
6754         frv_legitimate_address_p.
6755         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
6756         (TARGET_LEGITIMATE_ADDRESS_P): New.
6757
6758         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6759         * config/s390/s390-protos.h (legitimate_address_p): Remove.
6760         * config/s390/s390.c (legitimate_address_p): Rename to...
6761         (s390_legitimate_address_p): ... this, make static.
6762         (legitimize_address): Adjust call.
6763         (TARGET_LEGITIMATE_ADDRESS_P): New.
6764         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
6765
6766         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6767         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
6768         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
6769         (TARGET_LEGITIMATE_ADDRESS_P): New.
6770
6771         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6772         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
6773         * config/spu/spu.c (spu_legitimate_address): Rename to...
6774         (spu_legitimate_address_p): ... this, make static.
6775         (TARGET_LEGITIMATE_ADDRESS_P): New.
6776
6777         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6778         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
6779         * config/sparc/sparc.c (legitimate_address_p): Rename to...
6780         (sparc_legitimate_address_p): ... this, make static and return bool.
6781         (legitimize_address): Adjust call.
6782         (TARGET_LEGITIMATE_ADDRESS_P): New.
6783
6784         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6785         * config/i386/i386-protos.h (legitimate_address_p): Remove.
6786         * config/i386/i386.c (legitimate_address_p): Rename to...
6787         (ix86_legitimate_address_p): ... this, make static.
6788         (constant_address_p): Move after it, adjust call.
6789         (TARGET_LEGITIMATE_ADDRESS_P): New.
6790
6791         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6792         * config/avr/avr-protos.h (legitimate_address_p): Remove.
6793         * config/avr/avr.c (legitimate_address_p): Rename to...
6794         (avr_legitimate_address_p): ... this, make static.
6795         (legitimize_address): Adjust call.
6796         (TARGET_LEGITIMATE_ADDRESS_P): New.
6797
6798         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6799         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
6800         * config/crx/crx.c (crx_legitimate_address_p): Make static.
6801         (TARGET_LEGITIMATE_ADDRESS_P): New.
6802
6803         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6804         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
6805         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
6806         (TARGET_LEGITIMATE_ADDRESS_P): New.
6807
6808         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6809         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
6810         Remove.
6811         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
6812         Make static.
6813         (TARGET_LEGITIMATE_ADDRESS_P): New.
6814
6815         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6816         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
6817         Remove.
6818         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
6819         Rename to...
6820         (m68hc11_legitimate_address_p): ... this, make static.
6821         (go_if_legitimate_address_internal): Rename to...
6822         (m68hc11_legitimate_address_p_1): ... this.
6823         (legitimize_address): Adjust call.
6824         (TARGET_LEGITIMATE_ADDRESS_P): New.
6825
6826         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6827         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
6828         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
6829         (TARGET_LEGITIMATE_ADDRESS_P): New.
6830
6831         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6832         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
6833         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
6834         (mn10300_legitimate_address_p): ... this, make static.
6835         (TARGET_LEGITIMATE_ADDRESS_P): New.
6836
6837         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6838         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
6839         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
6840         (TARGET_LEGITIMATE_ADDRESS_P): New.
6841
6842         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6843         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
6844         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
6845         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6846         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
6847         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
6848         (rs6000_legitimate_address_p): ... this, make static.
6849         (TARGET_LEGITIMATE_ADDRESS_P): New.
6850         (REG_MODE_OK_FOR_BASE_P): Delete.
6851         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
6852
6853         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6854         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
6855         Delete.
6856         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
6857         static, adjust types.
6858         (TARGET_LEGITIMATE_ADDRESS_P): New.
6859
6860         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6861         * config/score/score.c (score_address_p): Rename to...
6862         (score_legitimate_address_p): ... this.
6863         (TARGET_LEGITIMATE_ADDRESS_P): New.
6864         * config/score/score3.c (score3_address_p): Rename to...
6865         (score3_legitimate_address_p): ... this.
6866         * config/score/score7.c (score7_address_p): Rename to...
6867         (score7_legitimate_address_p): ... this.
6868
6869         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
6870         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
6871         GO_IF_LEGITIMATE_ADDRESS): Delete.
6872         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
6873         thumb2_legitimate_address_p): Delete.
6874         (arm_legitimate_address_p): Rename to...
6875         (arm_legitimate_address_outer_p): ... this.
6876         * config/arm/constraints.md ("Uq"): Adjust call.
6877         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
6878         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
6879         to...
6880         (arm_legitimate_address_outer_p): ... this.
6881         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
6882         static.
6883         (TARGET_LEGITIMATE_ADDRESS_P): New.
6884
6885         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6886         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
6887         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
6888         (TARGET_LEGITIMATE_ADDRESS_P): New.
6889
6890         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6891         * config/vax/vax-protos.h (legitimate_address_p): Remove.
6892         * config/vax/vax.c (legitimate_address_p): Rename to...
6893         (vax_legitimate_address_p): ... this, make static.
6894         (TARGET_LEGITIMATE_ADDRESS_P): New.
6895
6896         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6897         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
6898         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
6899         (TARGET_LEGITIMATE_ADDRESS_P): New.
6900
6901         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6902         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
6903         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
6904         (mmix_legitimate_address_p): ... this, make static.
6905         (TARGET_LEGITIMATE_ADDRESS_P): New.
6906
6907         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6908         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
6909         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
6910         (TARGET_LEGITIMATE_ADDRESS_P): New.
6911
6912 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
6913
6914         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
6915         of MODE_COMPLEX_INT.
6916
6917 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6918
6919         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
6920         LCT_NORMAL in function call.
6921         * mips-tdump.c (print_file_desc): Add cast to enum type.
6922         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
6923         (mark_stabs): Add casts to enum types.
6924         (parse_stabs_common): Add casts to enum types.
6925
6926 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
6927
6928         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
6929         Check for invalid values of LETTER.
6930
6931 2009-05-13  Taras Glek  <tglek@mozilla.com>
6932
6933         * attribs.c (register_attribute): moved out attribute registration
6934         into register_attribute.
6935         * doc/plugins.texi: Documented register_attribute and
6936         PLUGIN_ATTRIBUTES.
6937         * gcc-plugin.h: Added forward decl for register_attribute.
6938         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
6939         * plugin.c (register_callback, invoke_plugin_callbacks): Added
6940         PLUGIN_ATTRIBUTES boilerplate.
6941
6942 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
6943
6944         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
6945         values even in sentinel and empty entries.
6946         (ms_printf_flag_specs):  Likewise.
6947         (ms_scanf_flag_specs):  Likewise.
6948         (ms_strftime_flag_specs):  Likewise.
6949         (ms_print_char_table):  Likewise.
6950         (ms_scan_char_table):  Likewise.
6951         (ms_time_char_table):  Likewise.
6952
6953 2009-05-13  Doug Kwan  <dougkwan@google.com>
6954
6955         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
6956
6957 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
6958
6959         * config/mips/mips.md (store): Add attributes for QI and HI.
6960         Update comment.
6961         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
6962         (truncdi<mode>2): ... this new pattern.
6963
6964 2009-05-13  Brad Hards  <bradh@kde.org>
6965
6966         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
6967
6968 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
6969             Ben Elliston <bje@au.ibm.com>
6970
6971         PR middle-end/40035
6972         * dse.c (check_mem_read_rtx): Guard against width == -1.
6973
6974 2009-05-13  Michael Matz  <matz@suse.de>
6975
6976         PR middle-end/39976
6977         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
6978         (trivially_conflicts_p): New function.
6979         (insert_backedge_copies): Use it.
6980
6981 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
6982
6983         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
6984         (handle_stdc_pragma): Use new enum constant names.
6985         (handle_pragma_float_const_decimal64): Ditto.
6986
6987 2009-05-13  Ian Lance Taylor  <iant@google.com>
6988
6989         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
6990         tree.def.
6991
6992 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
6993
6994         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
6995         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
6996         multilibs.
6997         * config/m68k/m68k.h (FL_UCLINUX): Define.
6998
6999 2009-05-13  Jan Hubicka  <jh@suse.cz>
7000
7001         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
7002
7003 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
7004
7005         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
7006         unless -fschedule-insns is specified.
7007
7008 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
7009
7010         PR target/39561
7011         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
7012         TARGET_EXPAND_CBRANCHDI4.
7013         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
7014         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
7015         (cmpeqdi): Fix comment.
7016
7017 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
7018
7019         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
7020         (sh_legitimate_address_p): Likewise.
7021         * config/sh/sh.c (sh_legitimate_index_p): New.
7022         (sh_legitimate_address_p): Likewise.
7023         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
7024         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
7025         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
7026         (MAYBE_BASE_REGISTER_RTX_P): New macro.
7027         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
7028         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
7029         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
7030         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
7031         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
7032
7033 2009-05-12  Jan Hubicka  <jh@suse.cz>
7034
7035         * tree-inline.c (estimate_operator_cost): Add operands;
7036         when division happens by constant, it is cheap.
7037         (estimate_num_insns): Loads and stores are not having cost of 0;
7038         EH magic stuff is cheap; when computing runtime cost of switch,
7039         use log2 base of amount of its cases; builtin_expect has cost of 0;
7040         compute cost for moving return value of call.
7041         (init_inline_once): Initialize time_based flags.
7042         * tree-inline.h (eni_weights_d): Add time_based flag.
7043
7044 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7045
7046         * df-core.c: Update head documentation.
7047
7048 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
7049
7050         PR bootstrap/40118
7051         * rs6000.c (rs6000_generate_compare): Use op1b instead of
7052         shadowing exisiting variable op1.
7053
7054 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
7055
7056         PR target/37179
7057         * config/i386/driver-i386.c (processor_signatures): New enum.
7058         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
7059         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
7060         processor signature to detect geode processor.
7061
7062 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7063
7064         Revert:
7065
7066         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7067
7068         * optabs.c (prepare_cmp_insn): Temporarily disable test that
7069         causes spurious differences between trunk and cond-optab branch.
7070
7071 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7072
7073         * dojump.c (compare_from_rtx): Delete.
7074         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
7075         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
7076         if the comparison does not satisfy the predicate; test predicates for
7077         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
7078         further if one existing pattern fails.
7079         * expr.h (compare_from_rtx): Delete.
7080         (prepare_operand): Declare it.
7081         * optabs.c: Change "lib call" to "libcall" throughout.
7082         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
7083         HAVE_conditional_trap, emit_cmp_insn): Delete.
7084         (can_compare_p): Delete cmp_optab case.
7085         (prepare_float_lib_cmp): Return an rtx and a machine mode.
7086         Accept other parameters by value.
7087         (prepare_operand): Make non-static.
7088         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
7089         other parameters by value.  Try to widen operands here based on
7090         an optab_methods argument and looking at cbranch_optab.
7091         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
7092         loop.  Use cbranch_optab directly.
7093         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
7094         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
7095         assertion.
7096         (emit_conditional_move, emit_conditional_add): Inline what's needed
7097         of compare_from_rtx, using new prepare_cmp_insn for the rest.
7098         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
7099         with COMPARE.  Move cmov_optab and cstore_optab above
7100         with cbranch_optab, move cmp_optab down with ucmp_optab,
7101         remove tst_otpab.  Do not initialize trap_rtx.
7102         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
7103         for trap code.  Do not check HAVE_conditional_trap.  Use
7104         prepare_cmp_insn.  Accept no predicate for operand 3.
7105         * optabs.h (OTI_cmp): Mark as used only for libcalls.
7106         (OTI_ctrap, ctrap_optab): New.
7107         (tst_optab): Delete.
7108         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
7109         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
7110         with lookup of ctrap_optab.
7111         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
7112         Delete.
7113         (ctrap_optab): New.
7114
7115         * combine.c (combine_simplify_rtx, simplify_set): Do not
7116         special case comparing against zero for cc0 machines.
7117         * simplify-rtx.c (simplify_binary_operation_1): Never remove
7118         COMPARE on cc0 machines.
7119         (simplify_relational_operation): Return a new expression when
7120         a COMPARE could be removed.
7121         * final.c (final_scan_insn): Compare cc_status values
7122         against LHS of a (compare FOO (const_int 0)) cc0 source.
7123         Also check if cc_status.value is the full compare.
7124
7125         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
7126         (cstoreMM4): Document.
7127         (conditional_trap): Document ctrapMM4 instead.
7128         (sync_compare_and_swapMM): Refer to cbranchcc4.
7129         (Dependent Patterns): Eliminate obsolete information referring to
7130         the old jump optimization phase.
7131         (Canonicalization): Include cbranchcc4 case, omit canonicalization
7132         of compares with 0 on cc0 machines.
7133         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
7134         avoiding references to cc0.  Remove text about storing operands
7135         in cmpMM.
7136         * doc/tm.texi (Condition Codes): Include blurb on different
7137         condition code representations, separate into subsections for
7138         CC0, MODE_CC and conditional execution.
7139
7140         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
7141         alpha_emit_setcc): Accept operands and a machine mode.
7142         * config/alpha/alpha.c (alpha_emit_conditional_branch):
7143         Get code/op0/op1 from operands, use machine mode argument
7144         instead of alpha_compare.fp_p.  Emit the branch here.
7145         (alpha_emit_setcc): Likewise, and return boolean.
7146         (alpha_emit_conditional_move): Likewise.  Assert that
7147         cmp_op_mode == cmp_mode, and simplify accordingly.
7148         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
7149         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
7150         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
7151         Delete.
7152         (stack probe test): Use cbranchdi4.
7153         * config/alpha/predicates.md (alpha_cbranch_operator): New.
7154
7155         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
7156         * config/arc/arc.h (movsicc, movsfcc): Use it.
7157         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
7158         (cbranchsi4, cstoresi4): New.
7159         (cmpsi, bCC and sCC expanders): Remove. 
7160
7161         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
7162         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
7163         * config/arm/predicates.md (arm_comparison_operator): Only include
7164         floating-point operators if there is a hardware floating-point unit.
7165         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
7166         deferring to cbranch_cc and cstore_cc respectively.
7167         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
7168         cbranch_cc, cstore_cc): New.
7169         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
7170         arm_compare_op1.
7171         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
7172
7173         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
7174         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
7175         as an argument.
7176         (adjust_insn_length): Adjust calls.
7177         (avr_reorg): Handle (compare (foo) (const_int 0)).
7178         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
7179         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
7180         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
7181         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
7182         (bCC): Remove.
7183         (cbranchqi4, cbranchhi4, cbranchsi4): New.
7184         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
7185
7186         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
7187         (cbranchsi4, cstorebi4, cstoresi4): New.
7188         (movbisi): This insn is duplicate, split it to zero_extend.
7189         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
7190         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
7191         (bfin_optimize_loop): Use cbranch expander.
7192         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
7193         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
7194         (bfin_bimode_comparison_operator): ... this.
7195         (bfin_direct_comparison_operator): New.
7196  
7197         * config/cris/cris.c (cris_normal_notice_update_cc): Look
7198         inside (compare FOO (const_int 0)).
7199         (cris_rtx_costs): Handle ZERO_EXTRACT.
7200         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
7201         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
7202         (*tstdi_v32): Delete.
7203         (*cmpdi_non_v32): Add M alternative for operand 1.
7204         (cmpsi, cmp<mode>): Make private.
7205         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
7206         with COMPARE.
7207         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
7208
7209         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
7210         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
7211         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
7212         (cc_reg_operand): New.
7213         (any_cond): Delete.
7214         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
7215         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
7216         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
7217         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
7218         crx_expand_scond): Delete.
7219
7220         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
7221         (cbranchsi4): New.
7222         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
7223         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
7224
7225         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
7226         cstoresi4, cstoresf4, cstoredf4): New.
7227         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
7228         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
7229         Receive the entire operands array.
7230         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
7231         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
7232         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
7233         Get test/op0/op1 from the operands array.
7234         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
7235
7236         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
7237         (h8300_expand_store): New.
7238         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
7239         (const_int 0)).
7240         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
7241         (h8300_expand_store): New.
7242         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
7243         or do not try to produce (set (cc0) REG).
7244         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
7245         change a compare into a move to a scratch register.  Disable some
7246         peepholes when comparing with zero.
7247         (tstsi, tsthi, tstsi, cmpqi): Make private.
7248         (cmphi): Delete.
7249         (bCC, sCC): Delete.
7250         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
7251         cstoresi4): New.
7252
7253         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
7254         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
7255         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
7256         (ix86_emit_i387_log1p): Use cbranchxf2.
7257         (ix86_expand_setcc): Return void.
7258         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
7259         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
7260         cmp<MODEF>, cmpcc): Remove.
7261         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
7262         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
7263         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
7264         (sCC and bCC expanders): Remove.
7265         (stack_protect_test): Use cbranchcc4.
7266
7267         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
7268         Delete.
7269         (ia64_expand_compare): Accept three rtx by reference and return void.
7270         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
7271         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
7272         from *expr.  Update *expr with the BImode comparison to do.
7273         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
7274         cmptf, bCC, sCC, conditional_trap): Delete.
7275         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
7276         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
7277         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
7278         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
7279         * config/ia64/predicates.md (ia64_cbranch_operator): New.
7280
7281         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
7282         type of last argument.
7283         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
7284         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
7285         use machine mode argument instead of branch_type.  Remove dead
7286         code for floating-point comparisons.
7287         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
7288         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
7289         Remove.
7290         (cbranchsi4, cstoresi4): New.
7291         * config/iq2000/predicates.md (reg_or_const_operand): New.
7292
7293         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
7294         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
7295         (b<code>_op): Rewrite to...
7296         (bcc_op): ... this, using match_operator.
7297         (s<code>_op): Rewrite to...
7298         (scc_op): ... this, using match_operator.
7299         (s<code>_24_op): Rewrite to...
7300         (scc_op_24): ... this, using match_operator.
7301         (s<code>_<mode>): Rewrite to...
7302         (cstore<mode>4): ... this, using match_operator.
7303         (s<code>_<mode>_24): Rewrite to...
7304         (cstore<mode>4_24): ... this, using match_operator.
7305         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
7306         m32c_unpend_compare, m32c_expand_scc): Delete.
7307         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
7308         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
7309         (m32c_expand_movcc): Change NE to EQ if necessary.
7310         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
7311
7312         * config/m32r/m32r-protos.h (gen_cond_store): New.
7313         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
7314         (gen_cond_store): New, from sCC patterns.
7315         (m32r_expand_block_move): Use cbranchsi4.
7316         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
7317         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
7318         (cbranchsi4, cstoresi4): New.
7319         
7320         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
7321         Delete.
7322         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
7323         (m68hc11_notice_update_cc): Look into a compare with 0.
7324         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
7325         Delete.
7326         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
7327         cmphi, cmpqi, bCC): Delete.
7328         (cbranchsi4, cbranchhi4, cbranchqi4): New.
7329         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
7330         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
7331         sets with COMPARE.
7332
7333         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
7334         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
7335         * config/m68k/constraints.md (H): New.
7336         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
7337         the define_insn below.
7338         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
7339         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
7340         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
7341         patterns): Wrap RHS with COMPARE.
7342         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
7343         (*cmpdi_internal): Name this pattern.
7344         (cmpdi): Change to define_insn.
7345         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
7346         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
7347         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
7348         predicate.
7349         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
7350         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
7351         (conditional_trap): Change to...
7352         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
7353         (*conditional_trap): Use the ordered_comparison_operator and
7354         const1_operand predicates.
7355         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
7356         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
7357         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
7358         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
7359
7360         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
7361         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
7362         (mcore_gen_compare): New. 
7363         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
7364         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
7365         (mcore_gen_compare): ... this.
7366         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
7367         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
7368         (stack probe pattern): Use cbranchsi4.
7369
7370         * config/mips/predicates.md (mips_cstore_operator): New.
7371         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
7372         * config/mips/mips.md (any_cond): Delete.
7373         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
7374         always succeed.
7375         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
7376         fixuns_truncsfdi2): Use cbranch patterns.
7377         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
7378         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
7379         Adjust call to mips_expand_conditional_branch.
7380         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
7381         cstore<GPR:mode>4.
7382         * config/mips/mips-protos.h (mips_expand_conditional_branch,
7383         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
7384         * config/mips/mips.c (cmp_operands): Delete.
7385         (mips_emit_compare): Get comparison operands from *op0/*op1.
7386         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
7387         that it succeeds.  Use op0/op1 instead of cmp_operands.
7388         (mips_expand_conditional_branch, mips_expand_conditional_move,
7389         mips_expand_conditional_trap): Likewise.
7390         (mips_block_move_loop): Use cbranch patterns. 
7391         * config/mips/mips.h (cmp_operands): Delete.
7392
7393         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
7394         (mmix_gen_compare_reg): Just return a register in the right CC mode.
7395         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
7396         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
7397         (*cmpcc_folded): Rename to...
7398         (*cmpdi_folded): this.
7399         (*cmpcc): Rename to...
7400         (*cmps): ... this.
7401         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
7402         (bCC): Remove.
7403         (cbranchdi4): New.
7404         (cbranchdf4): New.  Handle invalid comparisons here.
7405         * config/mmix/predicates.md (float_comparison_operator): New.
7406
7407         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
7408         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
7409         * config/mn10300/mn10300.md (tst): Delete.
7410         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
7411         Name these patterns and wrap RHS in a compare.
7412         (*cmpsi): Make this pattern private.  Include tst.
7413         (*cmpsf): Make this pattern private.
7414         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
7415         (compare with zero peepholes): Likewise.
7416         (bCC): Remove.
7417         (cbranchsi4, cbranchsf4): New.
7418         (casesi): Use cbranchsi4.
7419
7420         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
7421         hppa_branch_type): Delete.
7422         (return_addr_rtx): Use cbranchsi4.
7423         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
7424         Emit CCFPmode comparison here.
7425         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
7426         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
7427         hppa_branch_type): Delete.
7428         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
7429         (movsicc, movdicc): Remove references to hppa_compare_op0,
7430         hppa_compare_op1 and compare_from_rtx.
7431         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
7432         (casesi): Use cbranchsi4.
7433
7434         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
7435         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
7436         * config/pdp11/pdp11.md (register_or_const0_operand): New.
7437         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
7438         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
7439         (bCC): Delete.
7440         (cbranchdf4, cbranchhi4, cbranchqi4): New.
7441         (*branch, *branch_inverted): New.
7442
7443         * config/picochip/picochip.md (cbranchhi4): Use
7444         ordered_comparison_operator.
7445         (cmphi, bCC): Remove.
7446
7447         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
7448         (trap_comparison_operator): Delete.
7449         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
7450         rs6000_emit_cbranch): Accept mode and operands.
7451         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
7452         rs6000_compare_fp_p): Delete.   
7453         (rs6000_generate_compare): Accept mode and comparison.  Extract code
7454         and op0/op1 from there.  Replace references to rs6000_compare_op0
7455         and rs6000_compare_op1.
7456         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
7457         extract result from passed operands.
7458         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
7459         extract loc from passed operands.
7460         (rs6000_emit_cmove): Likewise.
7461         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
7462         rs6000_compare_fp_p): Delete.
7463         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
7464         (cbranch<GPR>4, cbranch<FP>4): New.
7465         (cstore<mode>4): New.  Consolidate here all choices about when to use
7466         portable or specialized sCC sequences.
7467         (stack_protect_test): Use cbranchsi4.
7468         (conditional_trap): Replace with ctrap<GPR>4.
7469         (conditional trap insn): Replace trap_comparison_operator with
7470         ordered_comparison_operator. 
7471
7472         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
7473         (s390_emit_prologue): Use ctrap.
7474         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
7475         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
7476         New predicates replacing...
7477         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
7478         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
7479         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
7480         (add<mode>cc): Do not use s390_compare_op0/op1.
7481         (s<code>): Change to...
7482         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
7483         (seq): Change to...
7484         (cstorecc4): ... this.  Handle EQ or NE equally.
7485         (*sne): Un-privatize for use in cstorecc4.
7486         (b<code>): Change to...
7487         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
7488         (conditional_trap): Replace with...
7489         (ctrap<GPR>4, ctrap<FP>4): ... these.
7490         (stack_protect): Use cbranchcc4.
7491
7492         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
7493         * config/score/score-protos.h (score_gen_cmp): Delete.
7494         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
7495         (score_block_move-loop): Use cbranchsi4.
7496         * config/score/score.md (cbranchsi4): New.
7497         (cmpsi, bCC): Delete.
7498         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
7499         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
7500         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
7501         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
7502         * config/score/score3.h (score3_gen_cmp): Delete.
7503         * config/score/score7.h (score7_gen_cmp): Delete.
7504
7505         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
7506         (sh_emit_scc_to_t): ... this.  Return void.
7507         (from_compare): Rename to...
7508         (sh_emit_compare_and_branch): ... this.
7509         (sh_emit_compare_and_set): New.
7510         (sh_expand_t_scc): Accept operands.
7511         * config/sh/predicates.md (sh_float_comparison_operator): New.
7512         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
7513         (prepare_scc_operands): Rename to...
7514         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
7515         arguments.
7516         (sh_emit_cheap_store_flag): New.
7517         (sh_emit_set_t_insn): New.
7518         (from_compare): Rename to...
7519         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
7520         handling of TARGET_SH2E floating point to avoid recursive call.
7521         Generate branch here.
7522         (sh_emit_compare_and_set): New.
7523         (sh_expand_t_scc): Get op0/op1 from arguments.
7524         (sh_emit_cheap_store_flag): New.
7525         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
7526         cases.
7527         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
7528         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
7529         (movsicc, movdicc): Do nothing when it recreated operands from
7530         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
7531         prepare_scc_operands (now sh_emit_scc_to_t).
7532         (udivdi3): Use cstoresi4.
7533         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
7534         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
7535         (cbranchint4_media, cbranchfp4_media): New.
7536         (casesi): Use cbranchdi4.
7537         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
7538         Delete.
7539         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
7540         (movnegt): Remove second operand.
7541         (cbranchsf4, cbranchdf4): New.
7542         (stack_protect): Use cbranchdi4/cbranchsi4.
7543
7544         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
7545         (gen_compare_reg): Accept comparison, extract part of it to...
7546         (gen_compare_reg_1): ... this. 
7547         (gen_compare_operator): Delete.
7548         (gen_v9_scc): Accept separate destination, comparison code and arms.
7549         Do not use sparc_compare_op0/sparc_compare_op1.
7550         (emit_scc_insn, emit_conditional_branch_insn): New.
7551         (emit_v9_brxx): Make static.  Remove useless assertion.
7552         (sparc_emit_float_lib_cmp): Return RTL instead of calling
7553         emit_cmp_insn.
7554         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
7555         * config/sparc/sparc-protos.h (gen_compare_reg,
7556         sparc_emit_float_lib_cmp): Adjust prototype.
7557         (emit_scc_insn, emit_conditional_branch_insn): New.
7558         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
7559         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
7560         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
7561         iterators to the top.
7562         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
7563         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
7564         snedi_special_trunc): Delete.
7565         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
7566         and snedi_special_trunc.
7567         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
7568         cbranchdi4, cbranch<F:mode>4): New.
7569         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
7570         here.  Use gen_compare_reg instead of gen_compare_operator.
7571         (conditional_trap): Replace with...
7572         (ctrapsi4, ctrapdi4): ... this.
7573         (stack_protect_test): Use cbranchcc4.
7574
7575         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
7576         argument to rtx.
7577         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
7578         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
7579         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
7580         from operands[0] or operands[3] depending on is_set.
7581         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
7582         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
7583         cmpdf, bCC), sCC: Remove.
7584         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
7585         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
7586         cstoredf4): New.
7587         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
7588         spu_emit_branch_or_set.
7589
7590         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
7591         Add two arguments.
7592         * config/stormy16/stormy16.h (xstormy16_compare_op0,
7593         xstormy16_compare_op1): Delete.
7594         * config/stormy16/stormy16.c (xstormy16_compare_op0,
7595         xstormy16_compare_op1): Delete. 
7596         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
7597         Adjust calls.
7598         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
7599         (cmphi, cmpsi, bCC): Remove.
7600
7601         * config/v850/v850.md (tstsi, cmpsi): Fold into...
7602         (*cmpsi): ... this one.
7603         (cbranchsi4, cstoresi4): New.
7604         (bCC expanders): Delete.
7605         (sCC insns): Fold into...
7606         (*setcc): ... this one.
7607         (casesi): Do not use gen_cmpsi and gen_bgtu. 
7608         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
7609         (movsicc): Simplify.
7610         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
7611
7612         * config/vax/vax-protos.h (cond_name): New.
7613         (vax_output_conditional_branch): Remove.
7614         * config/vax/vax.c (cond_name): New.
7615         (vax_output_conditional_branch): Remove.
7616         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
7617         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
7618         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
7619         (bit<VAXint>): Wrap source with (compare).
7620         (b<code> and following unnamed pattern): Rename to *branch and
7621         *branch_reversed.  Change macroization to match_operator.
7622         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
7623
7624         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
7625         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
7626         Change last argument to machine_mode.
7627         (xtensa_expand_scc): Add machine_mode argument.
7628         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
7629         (gen_conditional_move, xtensa_expand_conditional_branch,
7630         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
7631         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
7632         Adjust operand numbers.
7633         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
7634         Delete.
7635         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
7636         (cmpsi, cmpsf, b<code>, s<code>): Delete.
7637         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
7638
7639 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7640
7641         * optabs.c (prepare_cmp_insn): Temporarily disable test that
7642         causes spurious differences between trunk and cond-optab branch.
7643
7644 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
7645
7646         PR target/37137
7647         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
7648
7649 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
7650
7651         * tree.c (iterative_hash_pointer): Delete.
7652         (iterative_hash_expr): Short-circuit handling of NULL pointer.
7653         Hash UIDs and versions of SSA names.  Don't special-case built-in
7654         function declarations.
7655
7656 2009-05-11  Ian Lance Taylor  <iant@google.com>
7657
7658         PR bootstrap/40103
7659         * graphite.c: Force -Wc++-compat to only be a warning before
7660         #including "cloog/cloog.h".
7661
7662 2009-05-11  Martin Jambor  <mjambor@suse.cz>
7663
7664         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
7665         
7666 2009-05-11  Jan Hubicka  <jh@suse.cz>
7667
7668         * tree-ssa-loop-ivcanon.c: Include target.h
7669         (struct loop_size): new structure.
7670         (constant_after_peeling): New predicate.
7671         (tree_estimate_loop_size): New function.
7672         (estimated_unrolled_size): Rewrite for new estimates.
7673         (try_unroll_loop_completely): Use new estimates.
7674         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
7675
7676 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7677
7678         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
7679         libcpp interface change.
7680         (spu_macro_to_expand): Likewise.
7681
7682 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
7683
7684         PR tree-optimization/40026
7685         * gimplify.c (gimplify_init_constructor): Change initial conditional
7686         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
7687         optimize_compound_literals_in_ctor.
7688
7689 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
7690
7691         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
7692         New devices.
7693         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
7694
7695 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
7696
7697         * tree-vect-data-refs.c (vect_analyze_group_access): Use
7698         HOST_WIDE_INT for gap.
7699
7700 2009-05-11  Ira Rosen  <irar@il.ibm.com>
7701
7702         PR tree-optimization/40074
7703         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
7704         account in group size and step comparison.
7705
7706 2009-05-11  Richard Guenther  <rguenther@suse.de>
7707
7708         * passes.c (init_optimization_passes): Strip now incorrect comment.
7709         (execute_function_todo): Do not set PROP_alias.
7710         * tree-pass.h (PROP_alias): Remove.
7711         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
7712         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
7713         * tree-nrv.c (pass_return_slot): Likewise.
7714         * tree-object-size.c (pass_object_sizes): Likewise.
7715         * tree-ssa-dom.c (pass_dominator): Likewise.
7716         (pass_phi_only_cprop): Likewise.
7717         * tree-ssa-dse.c (pass_dse): Likewise.
7718         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
7719         (pass_cselim): Likewise.
7720         * tree-ssa-pre.c (pass_pre): Likewise.
7721         (pass_fre): Likewise.
7722         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
7723         * tree-ssa-sink.c (pass_sink_code): Likewise.
7724         * tree-stdarg.c (pass_stdarg): Likewise.
7725         * tree-tailcall.c (pass_tail_calls): Likewise.
7726         * tree-vrp.c (pass_vrp): Likewise.
7727
7728 2009-05-10  Ian Lance Taylor  <iant@google.com>
7729
7730         * basic-block.h (enum profile_status): Break out of struct
7731         control_flow_graph.
7732         * cgraph.h (struct inline_summary): Break out of struct
7733         cgraph_local_info.
7734         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
7735         of struct cgraph_order_sort.
7736         * combine.c (enum undo_kind): New enum, broken out of struct undo.
7737         * cse.c (struct branch_path): Break out of struct
7738         cse_basic_block_data.
7739         * except.h (enum eh_region_type): Break out of struct eh_region.
7740         * gcc.c (enum add_del): Break out of struct modify_target.
7741         * genrecog.c (enum decision_type): Break out of struct decision_test.
7742         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
7743         ggc_pch_data.
7744         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
7745         * regmove.c (enum match_use): New enum, broken out of struct match.
7746         * sched-int.h (enum post_call_group): New enum, broken out of
7747         struct deps.
7748         (struct deps_reg): Break out of struct deps.
7749         * target.h (struct asm_int_op): Break out of struct gcc_target.
7750         * tree-eh.c (struct goto_queue_node): Break out of struct
7751         leh_tf_state.
7752         * tree-inline.h (enum copy_body_cge_which): Break out of
7753         copy_body_data.
7754         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
7755
7756         * c-decl.c (in_struct, struct_types): New static variables.
7757         (pushtag): Add loc parameter.  Change all callers.
7758         (lookup_tag): Add ploc parameter.  Change all callers.
7759         (check_compound_literal_type): New function.
7760         (parser_xref_tag): Add loc parameter.  Change all callers.  If
7761         -Wc++-compat, warn about struct/union/enum types defined within a
7762         struct or union.
7763         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
7764         and loc parameters.  Change all callers.  Change error calls to
7765         error_at, using loc.  For a redefinition, if the location of the
7766         original definition is known, report it.  Set in_struct and
7767         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
7768         (finish_struct): Add new parameters enclosing_in_struct and
7769         enclosing_struct_types.  Change all callers.  Set
7770         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
7771         in the struct.  If in a struct, add this struct to struct_types.
7772         (start_enum): Add loc parameter.  Change all callers.  Use
7773         error_at for errors, using loc.  For a redefinition, if the
7774         location of the original definition is known, report it.  If in a
7775         struct, add this enum type to struct_types.  If -Wc++-compat warn
7776         if in sizeof, typeof, or alignof.
7777         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
7778         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
7779         (c_parser_enum_specifier): Get enum location for start_enum.
7780         (c_parser_struct_or_union_specifier): Get struct location for
7781         start_struct.  Save in_struct and struct_types status between
7782         start_struct and finish_struct.
7783         (c_parser_cast_expression): Get location of cast.
7784         (c_parser_alignof_expression): Get location of type.
7785         (c_parser_postfix_expression): Likewise.
7786         (c_parser_postfix_expression_after_paren_type): Add type_loc
7787         parameter.  Change all callers.  Call check_compound_literal_type.
7788         Use type_loc for error about variable size type.
7789         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
7790         of an enum constant from an enum type defined in a struct or union.
7791         (c_cast_expr): Add loc parameter.  Change all callers.  If
7792         -Wc++-compat, warn about defining a type in a cast.
7793         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
7794         (start_enum, start_struct, finish_struct): Update declarations.
7795         (parser_xref_tag, c_cast_expr): Update declarations.
7796         (check_compound_literal_type): Declare.
7797
7798 2009-05-11  Ben Elliston  <bje@au.ibm.com>
7799
7800         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
7801         for recent libcpp interface change.
7802         (rs6000_macro_to_expand): Likewise.
7803
7804 2009-05-10  Michael Matz  <matz@suse.de>
7805
7806         PR target/40031
7807         * config/arm/arm.c (require_pic_register): Emit on entry edge,
7808         not at entry of function.
7809
7810 2009-05-10  Richard Guenther  <rguenther@suse.de>
7811
7812         PR tree-optimization/40081
7813         Revert
7814         * tree-sra.c (instantiate_element): Instantiate scalar replacements
7815         using the main variant of the element type.  Do not fiddle with
7816         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
7817
7818         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
7819         structs with volatile fields.
7820
7821 2009-05-10  Jan Hubicka  <jh@suse.cz>
7822
7823         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
7824         (estimate_move_cost): Assert that it does not get called for
7825         VOID_TYPE_P.
7826         (estimate_num_insns): Skip VOID types in argument handling.
7827         (optimize_inline_calls): Delete unreachable blocks and verify that
7828         callgraph is valid.
7829
7830 2009-05-10  Jan Hubicka  <jh@suse.cz>
7831
7832         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
7833         * cgraph.c (cgraph_mark_address_taken_node): New function.
7834         (dump_cgraph_node): Dump new flag.
7835         * cgraph.h (struct cgraph_node): Add address_taken.
7836         (cgraph_mark_address_taken_node): New function.
7837         * ipa.c (cgraph_postorder): Prioritize functions with address taken
7838         since new direct calls can be born.
7839
7840 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
7841
7842         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
7843         tok->val.node.node.
7844
7845 2009-05-10  Jan Hubicka  <jh@suse.cz>
7846
7847         PR middle-end/40084
7848         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
7849         argument; rewrite.
7850         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
7851         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
7852         * tree-inline.c (copy_bb): Set frequency correctly.
7853         (fold_marked_statements): Update call to
7854         cgraph_update_edges_for_call_stmt.
7855
7856 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
7857
7858         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
7859         identifiers in diagnostics.
7860         * config/arm/arm.c (arm_handle_fndecl_attribute,
7861         arm_handle_isr_attribute): Likewise.
7862         * config/avr/avr.c (avr_handle_progmem_attribute,
7863         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
7864         * config/bfin/bfin.c (handle_int_attribute,
7865         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
7866         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
7867         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
7868         Likewise.
7869         * config/darwin.c (darwin_handle_kext_attribute,
7870         darwin_handle_weak_import_attribute): Likewise.
7871         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
7872         h8300_handle_eightbit_data_attribute,
7873         h8300_handle_tiny_data_attribute): Likewise.
7874         * config/i386/i386.c (ix86_handle_cconv_attribute,
7875         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
7876         * config/i386/winnt.c (ix86_handle_shared_attribute,
7877         ix86_handle_selectany_attribute): Likewise.
7878         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
7879         * config/m32c/m32c.c (function_vector_handler): Likewise.
7880         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
7881         m68hc11_handle_fntype_attribute): Likewise.
7882         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
7883         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
7884         * config/mips/mips.c (mips_insert_attributes,
7885         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
7886         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
7887         rs6000_handle_struct_attribute): Likewise.
7888         * config/sh/sh.c (sh_insert_attributes,
7889         sh_handle_resbank_handler_attribute,
7890         sh_handle_interrupt_handler_attribute,
7891         sh2a_handle_function_vector_handler_attribute,
7892         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
7893         Likewise.
7894         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
7895         * config/spu/spu.c (spu_handle_fndecl_attribute,
7896         spu_handle_vector_attribute): Likewise.
7897         * config/stormy16/stormy16.c
7898         (xstormy16_handle_interrupt_attribute): Likewise.
7899         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
7900         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
7901
7902 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
7903
7904         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
7905         (pp_translate_identifiers): New.
7906         (pp_identifier): Only conditionally translate identifier to locale
7907         character set.
7908         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
7909         (pp_base_tree_identifier): Only conditionally translate identifier
7910         to locale character set.
7911         * c-pretty-print.c (M_): Define.
7912         (pp_c_type_specifier, pp_c_primary_expression): Mark English
7913         fragments for conditional translation with M_.
7914         * tree-pretty-print.c (maybe_init_pretty_print): Disable
7915         identifier translation.
7916
7917 2009-05-10  Richard Guenther  <rguenther@suse.de>
7918
7919         PR tree-optimization/40081
7920         * tree-sra.c (instantiate_element): Instantiate scalar replacements
7921         using the main variant of the element type.  Do not fiddle with
7922         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
7923
7924 2009-05-09  Jan Hubicka  <jh@suse.cz>
7925
7926         PR middle-end/40080
7927         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
7928         indirect calls; verify cgraph afterwards.
7929
7930 2009-05-09  Jan Hubicka  <jh@suse.cz>
7931
7932         PR bootstrap/40082
7933         * ipa.c (update_inlined_to_pointer): New function.
7934         (cgraph_remove_unreachable_nodes): Use it.
7935
7936 2009-05-09  Jan Hubicka  <jh@suse.cz>
7937
7938         * tree-eh.c (struct leh_state): Remove prev_try.
7939         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
7940         not track prev_try.
7941         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
7942         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
7943         remove_eh_handler_and_replace, foreach_reachable_handler,
7944         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
7945         * except.h (struct eh_region): Remove eh_region_u_cleanup.
7946         (gen_eh_region_cleanup): Update prototype.
7947
7948 2009-05-09  Jan Hubicka  <jh@suse.cz>
7949
7950         PR middle-end/40043
7951         * except.c (copy_eh_region): Always set prev_try.
7952         (redirect_eh_edge_to_label): Find outer try.
7953         (foreach_reachable_handler): When looking for prev try
7954         handle case where previous try is not going to be taken.
7955
7956 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
7957
7958         PR tree-optimization/40049
7959         * tree-vect-stmts.c (vectorizable_operation): If the machine has
7960         only vector/vector shifts, convert the type of the constant to the
7961         appropriate type to avoid building incorrect trees, which
7962         eventually have problems with garbage collection.
7963
7964 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
7965
7966         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
7967         -1 for complex floating-point types if honoring signed zeros.
7968
7969 2009-05-08  Jan Hubicka  <jh@suse.cz>
7970
7971         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
7972         argument; handle correctly when profile is absent.
7973         (build_cgraph_edges): Update.
7974         (rebuild_cgraph_edges): Update.
7975         * cgraph.c: Do not include varray.h.
7976         (cgraph_set_call_stmt_including_clones): New function.
7977         (cgraph_create_edge_including_clones): Likewise
7978         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
7979         (cgraph_update_edges_for_call_stmt): Handle clones.
7980         (cgraph_remove_node): Handle clone tree.
7981         (cgraph_remove_node_and_inline_clones): New function.
7982         (dump_cgraph_node): Dump clone tree.
7983         (cgraph_clone_node): Handle clone tree.
7984         (clone_function_name): Bring here from tree-inline.c.
7985         (cgraph_create_virtual_clone): New function.
7986         * cgraph.h (ipa_replace_map): Move here from ipa.h.
7987         (cgraph_clone_info): New function.
7988         (strut cgraph_node): Add clone_info and new clone tree pointers.
7989         (cgraph_remove_node_and_inline_clones,
7990         cgraph_set_call_stmt_including_clones,
7991         cgraph_create_edge_including_clones,
7992         cgraph_create_virtual_clone): Declare.
7993         (cgraph_function_versioning): Use VEC argument.
7994         (compute_call_stmt_bb_frequency): Update prototype.
7995         (cgraph_materialize_all_clones): New function.
7996         * ipa-cp.c (ipcp_update_cloned_node): Remove.
7997         (ipcp_create_replace_map): Update to VECtors.
7998         (ipcp_update_callgraph): Use virtual clones.
7999         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
8000         (ipcp_update_profiling): Do not update local profiling.
8001         (ipcp_insert_stage): Use VECtors and virtual clones.
8002         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
8003         (clone_of_p): New function.
8004         (cgraph_preserve_function_body_p): Use clone tree.
8005         (cgraph_optimize): Materialize clones.
8006         (cgraph_function_versioning): Update for VECtors.
8007         (save_inline_function_body): Use clone tree.
8008         (cgraph_materialize_clone): New function.
8009         (cgraph_materialize_all_clones): Likewise.
8010         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
8011         * ipa.c: Include gimple.h.
8012         (cgraph_remove_unreachable_nodes): Use clone tree.
8013         * ipa-prop.c (ipa_note_param_call): Update call to
8014         compute_call_stmt_bb_frequencycall.
8015         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
8016         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
8017         (copy_bb): Handle updating of clone tree; add new edge when new call
8018         appears.
8019         (expand_call_inline): Be strict about every call having edge.
8020         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
8021         (delete_unreachable_blocks_update_callgraph): New function.
8022         (tree_function_versioning): Use VECtors; always remove unreachable
8023         blocks and fold conditionals.
8024         * tree-inline.h: Do not include varray.h.
8025         (tree_function_versioning): Remove.
8026         * Makefile.in (GTFILES): Remove tree-inline.c
8027         * passes.c (do_per_function): Do only functions having body.
8028         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
8029         tree.
8030
8031 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
8032             Andrew Morrow  <acm@google.com>
8033
8034         PR c/36892
8035         * c-common.c (c_common_attribute_table): Permit deprecated
8036         attribute to take an optional argument.
8037         (handle_deprecated_attribute): If the optional argument to
8038         __attribute__((deprecated)) is not a string ignore the attribute
8039         and emit a warning.
8040
8041         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
8042         * c-typeck.c (build_component_ref): Likewise.
8043         (build_external_ref): Likewise.
8044
8045         * toplev.c (warn_deprecated_use): Add an attribute argument.
8046         Emit the message associated with __attribute__((deprecated)).
8047
8048         * toplev.h (warn_deprecated_use): Updated.
8049
8050         * doc/extend.texi: Document new optional parameter to
8051         __attribute__((deprecated))
8052
8053 2009-05-08  Michael Eager <eager@eagercon.com>
8054
8055         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
8056         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
8057
8058 2009-05-08  Richard Guenther  <rguenther@suse.de>
8059
8060         PR tree-optimization/40062
8061         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
8062         Avoid exponential behavior.
8063
8064 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
8065
8066         PR rtl-optimization/33928
8067         PR 26854
8068         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
8069         process_uses, build_single_def_use_links): New.
8070         (update_df): Update use_def_ref.
8071         (forward_propagate_into): Use get_def_for_use instead of use-def
8072         chains.
8073         (fwprop_init): Call build_single_def_use_links and let it initialize
8074         dataflow.
8075         (fwprop_done): Free use_def_ref.
8076         (fwprop_addr): Eliminate duplicate call to df_set_flags.
8077         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
8078         df_rd_simulate_one_insn): New.
8079         (df_rd_bb_local_compute_process_def): Update head comment.
8080         (df_chain_create_bb): Use the new RD simulation functions.
8081         * df.h (df_rd_simulate_artificial_defs_at_top, 
8082         df_rd_simulate_one_insn): New.
8083         * opts.c (decode_options): Enable fwprop at -O1.
8084         * doc/invoke.texi (-fforward-propagate): Document this.
8085
8086 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
8087
8088         PR c/24581
8089         * c-typeck.c (build_binary_op): Handle arithmetic between one real
8090         and one complex operand specially.
8091         * tree-complex.c (some_nonzerop): Do not identify a real value as
8092         zero if flag_signed_zeros.
8093
8094 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
8095
8096         PR rtl-optimization/33928
8097         * loop-invariant.c (record_use): Fix && vs. || mishap.
8098
8099 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
8100
8101         PR rtl-optimization/33928
8102         * loop-invariant.c (struct use): Add addr_use_p.
8103         (struct def): Add n_addr_uses.
8104         (struct invariant): Add cheap_address.
8105         (create_new_invariant): Set cheap_address.
8106         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
8107         (record_uses): Pass df_ref to record_use.
8108         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
8109         used only as such.
8110
8111 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
8112
8113         * config/sh/sh.c: Do not include c-pragma.h.
8114
8115 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8116
8117         * config/spu/spu.c: Remove include of c-common.h.
8118
8119 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
8120
8121         PR c/39037
8122         * c-common.h (mark_valid_location_for_stdc_pragma,
8123         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
8124         clear_float_const_decimal64, float_const_decimal64_p): New.
8125         * c.opt (Wunsuffixed-float-constants): New.
8126         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
8127         unsuffixed float constant, handle new warning.
8128         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
8129         * c-decl.c (c_scope): New flag float_const_decimal64.
8130         (set_float_const_decimal64, clear_float_const_decimal64,
8131         float_const_decimal64_p): New.
8132         (push_scope): Set new flag.
8133         * c-parser.c (c_parser_translation_unit): Mark when it's valid
8134         to use STDC pragmas.
8135         (c_parser_external_declaration): Ditto.
8136         (c_parser_compound_statement_nostart): Ditto.
8137         * c-pragma.c (valid_location_for_stdc_pragma,
8138         mark_valid_location_for_stdc_pragma,
8139         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
8140         handle_pragma_float_const_decimal64): New.
8141         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
8142         * cp/semantics.c (valid_location_for_stdc_pragma_p,
8143         set_float_const_decimal64, clear_float_const_decimal64,
8144         float_const_decimal64_p): New dummy functions.
8145         * doc/extend.texi (Decimal Float): Remove statement that the
8146         pragma, and suffix for double constants, are not supported.
8147         * doc/invoke.texi (Warning Options): List new option.
8148         (-Wunsuffixed-float-constants): New.
8149
8150 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
8151
8152         * config/i386/i386.c: Do not include c-common.h.
8153
8154 2009-05-07  Mark Heffernan  <meheff@google.com>
8155
8156         * doc/invoke.texi (Debugging Options): Document change of debugging
8157         dump location.
8158         * opts.c (decode_options): Make dump_base_name relative to
8159         aux_base_name directory.
8160
8161 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
8162
8163         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
8164         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
8165
8166 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
8167
8168         * Makefile.in (install-plugin): Simplify a bit.
8169
8170 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
8171
8172         * Makefile.in (OBJS-common): Add regcprop.o.
8173         (regcprop.o): New.
8174         * timevar.def (TV_CPROP_REGISTERS): New.
8175         * regrename.c (regrename_optimize): Return 0.
8176         (rest_of_handle_regrename): Delete.
8177         (pass_rename_registers): Point to regrename_optimize.
8178         (struct value_data_entry, struct value_data, 
8179         kill_value_one_regno, kill_value_regno, kill_value,
8180         set_value_regno, init_value_data, kill_clobbered_value,
8181         kill_set_value, kill_autoinc_value, copy_value,
8182         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
8183         replace_oldest_value_reg, replace_oldest_value_addr,
8184         replace_oldest_value_mem, copyprop_hardreg_forward_1,
8185         debug_value_data, validate_value_data): Move...
8186         * regcprop.c: ... here.
8187         (rest_of_handle_cprop): Delete.
8188         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
8189
8190 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
8191
8192         PR middle-end/40057
8193         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
8194         GEN_INT for 1 << bitnum.
8195         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
8196         build_int_cst_type.
8197
8198 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
8199
8200         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
8201         Remove wrong description of "nand" operation.
8202
8203 2009-05-06  Richard Guenther  <rguenther@suse.de>
8204             Adam Nemet  <anemet@caviumnetworks.com>
8205
8206         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
8207         comment.  Add that if LHS is not a gimple register, then RHS1 has
8208         to be a single object (GIMPLE_SINGLE_RHS).
8209
8210 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
8211
8212         * expr.c (get_def_for_expr): Move it up in the file.
8213         (store_field): When expanding a bit-field store, look at the
8214         defining gimple stmt for the masking conversion.
8215
8216 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
8217
8218         PR middle-end/39986
8219         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
8220         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
8221         32-bit memcpy into long.
8222
8223 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
8224
8225         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
8226         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
8227         new_reg_loc_descr.
8228         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
8229         instead of appending DW_OP_deref*.
8230
8231 2009-05-06  Michael Matz  <matz@suse.de>
8232
8233         PR middle-end/40021
8234         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
8235         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
8236
8237 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
8238
8239         * Makefile.in (install-plugin): Fix srcdir handling.
8240
8241 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
8242
8243         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
8244         when processing for not_regs_needed bitmap.
8245         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
8246         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
8247         handling it for rhs. 
8248
8249 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
8250
8251         * config/i386/i386.md (unnamed inc/dec peephole): Use
8252         optimize_insn_for_size_p instead of optimize_size.
8253         * config/i386/predicates.md (incdec_operand): Likewise.
8254         (aligned_operand): Likewise.
8255         * config/i386/sse.md (divv8sf3): Likewise.
8256         (sqrtv8sf2): Likewise.
8257
8258 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
8259
8260         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
8261
8262         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
8263
8264 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
8265
8266         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
8267         ssemodesuffixf2c with avxmodesuffixf2c.
8268
8269 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
8270
8271         PR c/40032
8272         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
8273
8274 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
8275
8276         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
8277         (struct tree_base): Adjust spacing for 8 bit boundaries.
8278         (struct tree_decl_common): Add decl_by_reference_flag bit.
8279         (DECL_BY_REFERENCE): Adjust.
8280         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
8281         print DECL_BY_REFERENCE bit.
8282         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
8283         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
8284         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
8285         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
8286         unconditionally.
8287
8288         PR middle-end/39666
8289         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
8290         range of the type, but default label is missing, add it with one
8291         of the existing labels instead of adding a new label for it.
8292
8293 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
8294
8295         * dwarf.h: Remove.
8296
8297 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
8298
8299         * Makefile.in (enable_plugin, plugin_includedir): New.
8300         (install): Depend on install-plugin.
8301         (PLUGIN_HEADERS): New.
8302         (install-plugin): New.
8303         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
8304
8305 2009-05-05  Richard Guenther  <rguenther@suse.de>
8306
8307         PR tree-optimization/40022
8308         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
8309         the only vuse.
8310         (phivn_valid_p): Fix tuplification error, simplify.
8311         (phiprop_insert_phi): Add dumps.
8312         (propagate_with_phi): Simplify.
8313
8314 2009-05-05  Richard Guenther  <rguenther@suse.de>
8315
8316         PR middle-end/40023
8317         * builtins.c (gimplify_va_arg_expr): Properly build the address.
8318
8319 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
8320
8321         * tree.h (strip_float_extensions): Remove duplicate declaration.
8322         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
8323         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
8324         block_ultimate_origin): Rearrange the declarations line to match the
8325         comment that indicates the .c file which the functions are defined.
8326         (dwarf2out_*, set_decl_rtl): Add comment.
8327         (get_base_address): Adjust comment.
8328         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
8329         declarations line and add comment.
8330         (is_builtin_name): Add blank after function name, for clarity.
8331
8332 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
8333
8334         * attribs.c (decl_attributes): Use %qE for identifiers in
8335         diagnostics.
8336         * cgraphunit.c (verify_cgraph_node): Translate function names to
8337         locale character set in diagnostics.
8338         * coverage.c (get_coverage_counts): Use %qE for identifiers in
8339         diagnostics.
8340         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
8341         Document that functions are named in UTF-8.
8342         * expr.c (expand_expr_real_1): Translate function names to locale
8343         character set in diagnostics.
8344         * gimplify.c (omp_notice_variable, omp_is_private,
8345         gimplify_scan_omp_clauses): Use %qE for identifiers in
8346         diagnostics.
8347         * langhooks.c (lhd_print_error_function): Translate function names
8348         to locale character set.
8349         * langhooks.h (decl_printable_name): Document that return value is
8350         in internal character set.
8351         * stmt.c: Include pretty-print.h
8352         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
8353         diagnostics.
8354         (resolve_operand_name_1): Translate named operand name to locale
8355         character set.
8356         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
8357         diagnostics.
8358         * toplev.c (announce_function): Translate function names to locale
8359         character set.
8360         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
8361         (default_tree_printer): Use pp_identifier or translate identifiers
8362         to locale character set.  Mark "<anonymous>" for translation.
8363         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
8364         for identifiers in diagnostics.
8365         * tree.c (handle_dll_attribute): Use %qE for identifiers in
8366         diagnostics.
8367         * varasm.c (output_constructor): Use %qE for identifiers in
8368         diagnostics.
8369
8370 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
8371
8372         * configure.ac: use ` ` instead of $()
8373         * configure: Regenerate.
8374
8375 2009-05-05  Ben Elliston  <bje@au.ibm.com>
8376
8377         * config/pa/linux-atomic.c: Eliminate conditional include of
8378         errno.h on non-LP64 systems to simplify build requirements.
8379
8380 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
8381
8382         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
8383         diagnostics.
8384         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
8385         and pass value to identifier_to_locale.
8386         (warn_variable_length_array): Make name a tree.
8387         (grokdeclarator): Separate diagnostic texts for named and unnamed
8388         declarators.  Use %qE for named declarators.
8389         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
8390         diagnostics.
8391         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
8392         identifiers in diagnostics.
8393         * c-typeck.c (push_member_name, start_init): Pass identifiers to
8394         identifier_to_locale.  Mark "anonymous" strings for translation.
8395
8396 2009-05-04  Michael Eager <eager@eagercon.com>
8397
8398         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
8399         address for DImode/DFmode only if double-precision FP regs.
8400
8401 2009-05-04  Michael Eager <eager@eagercon.com>
8402
8403         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
8404         TARGET_SINGLE_FLOAT check.
8405
8406 2009-05-04  Michael Eager <eager@eagercon.com>
8407
8408         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
8409
8410 2009-05-04  Michael Eager <eager@eagercon.com>
8411
8412         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
8413         * config/rs6000/t-xilinx: New
8414
8415 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
8416
8417         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
8418         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
8419         * gcc/explow.c (memory_address): Use target hook.
8420         * gcc/targhooks.c (default_legitimize_address): New.
8421         * gcc/targhooks.h (default_legitimize_address): New.
8422         * gcc/target.h (legitimize_address): New.
8423         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
8424         (TARGET_INITIALIZER): Include it.
8425         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
8426
8427         * config/bfin/bfin-protos.h (legitimize_address): Remove.
8428         * config/bfin/bfin.c (legitimize_address): Remove.
8429         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
8430         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
8431         Remove.
8432         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
8433         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
8434
8435         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
8436         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
8437         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
8438         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
8439         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
8440         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
8441         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
8442         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
8443         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
8444         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
8445         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
8446         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
8447         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
8448         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
8449         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
8450         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
8451         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
8452         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
8453         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
8454         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
8455         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
8456         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
8457         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
8458
8459         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
8460         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
8461         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
8462         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
8463         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
8464         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
8465         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
8466         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
8467         (thumb_legitimize_address): Delete.
8468         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
8469         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
8470         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
8471         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
8472         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
8473         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
8474         Delete.
8475         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
8476         Delete.
8477
8478         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
8479         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
8480         * config/m32r/m32r.c (m32r_legitimize_address): New.
8481         * config/m68k/m68k.c (m68k_legitimize_address): New.
8482         * config/score/score.c (score_legitimize_address): Standardize.
8483         * config/score/score3.c (score3_legitimize_address): Standardize.
8484         * config/score/score3.h (score3_legitimize_address): Adjust.
8485         * config/score/score7.c (score7_legitimize_address): Standardize.
8486         * config/score/score7.h (score7_legitimize_address): Adjust.
8487         * config/sh/sh.c (sh_legitimize_address): New.
8488         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
8489
8490         * gcc/config/s390/s390.c (legitimize_address): Rename to...
8491         (s390_legitimize_address): ... this.
8492         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
8493         (sparc_legitimize_address): ... this.
8494         * gcc/config/i386/i386.c (legitimize_address): Rename to...
8495         (ix86_legitimize_address): ... this.
8496         * gcc/config/avr/avr.c (legitimize_address): Rename to...
8497         (avr_legitimize_address): ... this.
8498         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
8499         (mn10300_legitimize_address): ... this.
8500         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
8501         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
8502         (alpha_expand_mov): Adjust call.
8503
8504         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
8505         * config/spu/spu.c (spu_legitimize_address): Likewise.
8506         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
8507         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
8508
8509 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
8510
8511         * intl.c (locale_encoding, locale_utf8): New.
8512         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
8513         * intl.h (locale_encoding, locale_utf8): Declare.
8514         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
8515         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
8516         New.
8517         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
8518         argument.
8519         (pp_tree_identifier): Define to call pp_base_tree_identifier.
8520         (pp_base_tree_identifier): Declare as function.
8521         (identifier_to_locale): Declare.
8522         * Makefile.in (pretty-print.o): Update dependencies.
8523         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
8524
8525 2009-05-04  Richard Guenther  <rguenther@suse.de>
8526
8527         PR middle-end/40015
8528         * builtins.c (fold_builtin_memory_op): Do not decay to element
8529         type if the size matches the whole array.
8530
8531 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
8532
8533         * expmed.c (synth_mult): When trying out a shift, pass the result
8534         of a signed shift.
8535
8536 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
8537
8538         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
8539         (shiftsub1_cost): New.
8540         (init_expmed): Compute shiftsub1_cost.
8541         (synth_mult): Optimize multiplications by constants of the form
8542         -(2^^m-1) for some constant positive integer m.
8543
8544 2009-05-03  Richard Guenther  <rguenther@suse.de>
8545
8546         PR c/39983
8547         * c-typeck.c (array_to_pointer_conversion): Do not built
8548         ADDR_EXPRs of arrays of pointer-to-element type.
8549         * c-gimplify.c (c_gimplify_expr): Revert change fixing
8550         up wrong ADDR_EXPRs after-the-fact.
8551         * c-common.c (strict_aliasing_warning): Strip pointer
8552         conversions for obtaining the original type.
8553         * builtins.c (fold_builtin_memset): Handle array types.
8554         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
8555         and array types
8556
8557 2009-05-03  Richard Guenther  <rguenther@suse.de>
8558
8559         PR middle-end/23329
8560         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
8561         Do not lose casts from array types with unknown extent to array
8562         types with known extent.
8563         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
8564         alias set compatibility.
8565
8566 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8567
8568         * flags.h (extra_warnings): Delete.
8569         * toplev.c (process_options): Handle Wuninitialized here.
8570         * opts.c (extra_warnings): Delete.
8571         (set_Wextra): Delete.
8572         (common_handle_option): -Wextra can be handled automatically.
8573         * c-opts.c (c_common_handle_option): Delete obsolete code.
8574         (c_common_post_options): Simplify comment.
8575         * common.opt (W): Add Var.
8576         (Wextra): Add Var.
8577         (Wuninitialized): Initialize to -1.
8578
8579 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
8580             Richard Guenther  <rguenther@suse.de>
8581
8582         * expr.c (get_def_for_expr): New function.
8583         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
8584         SSA rather than trees.
8585         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
8586         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
8587         
8588 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
8589
8590         * c-common.c (reswords): Add _Imaginary.
8591         * c-common.c (enum rid): Add RID_IMAGINARY.
8592
8593 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
8594
8595         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
8596         Patch by Richard Guenther.
8597
8598 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
8599
8600         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
8601         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
8602         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
8603         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
8604         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
8605         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
8606         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
8607         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
8608         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
8609         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
8610         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
8611         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
8612         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
8613         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
8614         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
8615         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
8616         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
8617         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
8618
8619 2009-05-02  Richard Guenther  <rguenther@suse.de>
8620
8621         PR tree-optimization/39940
8622         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
8623         doing so.
8624
8625 2009-05-02  Richard Guenther  <rguenther@suse.de>
8626
8627         PR middle-end/40001
8628         * tree-ssa.c (execute_update_addresses_taken): Properly check
8629         if we can mark a variable DECL_GIMPLE_REG_P.
8630         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
8631         back to the end of the function.
8632         (is_gimple_reg_type): Remove complex type special casing.
8633         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
8634         if not optimizing.
8635
8636 2009-05-02  Ben Elliston  <bje@au.ibm.com>
8637
8638         * doc/collect2.texi (Collect2): Document search path behaviour
8639         when configured with --with-ld.
8640
8641 2009-05-02  Jan Hubicka  <jh@suse.cz>
8642
8643         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
8644         parameter; update callers.
8645         (coalesce_cost_edge): EH edges are costier because they needs
8646         splitting even if not critical and even more costier when there are
8647         multiple EH predecestors.
8648
8649 2009-05-02  Jan Hubicka  <jh@suse.cz>
8650
8651         * except.c (remove_eh_handler_and_replace): Handle updating after
8652         removing TRY blocks.
8653
8654 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
8655
8656         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
8657
8658 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
8659
8660         * varasm.c: Do not include c-pragma.h.
8661         * attribs.c: Do not incude c-common.h.
8662
8663 2009-05-01  Michael Matz  <matz@suse.de>
8664
8665         * calls.c (initialize_argument_information): Handle SSA names like
8666         decls with a non MEM_P DECL_RTL.
8667
8668 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
8669
8670         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
8671         * ipa-utils.c: Likewise.
8672         * ipa-type-escape.c: Likewise.
8673         * cgraphunit.c Do not include c-common.h.
8674         * ipa-pure-const.c: Likewise.
8675         * tree-if-conv.c: Likewise.
8676         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
8677         * ipa-struct-reorg.c: Likewise.
8678         * tree-nomudflap.c: Likewise.
8679         * tree-ssa-structalias.c: Likewise.
8680
8681 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
8682
8683         * store-motion.c: Many cleanups to make this pass a first-class
8684         citizen instead of an appendix to gcse load motion.  Add TODO list
8685         to make this pass faster/cleaner/better.
8686
8687         (struct ls_expr): Post gcse.c-split cleanups.
8688         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
8689         "stores" field to "avail_stores".
8690         (pre_ldst_mems): Rename to store_motion_mems.
8691         (pre_ldst_table): Rename to store_motion_mems_table.
8692         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
8693         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
8694         (ldst_entry): Rename to st_expr_entry, update users.
8695         (free_ldst_entry): Rename to free_st_expr_entry, update users.
8696         (free_ldst_mems): Rename to free_store_motion_mems, update users.
8697         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
8698         update caller.
8699         (first_ls_expr): Rename to first_st_expr, update users.
8700         (next_ls_expr): Rename to next_st_expr, update users.
8701         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
8702         fields properly for store motion instead of names inherited from load
8703         motion in gcse.c.
8704         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
8705         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
8706         are done with it.
8707
8708         (ae_kill): Rename to st_kill, update users.
8709         (ae_gen): Rename to st_avloc, update users.
8710         (transp): Rename to st_transp, update users.
8711         (pre_insert_map): Rename to st_insert_map, update users.
8712         (pre_delete_map): Rename to st_delete_map, update users.
8713         (insert_store, build_store_vectors, free_store_memory,
8714         one_store_motion_pass): Update for abovementioned changes.
8715
8716         (gcse_subst_count, gcse_create_count): Remove.
8717         (one_store_motion_pass): New statistics counters "n_stores_deleted"
8718         and "n_stores_created", local variables.
8719
8720         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
8721         use for_each_rtx.
8722
8723         (regvec, compute_store_table_current_insn): Remove.
8724         (reg_set_info, reg_clear_last_set): Remove.
8725         (compute_store_table): Use DF caches instead of local dataflow
8726         solvers.
8727
8728 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
8729
8730         * c-objc-common.c (c_tree_printer): Print identifiers with
8731         pp_identifier, not pp_string.  Mark "({anonymous})" for
8732         translation.
8733         * c-pretty-print.c (pp_c_ws_string): New.
8734         (pp_c_cv_qualifier, pp_c_type_specifier,
8735         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
8736         pp_c_storage_class_specifier, pp_c_function_specifier,
8737         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
8738         pp_c_primary_expression, pp_c_postfix_expression,
8739         pp_c_unary_expression, pp_c_shift_expression,
8740         pp_c_relational_expression, pp_c_equality_expression,
8741         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
8742         use pp_string and pp_c_ws_string in place of pp_identifier and
8743         pp_c_identifier for non-identifiers.  Mark English strings for
8744         translation.
8745         * c-pretty-print.h (pp_c_ws_string): Declare.
8746
8747 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
8748             Roland McGrath <roland@redhat.com>
8749
8750         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
8751         (ENABLE_LD_BUILDID): New configuration option.
8752         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
8753         (LINK_BUILDID_SPEC): New macro.
8754         (init_spec): If defined, prepend it between LINK_EH_SPEC and
8755         link_spec.
8756         * doc/install.texi: Document --enable-linker-build-id option.
8757         * configure: Rebuild.
8758         * config.in: Rebuild.
8759
8760 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
8761
8762         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
8763         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
8764         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
8765         MIPS_GP_SAVE_AREA_SIZE.
8766         * config/mips/mips.c (struct mips_frame_info): Update comment
8767         before arg_pointer_offset and hard_frame_pointer_offset.
8768         (mips_compute_frame_info): Update diagram before function: to
8769         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
8770         indicate the position of frame_pointer_rtx with -fstack-protector and
8771         to show args_size.  Don't allocate cprestore area for leaf functions
8772         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
8773         cprestore_size.
8774         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
8775
8776 2009-04-30  Michael Matz  <matz@suse.de>
8777
8778         PR tree-optimization/39955
8779         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
8780
8781 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
8782
8783         * ira.c (setup_cover_and_important_classes):  Use safe macro
8784         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
8785         directly.
8786         * genpreds.c (write_tm_preds_h):  Output suitable definition of
8787         REG_CLASS_FOR_CONSTRAINT.
8788
8789 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
8790
8791         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
8792         instead of an int.
8793         * bitmap.c (bitmap_descriptor): Likewise.
8794         * ggc-common.c (loc_descriptor): Likewise.
8795         * varray.c (varray_descriptor): Likewise.
8796         * vec.c (vec_descriptor): Likewise.
8797
8798 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
8799
8800         * Makefile.in (dce.o): Add $(EXCEPT_H).
8801         * dce.c: Include except.h and delete redundant vector definitions.
8802         (deletable_insn_p): Return false for non-call insns that can throw
8803         if DF is running.
8804
8805 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
8806
8807         * gcse.c (ae_gen): Remove.
8808         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
8809         and make non-static function to make it available in store-motion.c.
8810         Update call sites with search-and-replace.
8811         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
8812         extract_mentioned_regs, extract_mentioned_regs_helper,
8813         find_moveable_store, compute_store_table, load_kills_store, find_loads,
8814         store_killed_in_insn, store_killed_after, store_killed_before,
8815         build_store_vectors, insert_insn_start_basic_block, insert-store,
8816         remove_reachable_equiv_notes, replace_store_insn, delete_store,
8817         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
8818         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
8819         * store-motion.c: ...new file.  Also copy data structures from gcse.c
8820         and clean up to remove parts not used by store motion.
8821         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
8822         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
8823
8824 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
8825
8826         PR target/38571
8827         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
8828         when optimizing for size.
8829
8830 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
8831
8832         * gcse.c (gcse_constant_p): Fix typo in last change.
8833
8834 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
8835
8836         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
8837
8838 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
8839
8840         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
8841
8842 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
8843
8844         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
8845         CONST_HIGH_PART result.
8846
8847 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
8848
8849         * config/avr/avr.c (initial_elimination_offset): Rename to
8850         avr_initial_elimination_offset.
8851         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
8852         change return type to bool.
8853         (avr_can_eliminate): New function.
8854         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
8855         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
8856         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
8857         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
8858         avr_initial_elimination_offset.
8859         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
8860         (avr_initial_elimination_offset): Define.
8861
8862 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
8863             Steven Bosscher  <steven@gcc.gnu.org>
8864
8865         PR rtl-optimization/39938
8866         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
8867         * cfgrtl.c: Include insn-attr.h.
8868         (rest_of_pass_free_cfg): New function.
8869         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
8870         * resource.c (init_resource_info): Remove call to df_analyze.
8871
8872 2009-04-29  Richard Guenther  <rguenther@suse.de>
8873
8874         PR target/39943
8875         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
8876         allow conversion to signed integers.
8877
8878 2009-04-29  Richard Guenther  <rguenther@suse.de>
8879
8880         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
8881         shifts of floating point vectors if the shift amount is
8882         a constant multiple of the element size.
8883
8884 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8885             Michael Matz  <matz@suse.de>
8886
8887         PR middle-end/39927
8888         PR bootstrap/39929
8889         * tree-outof-ssa.c (emit_partition_copy): New function.
8890         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
8891         insert_part_to_rtx_on_edge): Perform the partition base var
8892         copy using emit_partition_copy.
8893         (insert_value_copy_on_edge): Convert constants to the right mode.
8894         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
8895         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
8896
8897 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
8898
8899         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
8900         scan backwards to try to find a constant to initialize it.
8901
8902         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
8903         insn before the loop_end instruction, don't look past labels.
8904
8905 2009-04-29  Richard Guenther  <rguenther@suse.de>
8906
8907         PR middle-end/39937
8908         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
8909         loose type conversions.
8910         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
8911         stmts only if there are no uses of its definition.
8912
8913 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
8914
8915         * config/bfin/bfin.h (splitting_loops): Declare.
8916         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
8917         Reorder bit definitions to be ascending.
8918         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
8919         * config/bfin/bfin.c (splitting_loops): New variable.
8920         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
8921         (struct loop_info): Remove members INIT and LOOP_INIT.
8922         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
8923         the LSETUP sequence.  Allow LC to be loaded from any register, but
8924         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
8925         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
8926         set to 1.
8927         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
8928         of reload_completed.
8929
8930         From Jie Zhang:
8931         * config/bfin/bfin.md (movsi_insn): Refine constraints.
8932
8933 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
8934
8935         * Makefile.in (PLUGIN_VERSION_H): New.
8936         (OBJS-common): Remove plugin-version.o.
8937         (plugin.o): Depend on (PLUGIN_VERSION_H).
8938         (plugin-version.o): Remove.
8939         * configure: Regenerate
8940         * configure.ac: Create plugin-version.h.
8941         * gcc-plugin.h (plugin_gcc_version): Remove.
8942         (plugin_default_version_check): Change signature.
8943         * plugin-version.c: Remove.
8944         * plugin.c: Include plugin-version.h.
8945         (str_plugin_gcc_version_name): Remove.
8946         (try_init_one_plugin): Pass gcc version to plugin_init.
8947         (plugin_default_version_check): Both gcc and plugin versions are now
8948         arguments.
8949
8950 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
8951         
8952         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
8953         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
8954         Remove special case testing for last insn of inner loops. Don't fail
8955         if the loop ends with a jump, emit an extra nop instead.
8956
8957         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
8958         DREGS rather than comparing directly.  Remove code that tries to
8959         account for latencies.
8960
8961 2009-04-29  Richard Guenther  <rguenther@suse.de>
8962
8963         PR tree-optimization/39941
8964         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
8965         eliminating an indirect call.
8966
8967 2009-04-29  Richard Guenther  <rguenther@suse.de>
8968
8969         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
8970         parameter.  Allow invariants as base if !require_lvalue.
8971         (verify_gimple_assign_single): Adjust.
8972
8973 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
8974
8975         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
8976         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
8977         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
8978         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
8979         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
8980         a VEC_SELECT.
8981         * config/bfin/bfin.c (bfin_expand_builtin,
8982         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
8983
8984 2009-04-28  Richard Guenther  <rguenther@suse.de>
8985
8986         * tree-vect-loop.c (get_initial_def_for_induction): Use
8987         correct types for pointer increment.
8988
8989 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8990
8991         * toplev.c (print_version): Update GMP version string calculation.
8992
8993 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
8994
8995         PR rtl-optimization/39938
8996         * resource.c (init_resource_info): Add call to df_analyze.
8997
8998 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
8999
9000         * config/alpha/alpha.md (usegp): Cast the result of
9001         alpha_find_lo_sum_using_gp to enum attr_usegp.
9002         * config/alpha/alpha.c (override_options): Remove end-of-structure
9003         marker element from cpu_table.  Use array size of cpu_table to handle
9004         -mcpu and -mtune options.
9005         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
9006
9007 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
9008
9009         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
9010         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
9011         tune_32 and tune_64.
9012         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
9013         support on PowerPC.
9014         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
9015         * config/rs6000/option-defaults.h: ... here.  New file.
9016         (OPT_64, OPT_32): Define.
9017         (MASK_64BIT): Define to 0 if not already defined.
9018         (OPT_ARCH64, OPT_ARCH32): Define.
9019         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
9020         and tune_64.
9021
9022 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9023
9024         * config/arm/arm.c (arm_override_options): Emit error on using
9025         fpa with AAPCS.
9026
9027 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
9028
9029         PR rtl-optimization/39914
9030         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
9031         registers for allocnos created from user-defined variables only
9032         when not optimizing.
9033
9034 2009-04-28  Richard Guenther  <rguenther@suse.de>
9035
9036         PR middle-end/39937
9037         * fold-const.c (fold_binary): Use distribute_real_division only
9038         on float types.
9039
9040 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
9041
9042         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
9043         add hpux-stdint.h to tm_file.
9044         (hppa[12]*-*-hpux11*): Ditto.
9045         (ia64*-*-hpux*): Ditto.
9046         * config/hpux-stdint.h: New.
9047         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
9048         __STDC_EXT__ for all compiles.
9049         * config/pa/pa-hpux.h: Ditto.
9050         * config/pa/pa-hpux10.h: Ditto.
9051         * config/pa/pa-hpux11.h: Ditto.
9052
9053 2009-04-28  Catherine Moore  <clm@codesourcery.com>
9054
9055         * debug.h (set_name): Add comment.
9056
9057 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
9058
9059         PR target/39929
9060         * config/darwin.c (machopic_gen_offset): Check
9061         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
9062         * config/arm/arm.c (require_pic_register): Likewise.
9063
9064 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
9065
9066         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
9067         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
9068         m32c_promote_prototypes): Delete.
9069
9070 2009-04-28  Michael Matz  <matz@suse.de>
9071
9072         PR middle-end/39922
9073         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
9074         constants.
9075
9076 2009-04-28  Richard Guenther  <rguenther@suse.de>
9077
9078         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
9079
9080 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9081
9082         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
9083         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
9084         * config/arm/arm-tune.md: Regenerate.
9085
9086 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
9087
9088         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
9089         block if there are complex incoming edges.
9090         (sel_merge_blocks): Remove useless assert.
9091         (sel_redirect_edge_and_branch): Check that edge was redirected.
9092         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
9093         (sel_find_rgns): Delete declaration.
9094         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
9095         the region when it is not a preheader.
9096
9097 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
9098
9099         PR c/39323
9100         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
9101
9102 2009-04-28  Richard Guenther  <rguenther@suse.de>
9103
9104         * tree.h (SSA_NAME_VALUE): Remove.
9105         (struct tree_ssa_name): Remove value_handle member.
9106         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
9107         array for jump threading.
9108         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
9109         SSA_NAME_VALUEs.
9110         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
9111         * tree-flow.h (threadedge_initialize_values): Declare.
9112         (threadedge_finalize_values): Likewise.
9113         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
9114         (SSA_NAME_VALUE): Define.
9115         (threadedge_initialize_values): New function.
9116         (threadedge_finalize_values): Likewise.
9117         * tree-ssa-dom.c (ssa_name_values): New global variable.
9118         (SSA_NAME_VALUE): Define.
9119         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
9120
9121 2009-04-28  Ira Rosen  <irar@il.ibm.com>
9122
9123         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
9124         Use REPORT_VECTORIZED_LOCATIONS instead 
9125         REPORT_VECTORIZED_LOOPS.
9126         * tree-vectorizer.c (vect_verbosity_level): Make static.
9127         (vect_loop_location): Rename to vect_location.
9128         (vect_set_verbosity_level): Update comment.
9129         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
9130         and vect_location.
9131         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
9132         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
9133         instead REPORT_UNVECTORIZED_LOOPS.
9134         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
9135         and vect_loop_def to vect_external_def and vect_internal_def.
9136         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
9137         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
9138         REPORT_UNVECTORIZED_LOCATIONS.
9139         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
9140         and vect_used_in_loop and to vect_unused_in_scope and 
9141         vect_used_in_scope.
9142         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
9143         (vect_verbosity_level): Remove declaration.
9144         (vect_analyze_operations): Likewise.
9145         (vect_analyze_stmt): Declare.
9146         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
9147         REPORT_UNVECTORIZED_LOCATIONS.
9148         (vect_get_loop_niters): Fix indentation.
9149         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
9150         (vect_analyze_loop_operations): New function.
9151         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
9152         vect_analyze_operations.
9153         (vect_is_simple_reduction): Use new names.
9154         (vectorizable_live_operation, vect_transform_loop): Likewise.
9155         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
9156         to specify whether the data references can be a part of interleaving
9157         chain.
9158         (vect_analyze_data_ref_dependence): Use new names.
9159         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
9160         (vect_create_addr_base_for_vector_ref): Remove redundant code.
9161         * tree-vect-patterns.c (widened_name_p): Use new names.
9162         (vect_recog_dot_prod_pattern): Likewise.
9163         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
9164         (process_use, vect_mark_stmts_to_be_vectorized, 
9165         vect_model_simple_cost, vect_model_store_cost,
9166         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
9167         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
9168         vectorizable_operation, vectorizable_type_demotion,
9169         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
9170         vectorizable_condition): Likewise.
9171         (vect_analyze_operations): Split into vect_analyze_loop_operations
9172         and ...
9173         (vect_analyze_stmt): ... new function.
9174         (new_stmt_vec_info): Use new names.
9175         (vect_is_simple_use): Use new names and fix comment.
9176         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
9177         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
9178
9179 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
9180
9181         PR target/39911
9182         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
9183         and integer modes for x87 operands.  Do not ICE for unsupported size,
9184         generate error instead.  Generate error for unsupported operand types.
9185         ['z']: Do not handle HImode memory operands specially.  Warning
9186         for floating-point operands.  Fallthru to 'Z' for unsupported operand
9187         types.  Do not ICE for unsupported size, generate error instead.
9188         (output_387_binary_op): Use %Z to output operands.
9189         (output_fp_compare): Ditto.
9190         (output_387_reg_move): Ditto.
9191
9192 2009-04-28  Ben Elliston  <bje@au.ibm.com>
9193
9194         PR c++/35652
9195         Revert:
9196
9197         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9198
9199         * builtins.c (c_strlen): Do not warn here.
9200         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
9201         * c-common.c (pointer_int_sum): Take an explicit location.
9202         Warn about offsets out of bounds.
9203         * c-common.h (pointer_int_sum): Adjust declaration.
9204
9205 2009-04-27  Ian Lance Taylor  <iant@google.com>
9206
9207         * collect2.c (is_ctor_dtor): Change type of ret field in struct
9208         names to symkind.
9209         * dce.c (run_fast_df_dce): Change type of old_flags to int.
9210         * df-core.c (df_set_flags): Change return type to int.  Change
9211         type of old_flags to int.
9212         (df_clear_flags): Likewise.
9213         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
9214         (df_get_conditional_uses): Likewise.
9215         * df.h (df_set_flags, df_clear_flags): Update declarations.
9216         * dwarf2out.c (struct indirect_string_node): Change type of form
9217         field to enum dwarf_form.
9218         (AT_string_form): Change return type to enum dwarf_form.
9219         * fixed-value.c (fixed_compare): Add cast to enum type.
9220         * fwprop.c (update_df): Change 0 to VOIDmode.
9221         * gensupport.c: Change 0 to UNKNOWN.
9222         * gimple.h (gimple_cond_code): Add cast to enum type.
9223         * haifa-sched.c (reemit_notes): Add cast to enum type.
9224         * hooks.c (hook_int_void_no_regs): Remove function.
9225         * hooks.h (hook_int_void_no_regs): Remove declaration.
9226         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
9227         * predict.c (combine_predictions_for_insn): Add casts to enum type.
9228         * real.c (real_arithmetic): Add cast to enum type.
9229         (real_compare): Likewise.
9230         * target.h (struct gcc_target): Change return type of
9231         branch_target_register_class to enum reg_class.
9232         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
9233         default_branch_target_register_class.
9234         * targhooks.c (default_branch_target_register_class): New function.
9235         * targhooks.h (default_branch_target_register_class): Declare.
9236         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
9237         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
9238         cast to int.
9239         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
9240         ERROR_MARK.
9241         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
9242         vect_uninitialized_def.  Change 0 to ERROR_MARK.
9243         * tree-vect-stmts.c (supportable_widening_operation): Don't
9244         initialize icode1 and icode2.
9245         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
9246         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
9247         and to STD_C89.
9248         (cmn_err_flag_specs): Change 0 to STD_C89.
9249         (cmn_err_char_table): Likewise.
9250         * config/arm/arm.c (get_arm_condition_code): Change type of code
9251         to enum arm_cond_code.
9252         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
9253         (IWMMXT_BUILTIN2): Likewise.
9254         (neon_builtin_type_bits): Don't define typedef.
9255         (neon_builtin_datum): Change type of bits field to int.
9256         (arm_expand_neon_args): Add cast to enum type.
9257         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
9258         TLS_MODEL_NONE.
9259         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
9260         casts to enum type.
9261         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
9262         MIPS_FP_COND_f.
9263         * config/mips/mips.md (jal_macro): Return enum constant.
9264         (single_insn): Likewise.
9265         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
9266         CODE_FOR_nothing.
9267         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
9268         casts to enum type.
9269         * config/s390/s390.c (s390_tune_flags): Change type to int.
9270         (s390_arch_flags): Likewise.
9271         (s390_handle_arch_option): Change flags field of struct pta to int.
9272         * config/s390/s390.h (s390_tune_flags): Update declaration.
9273         (s390_arch_flags): Likewise.
9274         * config/sh/sh.c (prepare_move_operands): Compare
9275         tls_symbolic_operand result with enum constant.
9276         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
9277         (sh_expand_prologue): Add cast to enum type.
9278         (sh_expand_epilogue): Likewise.
9279         (tls_symbolic_operand): Change return type to enum tls_model.
9280         (fpscr_set_from_mem): Add cast to enum type.
9281         (legitimize_pic_address): Compare tls_symbolic_operand result with
9282         enum constant.
9283         (sh_target_reg_class): Change return type to enum reg_class.
9284         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
9285         PROCESSOR_xxx.
9286         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
9287         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
9288         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
9289         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
9290         (delayed_branch, tls_call_delay): Likewise.
9291         (eligible_for_sibcall_delay): Likewise.
9292         (eligible_for_return_delay): Likewise. 
9293         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
9294         (spu_expand_builtin_1): Likewise.
9295
9296         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
9297         for all types of conversions.
9298         (output_init_element): Issue -Wc++-compat warning if needed when
9299         initializing a bitfield with enum type.
9300         * c-parser.c (c_parser_expression): Set original_type to
9301         original_type of right hand operand of comman operator.
9302
9303 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9304
9305         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
9306         grammar nits.
9307         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
9308         * doc/cpp.texi (Standard Predefined Macros)
9309         (Implementation-defined behavior): Likewise.
9310         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
9311         * doc/gimple.texi (GIMPLE Exception Handling)
9312         (@code{GIMPLE_ASSIGN}): Likewise.
9313         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
9314         * doc/invoke.texi (Warning Options, Optimize Options)
9315         (AVR Options, Darwin Options): Likewise.
9316         (Optimize Options): Reformulate -fwhole-program description.
9317         * doc/loop.texi (Lambda): Likewise.
9318         * doc/md.texi (Output Template, Define Constraints)
9319         (Standard Names, Insn Splitting): Likewise.
9320         * doc/options.texi (Option properties): Likewise.
9321         * doc/passes.texi (Tree-SSA passes): Likewise.
9322         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
9323         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
9324         (File Names and DBX): Likewise.
9325         * doc/trouble.texi (Incompatibilities): Likewise.
9326
9327 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9328
9329         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
9330         instruction is correct.
9331
9332 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9333
9334         Allow non-constant arguments to conversion intrinsics.
9335         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
9336         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
9337         * spu.c (print_operand): Handle 'v' and 'w'.
9338         (exp2_immediate_p, spu_gen_exp2): Define.
9339         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
9340         spu_convtf_1): Update parameter descriptions.
9341         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
9342         * constraints.md ('v', 'w'): New.
9343         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
9344         Remove.
9345         (i2f, I2F): New define_mode_attr.
9346         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
9347         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
9348         fixuns_truncv4sfv4si2):  Update to use mode attribute.
9349         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
9350         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
9351         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
9352         patterns for combine.
9353
9354 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
9355
9356         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
9357         (cprop, hoist, pre, store_motion): New debug counters.
9358         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
9359         is not an RTL pass anymore.
9360         (pass_profiling): Remove extern decl for pass removed in 2005.
9361         (pass_gcse, pass_jump_bypass): Remove.
9362         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
9363         to 0 for clean state.
9364         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
9365         * cse.c (gate_handle_cse_after_global_opts,
9366         rest_of_handle_cse_after_global_opts): New functions.
9367         (pass_cse_after_global_opts): New pass, does local CSE.
9368         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
9369         (TV_CPROP): New timevar.
9370         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
9371         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
9372         (gcse_main, recompute_all_luids): Remove.
9373         (compute_hash_table_work): Call max_reg_num instead of reading
9374         max_gcse_regno.
9375         (cprop_jump): Don't set run_jump_opt_after_gcse.
9376         (constprop_register): Always allow to alter jumps.
9377         (cprop_insn): Likewise.
9378         (do_local_cprop): Likewise.
9379         (local_cprop_pass): Likewise.  Return non-zero if something changed.
9380         (cprop): Remove function, fold interesting bits into one_cprop_pass.
9381         (find_implicit_sets): Add note about missed optimization opportunity.
9382         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
9383         pass_rtl_cprop execute function.
9384         Don't bother tracking the pass number, each pass gets its own dumpfile
9385         now anyway.
9386         Always allow to alter jumpsand bypass jumps.
9387         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
9388         will just find no suitable set.
9389         (pre_edge_insert): Fix dumping, this function is for PRE only.
9390         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
9391         pass_rtl_pre execute function.
9392         (hoist_code): Return non-zero if something changed.  Keep track of
9393         substitutions and insertions for statistics gathering similar to PRE.
9394         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
9395         called from the pass_rtl_hoist execute function.  Show pass statistics.
9396         (compute_store_table): Use max_reg_num directly instead of using the
9397         formerly global max_gcse_regno.
9398         (build_store_vectors): Likewise.
9399         (replace_store_insn): Fix dumping.
9400         (store_motion): Rename to ...
9401         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
9402         pass, called from the pass_rtl_store_motion execute function.  Keep
9403         track of substitutions and insertions for statistics gathering similar
9404         to PRE.
9405         (bypass_jumps): Remove, fold interesting bits into ...
9406         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
9407         from the pass_rtl_cprop execute function.
9408         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
9409         pass_jump_bypass): Remove.
9410         (gate_handle_gcse, rest_of_handle_gcse): Remove.
9411         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
9412         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
9413         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
9414         (gate_rtl_store_motion, execute_rtl_store_motion,
9415         pass_rtl_store_motion): New.
9416         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
9417         make it clear that -fcse-skip-blocks is a no-op for backward compat.
9418         * passes.c (init_optimization_passes): Remove pass_gcse and
9419         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
9420         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
9421         instead of pass_jump_bypass.
9422
9423 2009-04-27  Richard Guenther  <rguenther@suse.de>
9424
9425         PR middle-end/39928
9426         * gimplify.c (gimplify_expr): If we are required to create
9427         a temporary make sure it ends up as register.
9428
9429 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
9430
9431         PR target/39903
9432         * config/i386/i386.c (construct_container): Don't call
9433         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
9434         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
9435
9436 2009-04-27  Michael Matz  <matz@suse.de>
9437
9438         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
9439         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
9440         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
9441         (dump_replaceable_exprs): Take a bitmap.
9442         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
9443         array.
9444         (expand_gimple_basic_block): Likewise.
9445         * tree-ssa-ter.c (struct temp_expr_table_d): Make
9446         replaceable_expressions member a bitmap.
9447         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
9448         (mark_replaceable): Likewise.
9449         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
9450         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
9451
9452 2009-04-27  Richard Guenther  <rguenther@suse.de>
9453
9454         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
9455         (verify_stmts): Dispatch to gimple/type verification code.
9456         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
9457         issue with call argument types.
9458
9459 2009-04-27  Michael Matz  <matz@suse.de>
9460
9461         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
9462         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
9463         to above.
9464
9465 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
9466             Eric Botcazou  <ebotcazou@adacore.com>
9467
9468         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
9469         a label's basic block.
9470         (mark_target_live_regs): Tidy and rework obsolete comments.
9471         Change back DF problem to LIVE.  If a label starts a basic block,
9472         assume that all registers that used to be live then still are.
9473         (init_resource_info): If a label starts a basic block, set its
9474         BLOCK_FOR_INSN accordingly.
9475         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
9476
9477 2009-04-27  Richard Guenther  <rguenther@suse.de>
9478
9479         * tree-flow-inline.h (function_ann): Remove.
9480         (get_function_ann): Likewise.
9481         * tree-dfa.c (create_function_ann): Remove.
9482         * tree-flow.h (struct static_var_ann_d): Remove.
9483         (struct function_ann_d): Likewise.
9484         (union tree_ann_d): Remove fdecl member.
9485         (function_ann_t): Remove.
9486         (function_ann, get_function_ann, create_function_ann): Remove
9487         declarations.
9488
9489 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
9490
9491         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
9492
9493 2009-04-27  Jan Hubicka  <jh@suse.cz>
9494
9495         * ipa-pure-const.c (struct funct_state_d): New fields
9496         state_previously_known, looping_previously_known; remove
9497         state_set_in_source.
9498         (analyze_function): Use new fields.
9499         (propagate): Avoid assumption that state_set_in_source imply
9500         nonlooping.
9501
9502         * tree-ssa-loop-niter.c (finite_loop_p): New function.
9503         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
9504         * cfgloop.h (finite_loop_p): Declare.
9505
9506 2009-04-26  Michael Matz  <matz@suse.de>
9507
9508         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
9509
9510 2009-04-26  Michael Matz  <matz@suse.de>
9511
9512         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
9513         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
9514         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
9515         pass_mark_used_blocks): Remove.
9516         * tree-optimize.c (pass_free_datastructures,
9517         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
9518         * passes.c (init_optimization_passes): Don't call
9519         pass_mark_used_blocks, remove dead code.
9520
9521 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
9522
9523         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
9524         * tree-ssa-live.h (register_ssa_partition): Likewise.
9525
9526 2009-04-26  Michael Matz  <matz@suse.de>
9527
9528         Expand from SSA.
9529         * builtins.c (fold_builtin_next_arg): Handle SSA names.
9530         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
9531         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
9532         SSA names. 
9533         (compare_pairs): Swap cost comparison.
9534         (coalesce_ssa_name): Don't use change_partition_var.
9535         * tree-nrv.c (struct nrv_data): Add modified member.
9536         (finalize_nrv_r): Set it.
9537         (tree_nrv): Use it to update statements.
9538         (pass_nrv): Require PROP_ssa.
9539         * tree-mudflap.c (mf_decl_cache_locals,
9540         mf_build_check_statement_for): Use make_rename_temp.
9541         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
9542         * alias.c (find_base_decl): Handle SSA names.
9543         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
9544         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
9545         * rtl.h (set_reg_attrs_for_parm): Declare.
9546         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
9547         to "optimized", remove unused locals at finish.
9548         (execute_free_datastructures): Make global, call
9549         delete_tree_cfg_annotations.
9550         (execute_free_cfg_annotations): Don't call
9551         delete_tree_cfg_annotations.
9552
9553         * ssaexpand.h: New file.
9554         * expr.c (toplevel): Include ssaexpand.h.
9555         (expand_assignment): Handle SSA names the same as register variables.
9556         (expand_expr_real_1): Expand SSA names.
9557         * cfgexpand.c (toplevel): Include ssaexpand.h.
9558         (SA): New global variable.
9559         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
9560         (SSAVAR): New macro.
9561         (set_rtl): New helper function.
9562         (add_stack_var): Deal with SSA names, use set_rtl.
9563         (expand_one_stack_var_at): Likewise.
9564         (expand_one_stack_var): Deal with SSA names.
9565         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
9566         before unique numbers.
9567         (expand_stack_vars): Use set_rtl.
9568         (expand_one_var): Accept SSA names, add asserts for them, feed them
9569         to above subroutines.
9570         (expand_used_vars): Expand all partitions (without default defs),
9571         then only the local decls (ignoring those expanded already).
9572         (expand_gimple_cond): Remove edges when jumpif() expands an
9573         unconditional jump.
9574         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
9575         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
9576         SSA name.
9577         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
9578         members of SA; deal with PARM_DECL partitions here; expand
9579         all PHI nodes, free tree datastructures and SA.  Commit instructions
9580         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
9581         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
9582         info and statements at start, collect garbage at finish.
9583         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
9584         (VAR_ANN_PARTITION) Remove.
9585         (change_partition_var): Don't declare.
9586         (partition_to_var): Always return SSA names.
9587         (var_to_partition): Only accept SSA names.
9588         (register_ssa_partition): Only check argument.
9589         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
9590         member.
9591         (delete_var_map): Don't free it.
9592         (var_union): Only accept SSA names, simplify.
9593         (partition_view_init): Mark only useful SSA names as used.
9594         (partition_view_fini): Only deal with SSA names.
9595         (change_partition_var): Remove.
9596         (dump_var_map): Use ssa_name instead of partition_to_var member.
9597         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
9598         basic blocks.
9599         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
9600         (struct _elim_graph): New member const_dests; nodes member vector of
9601         ints.
9602         (set_location_for_edge): New static helper.
9603         (create_temp): Remove.
9604         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
9605         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
9606         (new_elim_graph): Allocate const_dests member.
9607         (clean_elim_graph): Truncate const_dests member.
9608         (delete_elim_graph): Free const_dests member.
9609         (elim_graph_size): Adapt to new type of nodes member.
9610         (elim_graph_add_node): Likewise.
9611         (eliminate_name): Likewise.
9612         (eliminate_build): Don't take basic block argument, deal only with
9613         partition numbers, not variables.
9614         (get_temp_reg): New static helper.
9615         (elim_create): Use it, deal with RTL temporaries instead of trees.
9616         (eliminate_phi): Adjust all calls to new signature.
9617         (assign_vars, replace_use_variable, replace_def_variable): Remove.
9618         (rewrite_trees): Only do checking.
9619         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
9620         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
9621         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
9622         contains_tree_r, MAX_STMTS_IN_LATCH,
9623         process_single_block_loop_latch, analyze_edges_for_bb,
9624         perform_edge_inserts): Remove.
9625         (expand_phi_nodes): New global function.
9626         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
9627         functions, initialize new parameter, remember partitions having a
9628         default def.
9629         (finish_out_of_ssa): New global function.
9630         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
9631         don't reset in_ssa_p here, don't disable TER when mudflap.
9632         (pass_del_ssa): Remove.
9633         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
9634         partition members.
9635         (execute_free_datastructures): Declare.
9636         * Makefile.in (SSAEXPAND_H): New variable.
9637         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
9638         * basic-block.h (commit_one_edge_insertion): Declare.
9639         * passes.c (init_optimization_passes): Move pass_nrv and
9640         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
9641         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
9642         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
9643         (redirect_branch_edge): Deal with super block when expanding, split
9644         out jump patching itself into ...
9645         (patch_jump_insn): ... here, new static helper.
9646
9647 2009-04-26  Michael Matz  <matz@suse.de>
9648
9649         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
9650         beyond num_ssa_names.
9651         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
9652         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
9653
9654 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
9655
9656         PR inline-asm/39543
9657         * fwprop.c (forward_propagate_asm): New function.
9658         (forward_propagate_and_simplify): Propagate also into __asm, if it
9659         doesn't increase the number of referenced registers.
9660
9661         PR c/39889
9662         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
9663
9664 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
9665
9666         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
9667         note_nonlocal_vla_type for nonlocal VLAs.
9668         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
9669         contains_remapped_vars, remap_vla_decls): New functions.
9670         (convert_nonlocal_reference_stmt): If not optimizing, call
9671         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
9672         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
9673         if it wasn't found in var_map.
9674         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
9675         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
9676         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
9677         declare_vars.
9678         * gimplify.c (nonlocal_vlas): New variable.
9679         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
9680         referenced VLAs.
9681         (gimplify_body): Create and destroy nonlocal_vlas.
9682
9683         * dwarf2out.c (loc_descr_plus_const): New function.
9684         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
9685         mem_loc_descriptor, loc_descriptor_from_tree_1,
9686         descr_info_loc, gen_variable_die): Use it.
9687
9688         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
9689         !TREE_STATIC VAR_DECLs.
9690         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
9691         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
9692         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
9693         DECL_BY_REFERENCE is valid.
9694         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
9695         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
9696         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
9697         Copy DECL_BY_REFERENCE.
9698         (struct nesting_copy_body_data): New type.
9699         (nesting_copy_decl): New function.
9700         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
9701         if they have variable length.
9702
9703 2009-04-26  Michael Matz  <matz@suse.de>
9704
9705         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
9706         mark new temporaries for renaming.
9707
9708 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
9709
9710         PR c/39581
9711         * c-decl.c (global_bindings_p): Return negative value.
9712         (c_variable_size): New.  Based on variable_size from
9713         stor-layout.c.
9714         (grokdeclarator): Call c_variable_size not variable_size.
9715
9716 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
9717
9718         * config/i386/i386.c (print_operand) ['z']: Fix typo.
9719
9720 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
9721
9722         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
9723         Redefine it to just use mingw/include.
9724         (ASM_SPEC): Rules for -m32 and -m64.
9725         (LINK_SPEC): Use Likewise.
9726         (SPEC_32): New define.
9727         (SPEC_64): Likewise.
9728         (SUB_LINK_SPEC): Likewise.
9729         (MULTILIB_DEFAULTS): New define.
9730         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
9731         Add multilib options.
9732         (MULTILIB_DIRNAMES): Likewise.
9733         (MULTILIB_OSDIRNAMES): Likewise.
9734         (LIBGCC): Likewise.
9735         (INSTALL_LIBGCC): Likewise.
9736
9737 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
9738
9739         PR c/39556
9740         * c-tree.h (enum c_inline_static_type): New.
9741         (record_inline_static): Declare.
9742         * c-decl.c (struct c_inline_static, c_inline_statics,
9743         record_inline_static, check_inline_statics): New.
9744         (pop_file_scope): Call check_inline_statics.
9745         (start_decl): Call record_inline_static instead of pedwarning
9746         directly for static in inline function.
9747         * c-typeck.c (build_external_ref): Call record_inline_static
9748         instead of pedwarning directly for static referenced in inline
9749         function.
9750
9751 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
9752
9753         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
9754         not new but only being rescanned.
9755         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
9756         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
9757         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
9758         record_set_info, compute_set, grealloc): Remove.
9759         (recompute_all_luids): New function.
9760         (gcse_main): Don't compute sets, and don't do related memory
9761         allocations/free-ing.  If something changed before the end of the
9762         pass, update LUIDs using recompute_all_luids.
9763         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
9764         (free_gcse_mem): Don't free it either.
9765         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
9766         Use the df insn LUIDs.
9767         (load_killed_in_block): Likewise.
9768         (compute_hash_table_work): Don't compute reg_set_in_block.
9769         (compute_transp): Use DF_REG_DEF_CHAINs.
9770         (local_cprop_pass): Don't use compute_sets and related functions.
9771         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
9772         Use get_max_uid() instead of max_cuid.
9773         (insert_insn_end_basic_block, pre_insert_copy_insn,
9774         update_ld_motion_stores): Don't try to
9775         keep reg_set tables up to date.
9776         (pre_insert_copies): Use df insn LUIDs.
9777         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
9778         (reg_set_info): Don't use extra bitmap argument.
9779         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
9780         information to compute regs_set_in_block.
9781         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
9782         (bypass_jumps): Don't use compute_sets and friends.
9783
9784 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9785
9786         PR testsuite/39710
9787         * opts.c (undocumented_msg): Do not leave blank even with
9788         ENABLE_CHECKING.
9789
9790 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
9791
9792         * c-decl.c (build_enumerator): Allow values folding to integer
9793         constants but not integer constant expressions with a pedwarn if
9794         pedantic.
9795
9796 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
9797
9798         PR c/39582
9799         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
9800         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
9801         type is an integer constant.
9802
9803 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
9804
9805         PR target/39897
9806         * config/i386/i386.c (print_operand) ['z']: Revert handling of
9807         HImode operands.
9808
9809 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
9810
9811         PR c/39564
9812         * c-decl.c (grokdeclarator): Diagnose declarations of functions
9813         with variably modified return type and no storage class
9814         specifiers, except for the case of nested functions.  Distinguish
9815         extern declarations of functions with variably modified return
9816         types from those of objects with variably modified types.
9817
9818 2009-04-25  Jan Hubicka  <jh@suse.cz>
9819
9820         * tree.c (list_equal_p): New function.
9821         * tree.h (list_equal_p): Declare.
9822         * coretypes.h (edge_def, edge, const_edge, basic_block_def
9823         basic_block_def, basic_block, const_basic_block): New.
9824         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
9825         (redirect_eh_edge): New function.
9826         (make_eh_edge_update_phi): EH edges are not abnormal.
9827         * except.c: Include tree-flow.h.
9828         (list_match): New function.
9829         (eh_region_replaceable_by_p): New function.
9830         (replace_region): New function.
9831         (hash_type_list): New function.
9832         (hash_eh_region): New function.
9833         (eh_regions_equal_p): New function.
9834         (merge_peers): New function.
9835         (remove_unreachable_regions): Verify EH tree when checking;
9836         merge peers.
9837         (copy_eh_region_1): New function.
9838         (copy_eh_region): New function.
9839         (push_reachable_handler): New function.
9840         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
9841         regions without label but with live RESX.
9842         * except.h (redirect_eh_edge_to_label): New.
9843         * tree-flow.h (redirect_eh_edge): New.
9844         * coretypes.h (edge_def, edge, const_edge, basic_block_def
9845         basic_block_def, basic_block, const_basic_block): Remove.
9846         * Makefile.in (except.o): Add dependency on tree-flow.h
9847         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
9848         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
9849         Remove.
9850
9851 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
9852
9853         PR bootstrap/39645
9854         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
9855         on the destination of memcpy.
9856
9857 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
9858
9859         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
9860         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
9861         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
9862
9863 2009-04-25  Jan Hubicka  <jh@suse.cz>
9864
9865         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
9866         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
9867         to be reached by different label than left.
9868         (update_eh_edges): Update comment; remove edge_to_remove if possible
9869         and return true if suceeded.
9870         (cleanup_empty_eh): Accept sharing map; handle shared regions.
9871         (cleanup_eh): Compute sharing map.
9872         * except.c (remove_eh_handler_and_replace): Add argument if we should
9873         update regions.
9874         (remove_unreachable_regions): Update for label sharing.
9875         (label_to_region_map): Likewise.
9876         (get_next_region_sharing_label): New function.
9877         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
9878         prev_try pointers.
9879         (remove_eh_handler): Update.
9880         (remove_eh_region_and_replace_by_outer_of): New function.
9881         * except.h (struct eh_region): Add next_region_sharing_label.
9882         (remove_eh_region_and_replace_by_outer_of,
9883         get_next_region_sharing_label): Declare.
9884         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
9885
9886 2009-04-25  Jan Hubicka  <jh@suse.cz>
9887
9888         * tree-cfg.c (split_critical_edges): Split also edges where we can't
9889         insert code even if they are not critical.
9890
9891 2009-04-25  Jan Hubicka  <jh@suse.cz>
9892
9893         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
9894         (gimple_can_remove_branch_p): EH edges won't remove branch by
9895         redirection.
9896         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
9897         updating of non-abnormal EH edges.
9898         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
9899         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
9900         (split_critical_edges): Split also edges where emitting code on them
9901         will lead to splitting later.
9902
9903 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
9904             H.J. Lu  <hongjiu.lu@intel.com>
9905
9906         PR target/39590
9907         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
9908         the configured assembler supports fildq and fistpq mnemonics.
9909         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
9910         * configure: Regenerated.
9911         * config.in: Ditto.
9912
9913         * config/i386/i386.c (print_operand): Handle 'Z'.
9914         ['z']: Remove handling of special fild/fist suffixes.
9915         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
9916         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
9917         suffix of fild insn.
9918         (*floatsi<mode>2_vector_mixed): Ditto.
9919         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
9920         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
9921         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
9922         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
9923         * config/i386/gas.h (GAS_MNEMONICS): Remove.
9924
9925 2009-04-25  Ben Elliston  <bje@au.ibm.com>
9926  
9927         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
9928         the source of a set operation.
9929
9930 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
9931
9932         * target.h (struct gcc_target): Add case_values_threshold field.
9933         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
9934         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
9935         * targhooks.c (default_case_values_threshold): New function.
9936         * targhooks.h (default_case_values_threshold): Declare function.
9937         * stmt.c (expand_case): Use case_values_threshold target hook.
9938         * expr.h (case_values_threshold): Remove declartation.
9939         * expr.c (case_values_threshold): Remove function.
9940         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
9941
9942         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
9943         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
9944         (avr_case_values_threshold): Declare as static.
9945         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
9946
9947         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
9948         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
9949         (mn10300_case_values_threshold): New function.
9950
9951 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
9952
9953         * ira.c (setup_cover_and_important_classes): Add enum cast.
9954
9955 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
9956
9957         * genpreds.c (write_enum_constraint_num): Output definition of
9958         CONSTRAINT_NUM_DEFINED_P macro.
9959         * ira.c (setup_cover_and_important_classes): Use
9960         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
9961         
9962 2009-04-24  DJ Delorie  <dj@redhat.com>
9963
9964         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
9965         __SH2A_SINGLE_ONLY__ also.
9966
9967 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
9968
9969         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
9970         (movdf_internal): Ditto.
9971         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
9972         SFmode and DFmode constants.
9973         (ia64_print_operand): Add 'G' format for printing
9974         floating point constants.
9975
9976 2009-04-24  Richard Guenther  <rguenther@suse.de>
9977
9978         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
9979         from unsigned additions.
9980
9981 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
9982
9983         * c-typeck.c (set_init_index): Allow array designators that are
9984         not integer constant expressions with a pedwarn if pedantic.
9985
9986 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
9987
9988         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
9989         zero if no overlap in nonzero bits between the operands.
9990
9991 2009-04-24  Ian Lance Taylor  <iant@google.com>
9992
9993         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
9994         (record_dead_and_set_regs): Likewise.
9995         * df.h (struct df_mw_hardreg): Change flags field to int.
9996         (struct df_base_ref): Likewise.
9997         (struct df): Change changeable_flags field to int.
9998         * df-scan.c (df_defs_record): Change clobber_flags to int.
9999         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
10000         constants rather than #define macros.
10001         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
10002         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
10003         (enum dwarf_calling_convention): Likewise.
10004         (enum dwarf_line_number_x_ops): Likewise.
10005         (enum dwarf_call_frame_info): Likewise.
10006         (enum dwarf_source_language): Likewise.
10007         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
10008         (add_calling_convention_attribute): Likewise.
10009         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
10010         (combine_comparisons): Change compcode to int.  Add cast to enum type.
10011         * genrecog.c (maybe_both_true_2): Change c to int.
10012         (write_switch): Likewise.  Add cast to enum type.
10013         * gimplify.c (gimplify_omp_for): Handle return values from
10014         gimplify_expr using MIN rather than bitwise or.
10015         (gimplify_expr): Add cast to enum type.
10016         * ipa-prop.c (update_jump_functions_after_inlining): Change
10017         IPA_BOTTOM to IPA_JF_UNKNOWN.
10018         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
10019         Add casts to enum type.
10020         (setup_cover_and_important_classes): Change cl to int.  Add casts
10021         to enum type.
10022         (setup_class_translate): Change cl and mode to int.
10023         (ira_init_once): Change mode to int.
10024         (free_register_move_costs): Likewise.
10025         (setup_prohibited_mode_move_regs): Add casts to enum type.
10026         * langhooks.c (add_builtin_function_common): Rework assertion that
10027         value fits bitfield.
10028         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
10029         * omega.c (omega_do_elimination): Avoid math on enum types.
10030         * optabs.c (expand_vec_shift_expr): Remove casts to int.
10031         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
10032         int local to handle integral_argment value.
10033         * regmove.c (try_auto_increment): Change PUT_MODE to
10034         PUT_REG_NOTE_KIND.
10035         * reload.c (push_secondary_reload): Add casts to enum type.
10036         (secondary_reload_class, find_valid_class): Likewise.
10037         * reload1.c (emit_input_reload_insns): Likewise.
10038         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
10039         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
10040         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
10041         constant.
10042         * tree.c (build_common_builtin_nodes): Add casts to enum type.
10043         * tree-complex.c (complex_lattice_t): Typedef to int rather than
10044         enum type.
10045         (expand_complex_libcall): Add casts to enum type.
10046         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
10047         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
10048         with ERROR_MARK, not NUM_TREE_CODES.
10049         (vect_create_epilog_for_reduction): Likewise.
10050         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
10051         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
10052         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
10053         enum machine_mode.
10054         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
10055         vect_unused_in_loop.  Change 0 to loop_vect.
10056         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
10057         * var-tracking.c (get_init_value): Change return type to enum
10058         var_init_status.
10059         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
10060         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
10061         arm_fp_model.
10062         (arm_override_options): Add casts to enum type.
10063         (arm_emit_tls_decoration): Likewise.
10064         * config/i386/i386.c (ix86_function_specific_restore): Add casts
10065         to enum type.
10066         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
10067         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
10068         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
10069         enum type.
10070         * config/s390/s390.c (code_for_builtin_64): Change to array of
10071         enum insn_code.
10072         (code_for_builtin_31): Likewise.
10073         (s390_expand_builtin): Change code_for_builtin to enum insn_code
10074         const *.
10075         * config/sparc/sparc.c (sparc_override_options): Change value
10076         field in struct code_model to enum cmodel.  In initializer change
10077         0 to NULL and add cast to enum type.
10078
10079         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
10080         Change all callers.  Issue a -Wc++-compat warning using
10081         lhs_origtype if necessary.
10082         (convert_for_assignment): Issue -Wc++-compat warnings about
10083         invalid conversions to enum type on assignment.
10084         * c-common.h (build_modify_expr): Update declaration.
10085
10086 2009-04-24  Nick Clifton  <nickc@redhat.com>
10087
10088         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
10089         (function_arg_advance): Likewise.
10090         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
10091         5th alternative.
10092
10093 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10094
10095         * config/s390/constraints.md ('I', 'J'): Fix condition.
10096
10097 2009-04-24  Diego Novillo  <dnovillo@google.com>
10098
10099         * gengtype-parse.c (parse_error): Add newline after message.
10100
10101 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
10102
10103         * config/i386/sse.md (avxmodesuffixs): Removed.
10104         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
10105         (*avx_pinsr<ssevecsize>): This.
10106
10107 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
10108
10109         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
10110         follow chains of regs with a single definition, and allow expressions
10111         that are function_invariant_p.
10112         (simple_rhs_p): Allow expressions that are function_invariant_p.
10113
10114 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
10115
10116         PR middle-end/39867
10117         * fold-const.c (fold_cond_expr_with_comparison): When folding
10118         > and >= to MAX, make sure the MAX uses the same type as the
10119         comparison's operands.
10120
10121 2009-04-24  Nick Clifton  <nickc@redhat.com>
10122
10123         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
10124         addressing for DImode accesses.
10125         (frv_print_operand_address): Handle PLUS case.
10126         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
10127
10128 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
10129
10130         PR rtl-optimization/39794
10131         * alias.c (canon_true_dependence): Add x_addr argument.
10132         * rtl.h (canon_true_dependence): Adjust prototype.
10133         * cse.c (check_dependence): Adjust canon_true_dependence callers.
10134         * cselib.c (cselib_invalidate_mem): Likewise.
10135         * gcse.c (compute_transp): Likewise.
10136         * dse.c (scan_reads_nospill): Likewise.
10137         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
10138         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
10139         canon_base_addr of the group, plus optional offset.
10140         (struct group_info): Rename canon_base_mem to
10141         canon_base_addr.
10142         (get_group_info): Set canon_base_addr to canon_rtx of base, not
10143         canon_rtx of base_mem.
10144
10145 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
10146
10147         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
10148         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
10149
10150 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10151
10152         * config/spu/spu-builtins.h: Delete file.
10153
10154         * config/spu/spu.h (enum spu_builtin_type): Move here from
10155         spu-builtins.h.
10156         (struct spu_builtin_description): Likewise.  Add GTY marker.
10157         Do not use enum spu_function_code or enum insn_code.
10158         (spu_builtins): Add extern declaration.
10159
10160         * config/spu/spu.c: Do not include "spu-builtins.h".
10161         (enum spu_function_code, enum spu_builtin_type_index,
10162         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
10163         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
10164         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
10165         unsigned_V2DI_type_node): Move here from spu-builtins.h.
10166         (spu_builtin_types): Make static.  Add GTY marker.
10167         (spu_builtins): Add extern declaration with GTY marker.
10168         Include "gt-spu.h".
10169
10170         * config/spu/spu-c.c: Do not include "spu-builtins.h".
10171         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
10172         Check programmatically whether all parameters are scalar.
10173
10174         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
10175
10176 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
10177
10178         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
10179         assignment from the constructor either if the target is volatile.
10180
10181 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
10182
10183         * config/arm/arm.md (insv): Do not share operands[0].
10184
10185 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
10186
10187         * config/vxlib-tls.c (active_tls_threads): Delete.
10188         (delete_hook_installed): New.
10189         (tls_delete_hook): Don't delete the delete hook.
10190         (tls_destructor): Delete it here.
10191         (__gthread_set_specific): Adjust installing the delete hook.
10192         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
10193         __gthread_leave_tsd_dtor_context.
10194
10195 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
10196
10197         * c-format.c (gcc_tdiag_char_table): Add support for %E.
10198
10199 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
10200
10201         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
10202         enum type.
10203         (alpha_rtx_costs): Ditto.
10204         (emit_unlikely_jump): Use add_reg_note.
10205         (emit_frame_store_1): Ditto.
10206         (alpha_expand_prologue): Ditto.
10207         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
10208         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
10209
10210 2009-04-23  Nick Clifton  <nickc@redhat.com>
10211
10212         * config/v850/v850.md (epilogue): Remove suppressed code.
10213         (return): Rename to return_simple and remove test of frame size.
10214         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
10215         to gen_return_simple.
10216
10217 2009-04-22  Jing Yu  <jingyu@google.com>
10218
10219         PR testsuite/39781
10220         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
10221
10222 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10223
10224         PR C/31499
10225         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
10226         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
10227         value is a VECTOR_CST, the element type is the element type of the
10228         vector.
10229
10230 2009-04-22  DJ Delorie  <dj@redhat.com>
10231
10232         * config/m32c/m32c.h: Update GTY annotations to new syntax.
10233
10234 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
10235
10236         * alias.c (find_base_term): Move around LO_SUM case, so that
10237         CONST falls through into PLUS/MINUS handling.
10238
10239         PR c/39855
10240         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
10241         into 0, use omit_one_operand.
10242
10243 2009-04-23  Ben Elliston  <bje@au.ibm.com>
10244
10245         * config/rs6000/linux-unwind.h (get_regs): Remove type
10246         puns. Change the type of `pc' to an array of unsigned ints and
10247         update all users.  Constify frame24.
10248
10249 2009-04-22  DJ Delorie  <dj@redhat.com>
10250
10251         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
10252         declarations before code.
10253         (current_function_special_page_vector): Likewise.
10254         (m32c_expand_insv): Silence a warning.
10255
10256 2009-04-21  Taras Glek  <tglek@mozilla.com>
10257
10258         * alias.c: Update GTY annotations to new syntax.
10259         * basic-block.h: Likewise.
10260         * bitmap.h: Likewise.
10261         * c-common.h: Likewise.
10262         * c-decl.c: Likewise.
10263         * c-parser.c: Likewise.
10264         * c-pragma.c: Likewise.
10265         * c-tree.h: Likewise.
10266         * cfgloop.h: Likewise.
10267         * cgraph.h: Likewise.
10268         * config/alpha/alpha.c: Likewise.
10269         * config/arm/arm.h: Likewise.
10270         * config/avr/avr.h: Likewise.
10271         * config/bfin/bfin.c: Likewise.
10272         * config/cris/cris.c: Likewise.
10273         * config/darwin.c: Likewise.
10274         * config/frv/frv.c: Likewise.
10275         * config/i386/i386.c: Likewise.
10276         * config/i386/i386.h: Likewise.
10277         * config/i386/winnt.c: Likewise.
10278         * config/ia64/ia64.h: Likewise.
10279         * config/iq2000/iq2000.c: Likewise.
10280         * config/mips/mips.c: Likewise.
10281         * config/mmix/mmix.h: Likewise.
10282         * config/pa/pa.c: Likewise.
10283         * config/pa/pa.h: Likewise.
10284         * config/rs6000/rs6000.c: Likewise.
10285         * config/s390/s390.c: Likewise.
10286         * config/sparc/sparc.c: Likewise.
10287         * config/xtensa/xtensa.c: Likewise.
10288         * cselib.h: Likewise.
10289         * dbxout.c: Likewise.
10290         * dwarf2out.c: Likewise.
10291         * except.c: Likewise.
10292         * except.h: Likewise.
10293         * fixed-value.h: Likewise.
10294         * function.c: Likewise.
10295         * function.h: Likewise.
10296         * gimple.h: Likewise.
10297         * integrate.c: Likewise.
10298         * optabs.c: Likewise.
10299         * output.h: Likewise.
10300         * real.h: Likewise.
10301         * rtl.h: Likewise.
10302         * stringpool.c: Likewise.
10303         * tree-data-ref.c: Likewise.
10304         * tree-flow.h: Likewise.
10305         * tree-scalar-evolution.c: Likewise.
10306         * tree-ssa-address.c: Likewise.
10307         * tree-ssa-alias.h: Likewise.
10308         * tree-ssa-operands.h: Likewise.
10309         * tree.c: Likewise.
10310         * tree.h: Likewise.
10311         * varasm.c: Likewise.
10312         * varray.h: Likewise.
10313         * vec.h: Likewise.
10314         * coretypes.h: Do not define GTY macro if it is already defined.
10315         * doc/gty.texi: Update GTY documentation to new syntax.
10316         * gengtype-lex.l: Enforce attribute-like syntax for GTY
10317         annotations on structs.
10318         * gengtype-parse.c: Likewise.
10319
10320 2009-04-22  Mark Heffernan  <meheff@google.com>
10321
10322         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
10323
10324 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
10325
10326         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
10327         where appropriate.
10328
10329 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
10330
10331         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
10332         the same as a PLUS without a shift.  Increase the cost of a
10333         CONST_INT in MULT.
10334
10335 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10336
10337         * Makefile.in: Update dependencies.
10338         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
10339         * errors.h: Remove bogus comment about compatibility.
10340         (warning): Update declaration.
10341         * genautomata.c: Update all calls to warning.
10342         * gimple.c: Do not include errors.h. Include toplev.h.
10343         * tree-ssa-structalias.c: Do not include errors.h.
10344         * omega.c: Likewise.
10345         * tree-ssa-reassoc.c: Likewise.
10346         * config/spu/spu-c.c: Likewise.
10347         * config/spu/t-spu-elf: Update dependencies.
10348
10349 2009-04-22  Richard Guenther  <rguenther@suse.de>
10350
10351         PR tree-optimization/39824
10352         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
10353         make sure the types are compatible.
10354
10355 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10356
10357         PR c++/14875
10358         * c-common.c (c_parse_error): Take a token_flags parameter.
10359         Use token_type for the token type instead.
10360         Pass token_flags to cpp_type2name.
10361         * c-common.h (c_parse_error): Update declaration.
10362         * c-parser.c (c_parser_error): Pass 0 as token flags.
10363
10364 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
10365
10366         PR rtl-optimization/39580
10367         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
10368         
10369 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10370
10371         * function.c (expand_function_end): Do not emit a jump to the "naked"
10372         return label for fall-through returns.
10373         * except.c (sjlj_emit_function_exit): Always place the call to the
10374         unregister function at the location installed by expand_function_end.
10375
10376 2009-04-22  Richard Guenther  <rguenther@suse.de>
10377
10378         PR tree-optimization/39845
10379         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
10380         (gen_inbound_check): Likewise.
10381
10382 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
10383
10384         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
10385         padding for PPC.
10386         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
10387         * config/vxlib.c (__gthread_once): Add race guard for PPC.
10388
10389 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
10390
10391         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
10392         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
10393         shift counts to avoid out-of-bounds array accesses.
10394
10395 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
10396
10397         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
10398         (Pmode): Move above.
10399
10400 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
10401
10402         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
10403         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
10404         GET_CODE macro.  Use IN_RANGE macro where appropriate.
10405         * config/alpha/alpha.h: Ditto.
10406         * config/alpha/alpha.md: Ditto.
10407         * config/alpha/constraints.md: Ditto.
10408         * config/alpha/predicates.md: Ditto.
10409         
10410 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
10411
10412         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
10413         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10414         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10415         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10416         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10417         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10418         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10419         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10420         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10421         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10422         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10423         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10424         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10425         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10426         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10427         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10428         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10429         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10430         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10431         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10432         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10433         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10434         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10435         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10436         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10437         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10438         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10439
10440 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
10441
10442         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
10443         references from comments.
10444         * cfgbuild.c: (count_basic_blocks): Delete.
10445         (find_basic_blocks_1): Delete.
10446         (find_basic_blocks): Delete.
10447         * except.c (finish_eh_generation): Make static.  Move comment from
10448         except.h here.  Remove find_basic_blocks references from comments.
10449         * except.h (finish_eh_generation): Delete.
10450         * basic-block.h (find_basic_blocks): Delete.
10451         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
10452
10453 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
10454
10455         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
10456         (sdbout_parms):  Likewise.
10457
10458 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
10459
10460         * config/sh/sh.c (prepare_cbranch_operands): Use
10461         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
10462         (expand_cbranchdi4): Likewise.
10463         (from_compare): Add cast to enum type.
10464         (expand_cbranchsi4): Use add_reg_note.
10465         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
10466         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
10467         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
10468         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
10469         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
10470         instead of CODE_FOR_nothing.
10471         (cbranchdi4): Likewise.  Fix the order of arguments for
10472         gen_rtx_fmt_ee.
10473         (push_fpscr): Use add_reg_note.
10474         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
10475         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
10476         
10477 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
10478
10479         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
10480         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
10481         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
10482         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
10483         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
10484         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
10485         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
10486         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
10487         config/alpha/x-vms, config/arc/t-arc,
10488         config/arm/README-interworking, config/arm/arm-c.c,
10489         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
10490         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
10491         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
10492         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
10493         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
10494         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
10495         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
10496         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
10497         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
10498         config/cris/t-elfmulti, config/crx/t-crx,
10499         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
10500         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
10501         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
10502         config/h8300/t-h8300, config/i386/athlon.md,
10503         config/i386/darwin-libgcc.10.4.ver,
10504         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
10505         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
10506         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
10507         config/i386/t-linux64, config/i386/t-nwld,
10508         config/i386/t-rtems-i386, config/i386/t-sol2-10,
10509         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
10510         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
10511         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
10512         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
10513         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
10514         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
10515         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
10516         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
10517         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
10518         config/m68k/t-uclinux, config/mcore/t-mcore,
10519         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
10520         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
10521         config/mips/crtn.asm, config/mips/irix-crti.asm,
10522         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
10523         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
10524         config/mips/mips-fixed.md, config/mips/sb1.md,
10525         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
10526         config/mips/t-iris6, config/mips/t-isa3264,
10527         config/mips/t-libgcc-mips16, config/mips/t-linux64,
10528         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
10529         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
10530         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
10531         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
10532         config/mn10300/t-linux, config/mn10300/t-mn10300,
10533         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
10534         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
10535         config/picochip/libgccExtras/clzsi2.asm,
10536         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
10537         config/rs6000/darwin-libgcc.10.4.ver,
10538         config/rs6000/darwin-libgcc.10.5.ver,
10539         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
10540         config/rs6000/t-aix43, config/rs6000/t-aix52,
10541         config/rs6000/t-darwin, config/rs6000/t-fprules,
10542         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
10543         config/rs6000/t-lynx, config/rs6000/t-netbsd,
10544         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
10545         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
10546         config/rs6000/t-rtems, config/rs6000/t-spe,
10547         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
10548         config/score/t-score-elf, config/sh/divcost-analysis,
10549         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
10550         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
10551         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
10552         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
10553         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
10554         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
10555         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
10556         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
10557         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
10558         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
10559         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
10560         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
10561         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
10562         limitx.h, version.c, xcoff.h: Add copyright and license notices.
10563         * config/h8300/genmova.sh: Include copyright and license notices
10564         in generated output.
10565         * config/h8300/mova.md: Regenerate.
10566         * doc/install.texi2html: Include word "Copyright" in copyright
10567         notice and use name "Free Software Foundation, Inc.".
10568         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
10569         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
10570         ChangeLog-2007, ChangeLog-2008: Correct dates.
10571
10572 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
10573
10574         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
10575         NE_EXPR operations as well.
10576         * c-parser.c (c_parser_condition): Do not set location information on
10577         the condition.
10578         (c_parser_conditional_expression): Likewise.
10579         (c_parser_binary_expression): Set location information on operators.
10580         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
10581         TRUTH_NOT_EXPR has been folded.
10582         * fold-const.c (fold_truth_not_expr): Copy location information from
10583         the incoming expression to the outgoing one.
10584         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
10585         recursive calls on the LHS of the operator but pass that of the
10586         operator to recursive calls on the RHS of the operator.  Set it
10587         on the COND_EXPR.
10588         (shortcut_cond_expr): Set the locus of the operator on the second
10589         COND_EXPR and that of the expression on the first in degenerate cases.
10590         Pass the locus of the expression to calls to shortcut_cond_r.
10591         Set the locus of the 'then' block on the associated jump, if any.
10592         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
10593         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
10594         expression to call to gimplify_boolean_expr.
10595
10596 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
10597
10598         * config.gcc: Add additional configuration for
10599         i686-w64-mingw* and x86_64-w64-mingw* triplet.
10600         * config/i386/mingw-w64.h: New mingw-w64 specific header.
10601         (CPP_SPEC): Redefine for allowing -municode option.
10602         (STARTFILE_SPEC): Likewise.
10603         * config/i386/t-mingw-w64: New.
10604         * config/i386/mingw-w64.opt: New.
10605         (municode): Add new target option.
10606         * doc/invoke.texi (municode): Add documentation for new option.
10607
10608 2009-04-21  Ian Lance Taylor  <iant@google.com>
10609
10610         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10611         Correct test for number of arguments.
10612         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
10613
10614 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
10615
10616         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
10617         argument of emit_library_call.
10618
10619 2009-04-21  Richard Guenther  <rguenther@suse.de>
10620
10621         PR middle-end/39829
10622         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
10623         inside VIEW_CONVERT_EXPRs.
10624
10625 2009-04-21  Martin Jambor  <mjambor@suse.cz>
10626
10627         * tree-switch-conversion.c (build_constructors): Split a long line.
10628         (constructor_contains_same_values_p): New function.
10629         (build_one_array): Create assigns of constants if possible, do not
10630         call mark_sym_for_renaming, call update_stmt.
10631         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
10632         make_rename_temp.  Do not call mark_symbols_for_renaming, call
10633         update_stmt.
10634         (gen_def_assigns): Do not call mark_symbols_for_renaming or
10635         find_new_referenced_vars, call update_stmt.
10636         (gen_inbound_check): Use create_tmp_var and create ssa names manually
10637         instead of calling make_rename_temp.  Do not call
10638         find_new_referenced_vars or mark_symbols_for_renaming, call
10639         update_stmt.
10640
10641 2009-04-21  Richard Guenther  <rguenther@suse.de>
10642
10643         PR tree-optimization/39827
10644         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
10645         (tree_ssa_phiprop): Pass the correct array size.
10646
10647 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
10648
10649         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
10650
10651 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10652
10653         PR 16202
10654         * c-typeck.c (lvalue_p): Move declaration ...
10655         * c-common.h (lvalue_p): ... to here.
10656         * c-common.c (candidate_equal_p): New.
10657         (add_tlist): Use it.
10658         (merge_tlist): Use it.
10659         (warn_for_collisions_1): Likewise.
10660         (warning_candidate_p): Accept more candidates.
10661         (verify_tree): A warning candidate can be an expression. Use
10662         candidate_equal_p.
10663
10664 2009-04-21  Ben Elliston  <bje@au.ibm.com>
10665
10666         PR target/5267
10667         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
10668         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
10669         options.  Remove -mcall-solaris documentation.
10670
10671 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10672
10673         PR c++/13358
10674         * doc/invoke.texi (-Wlong-long): Update description.
10675         * c-lex (interpret_integer): Only warn if there was no previous
10676         overflow and -Wlong-long is enabled.
10677         * c-decl.c (declspecs_add_type): Drop redundant flags.
10678         * c.opt (Wlong-long): Init to -1.
10679         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
10680         and front-end warn_long_long. Wlong-long only depends on other
10681         flags if it is uninitialized.
10682         * c-parser.c (disable_extension_diagnostics): warn_long_long is
10683         the same for CPP and FE.
10684         (restore_extension_diagnostics): Likewise.
10685
10686 2009-04-20  Ian Lance Taylor  <iant@google.com>
10687
10688         Fix enum conversions which are invalid in C++:
10689         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
10690         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
10691         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
10692         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
10693         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
10694         (dbxout_parms): Likewise.
10695         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
10696         (df_clear_flags): Likewise.
10697         * df-problems.c (df_rd_bb_local_compute_process_def): Change
10698         top_flag parameter to int.
10699         (df_chain_create_bb_process_use): Likewise.
10700         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
10701         Remove cast.
10702         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
10703         (df_ref_create_structure, df_def_record_1): Likewise.
10704         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
10705         (df_notes_rescan): Change 0 to VOIDmode in function call.
10706         (df_get_call_refs, df_insn_refs_collect): Likewise.
10707         (df_bb_regs_collect): Likewise.
10708         (df_entry_block_defs_collect): Likewise.
10709         (df_exit_block_uses_collect): Likewise.
10710         * df.h: Update declarations.
10711         * double-int.c (double_int_divmod): Add cast to enum type.
10712         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
10713         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
10714         (based_loc_descr): Likewise.
10715         (loc_descriptor_from_tree_1): Change first_op and second_op to
10716         enum dwarf_location_atom.  Add cast to enum type.
10717         * expmed.c (init_expmed): Change 0 to SET in function call.
10718         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
10719         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
10720         (do_store_flag): Likewise.
10721         * fixed-value.h (struct fixed_value): Change mode to enum
10722         machine_mode.
10723         * function.c (assign_parms): Change 0 to VOIDmode in function call.
10724         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
10725         function call.
10726         (insert_insn_decl, insert_decl, insert_state): Likewise.
10727         (automata_list_finish): Likewise.
10728         * genrecog.c (process_define_predicate): Add cast to enum type.
10729         * gensupport.c (init_predicate_table): Add cast to enum type.
10730         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
10731         function call.
10732         (gimple_build_call_1, gimple_build_label): Likewise.
10733         (gimple_build_goto, gimple_build_asm_1): Likewise.
10734         (gimple_build_switch_1, gimple_build_cdt): Likewise.
10735         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
10736         (enum fallback): Rename from enum fallback_t.
10737         (fallback_t): Typedef as int.
10738         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
10739         GSI_SAME_STMT in function call.
10740         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
10741         enum type.
10742         (setup_reg_class_relations): Likewise.
10743         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
10744         (setup_prohibited_class_mode_regs): Add cast to enum type.
10745         (setup_prohibited_mode_move_regs): Likewise.
10746         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
10747         (record_address_regs): Change i to enum reg_class.
10748         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
10749         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
10750         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
10751         (GET_MODE_2XWIDER_MODE): Likewise.
10752         (GET_CLASS_NARROWEST_MODE): Likewise.
10753         * omp-low.c (expand_omp_for): Add cast to enum type.
10754         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
10755         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
10756         * postreload.c (reload_cse_simplify_operands): Change rclass local
10757         to enum reg_class.
10758         * predict.c (combine_predictions_for_insn): Change best_predictor
10759         and predictor to enum br_predictor.
10760         (combine_predictions_for_bb): Likewise.
10761         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
10762         use SET_PREDICT_EXPR_OUTCOME.
10763         * real.c (real_arithmetic): Change icode to code in function call.
10764         * reginfo.c (init_move_cost): Add casts to enum type.
10765         (init_reg_sets_1, init_fake_stack_mems): Likewise.
10766         * regmove.c (regclass_compatible_p): Change class0 and class1 to
10767         enum reg_class.
10768         * reload.c (find_valid_class): Add casts to enum type.
10769         (push_reload): Change 0 to NO_REGS in function call.
10770         (find_reloads): Change this_alternative to array of enum
10771         reg_class.  Remove some now-unnecessary casts.
10772         (make_memloc): Change 0 to VOIDmode in function call.
10773         * reload1.c (reload): Change 0 to VOIDmode in function call.
10774         (eliminate_regs_1, elimination_effects): Likewise.
10775         (eliminate_regs_in_insn): Likewise.
10776         (emit_input_reload_insns): Add cast to enum type.
10777         (delete_output_reload): Change 0 to VOIDmode in function call.
10778         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
10779         to enum type in function call.
10780         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
10781         (SET_PREDICT_EXPR_OUTCOME): Define.
10782         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
10783         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
10784         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
10785         (dump_function): Likewise.
10786         * tree-dump.h: Update declarations.
10787         * tree-pass.h: Update declarations.
10788         * varasm.c (assemble_integer): Change mclass to enum mode_class.
10789         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
10790         enum type.
10791         (arm_rtx_costs_1): Correct parenthesization.
10792         (arm_rtx_costs): Add casts to enum type.
10793         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
10794         (vfp_emit_fstmd): Use add_rg_note.
10795         (emit_multi_reg_push, emit_sfm): Likewise.
10796         (thumb_set_frame_pointer): Likewise.
10797         (arm_expand_prologue): Likewise.
10798         (arm_regno_class): Change return type to enum reg_class.
10799         (thumb1_expand_prologue): Use add_reg_note.
10800         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
10801         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
10802         in function call.
10803         * config/arm/gentune.sh: Add cast to enum type.
10804         * config/arm/arm-tune.md: Rebuild.
10805         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
10806         (ix86_split_fp_branch, predict_jump): Likewise.
10807         (ix86_expand_multi_arg_builtin): Change sub_code from enum
10808         insn_code to enum rtx_code.
10809         (ix86_builtin_vectorized_function): Add cast to enum type.
10810         * config/i386/i386.md (truncdfsf2): Change slot to enum
10811         ix86_stack_slot.
10812         (truncxf<mode>2, isinf<mode>2): Likewise.
10813         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
10814         enum type.
10815         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
10816         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
10817         (insert_bundle_state): Change 1 to INSERT in function call.
10818         (ia64_add_bundle_selector_before): Likewise.
10819         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
10820         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
10821         (restore_stack_nonlocal): Likewise.
10822         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
10823         function call.
10824         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
10825         function call.
10826         (mips_rtx_costs): Likewise.
10827         (mips_override_options): Add casts to enum type.
10828         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
10829         in function call.
10830         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
10831         (store_reg, set_reg_plus_d): Likewise.
10832         (hppa_expand_prologue, hppa_profile_hook): Likewise.
10833         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
10834         cast to enum type.
10835         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
10836         function call.
10837         (emit_unlikely_jump): Use add_reg_note.
10838         (rs6000_emit_allocate_stack): Likewise.
10839         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
10840         (output_toc): Change 1 to INSERT in function call.
10841         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
10842         (rs6000_initialize_trampoline): Likewise.
10843         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
10844         function call.
10845         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
10846         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
10847         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
10848         (save_gprs): Use add_reg_note.
10849         (s390_emit_prologue): Likewise.
10850         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
10851         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
10852         (sparc_fold_builtin): Add cast to enum type.
10853         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
10854         enum insn_code.
10855         (spu_expand_prologue): Use add_reg_note.
10856         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
10857
10858 2009-04-20  Ian Lance Taylor  <iant@google.com>
10859
10860         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
10861         (c_parser_postfix_expression_after_primary): Get VEC for list of
10862         arguments.  Get original types of arguments.  Call
10863         build_function_call_vec.
10864         (cached_expr_list_1, cached_expr_list_2): New static variables.
10865         (c_parser_expr_list): Change return type to VEC *.  Add
10866         p_orig_types parameter.  Change all callers.
10867         (c_parser_release_expr): New static function.
10868         (c_parser_vec_to_tree_list): New static function.
10869         * c-typeck.c (build_function_call): Rewrite to build a VEC and
10870         call build_function_call_vec.
10871         (build_function_call_vec): New function, based on old
10872         build_function_call.
10873         (convert_arguments): Remove nargs and argarray parameters.  Change
10874         values to a VEC.  Add origtypes parameter.
10875         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
10876         (convert_for_assignment): Add origtype parameter.  Change all
10877         callers.  If warn_cxx_compat, check for conversion to an enum
10878         type when calling a function.
10879         (store_init_value): Add origtype parameter.  Change all callers.
10880         (digest_init): Likewise.
10881         (struct init_node): Add origtype field.
10882         (add_pending_init): Add origtype parameter.  Change all callers.
10883         (output_init_element): Likewise.
10884         (output_pending_init_elements): Pass origtype from init_node to
10885         output_init_element.
10886         (process_init_element): Pass origtype from c_expr to
10887         output_init_element.
10888         (c_finish_return): Add origtype parameter.  Change all callers.
10889         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
10890         caller.
10891         (sync_resolve_params): Likewise.
10892         (sync_resolve_return): Change params to first_param.  Change caller.
10893         (resolve_overloaded_builtins): Change params to VEC *.  Change
10894         callers.  Save first parameter around call to build_function_call_vec.
10895         * c-decl.c (finish_decl): Add origtype parameter.  Change all
10896         callers.  Call build_function_call_vec rather than
10897         build_function_call for cleanup.
10898         * c-tree.h: Update declarations.
10899         * c-common.h: Update declarations.
10900         * stub-objc.c (objc_rewrite_function_call): Change parameter from
10901         params to first_param.
10902         * target.h (struct gcc_target): Change resolve_overloaded_builtin
10903         params parameter from tree to void *.
10904         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10905         Change arglist parameter to have type void *, and to be a pointer
10906         to a VEC.
10907         * config/rs6000/rs6000-protos.h
10908         (altivec_resolve_overloaded_builtin): Update declaration.
10909         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
10910         fnargs parameter to have type void *, and to be a pointer to a
10911         VEC.  Call build_function_call_vec instead of
10912         build_function_call.
10913         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
10914
10915 2009-04-20  Joey Ye  <joey.ye@intel.com>
10916             Xuepeng Guo  <xuepeng.guo@intel.com>
10917             H.J. Lu  <hongjiu.lu@intel.com>
10918
10919         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
10920
10921         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
10922         (IX86_LEA_PRIORITY): Likewise.
10923         (distance_non_agu_define): New function.
10924         (distance_agu_use): Likewise.
10925         (ix86_lea_for_add_ok): Likewise.
10926         (ix86_dep_by_shift_count): Likewise.
10927
10928         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
10929         should split for LEA.
10930
10931         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
10932         function.
10933         (ix86_dep_by_shift_count): Likewise.
10934
10935 2009-04-20  Richard Guenther  <rguenther@suse.de>
10936
10937         * expr.c (handled_component_p): Move ...
10938         * tree.h (handled_component_p): ... here.
10939         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
10940         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
10941         and REALPART_EXPR to be in one group.
10942
10943 2009-04-20  Richard Guenther  <rguenther@suse.de>
10944
10945         * basic-block.h (get_all_dominated_blocks): Declare.
10946         * dominance.c (get_all_dominated_blocks): New function.
10947         * tree-cfg.c (get_all_dominated_blocks): Remove.
10948         (remove_edge_and_dominated_blocks): Adjust.
10949         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
10950         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
10951         instead of recursing.
10952
10953 2009-04-20  Doug Kwan  <dougkwan@google.com>
10954
10955         * cgraph.h (cgraph_node_ptr): New type for vector functions.
10956         (struct cgraph_node_set_def): New type.
10957         (cgraph_node_set) New type. Also declare vector functions.
10958         (struct cgraph_node_set_element_def): New type.
10959         (cgraph_node_set_element): Ditto.
10960         (cgraph_node_set_iterator): New iterator type.
10961         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
10962         cgraph_node_set_remove, dump_cgraph_node_set,
10963         debug_cgraph_node_set): New prototypes.
10964         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
10965         cgraph_node_set_size): New inlines.
10966         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
10967         including cgraph.h.
10968         (struct ipa_opt_pass): Add struct cgraph_node_set_def
10969         argument to function 'write_summary'.
10970         * ipa.c: Include ggc.h.
10971         (hash_cgraph_node_set_element,
10972         eq_cgraph_node_set_element, cgraph_node_set_new,
10973         cgraph_node_set_add, cgraph_node_set_remove,
10974         cgraph_node_set_find, dump_cgraph_node_set,
10975         debug_cgraph_node_set): New functions.
10976         * Makefile.in (ipa.o): Add dependency on GGC_H.
10977
10978 2009-04-20  Ira Rosen  <irar@il.ibm.com>
10979
10980         PR tree-optimization/39675
10981         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
10982         check of the return code of vect_schedule_slp. Check that
10983         stmt_vec_info still exists for the statement, before checking its
10984         vectorization type.
10985
10986 2009-04-20  Michael Matz  <matz@suse.de>
10987
10988         * Makefile.in (generated_files): Take out $(simple_generated_c).
10989
10990 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
10991
10992         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
10993         (UINTPTR_TYPE):  Likewise.
10994
10995 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
10996
10997         PR c/37481
10998         * c-typeck.c (digest_init): Check for initializing an array with a
10999         string literal.
11000
11001 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
11002
11003         PR c/19771
11004         * c-semantics.c (pop_stmt_list): Propagate
11005         STATEMENT_LIST_HAS_LABEL to parent statement list.
11006
11007 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
11008
11009         * config/mips/mips.h (mips_tune_attr): New macro.
11010         * config/mips/mips.md (cpu): Use it.
11011
11012 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
11013
11014         PR c/38243
11015         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
11016         declaring a tag.
11017
11018 2009-04-19  Diego Novillo  <dnovillo@google.com>
11019
11020         * toplev.c (compile_file): Move call to coverage_finish ...
11021         * cgraphunit.c (ipa_passes): ... here.
11022         Call cgraph_process_new_functions.
11023         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
11024         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
11025
11026 2009-04-19  Jan Hubicka  <jh@suse.cz>
11027
11028         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
11029         cfun.
11030         (dump_cgraph_node): Dump can throw external flag.
11031         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
11032
11033 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11034
11035         PR c/32061
11036         PR c++/36954
11037         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
11038         * common.opt (Wlogical-op): Move from here...
11039         * c.opt (Wlogical-op): ... to here.
11040         * c-typeck.c (parser_build_binary_op): Update call to
11041         warn_logical_operator.
11042         * c-opts.c (c_common_post_options): Enable warn_logical_op with
11043         extra_warnings.
11044         * c-common.c (warn_logical_op): Update.
11045         * c-common.h (warn_logical_op): Update declaration.
11046
11047 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
11048
11049         * tree.c (protected_set_expr_location): Fix formatting.
11050
11051 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
11052
11053         PR c/27676
11054         * c-typeck.c (readonly_warning): new.
11055         (build_unary_op, build_modify_expr): Use readonly_warning for
11056         storing into something readonly but not const-qualified.
11057
11058 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
11059
11060         PR c/22367
11061         * c-typeck.c (build_unary_op): Check for taking address of
11062         expression of type void.
11063
11064 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
11065
11066         PR c/35210
11067         * c-typeck.c (build_function_call): Check for calling a function
11068         with qualified void return types.  Call require_complete_type when
11069         generating a trap.
11070
11071 2009-04-18  Jan Hubicka  <jh@suse.cz>
11072
11073         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
11074         Set nothrow flag.
11075         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
11076         can_throw_external flag.
11077         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
11078         * ipa-pure-const.c (ignore_edge): New function.
11079         (propagate): Compute order for NOTHROW computation; set NOTHROWs
11080         only over can_throw_external edges.
11081         (local_pure_const): Add nothrow flag.
11082         * ipa-utils.c (searchc): Add ignore_edge callback.
11083         (ipa_utils_reduced_inorder): Add ignore_edge callback.
11084         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
11085         (set_nothrow_function_flags): Update cgraph.
11086         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
11087
11088 2009-04-18  Richard Guenther  <rguenther@suse.de>
11089
11090         PR middle-end/39804
11091         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
11092         (fold_stmt): ... this and ...
11093         (fold_stmt_inplace): ... this.
11094         (fold_stmt_1): Fold references in calls and asms.
11095         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
11096
11097 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11098
11099         * tree-vrp.c (ssa_name_nonzero_p): Remove.
11100         * tree.h: Remove the prototype for ssa_name_nonzero_p.
11101
11102 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11103
11104         * tree.c (function_args_count): Remove.
11105         * tree.h: Remove the prototype for function_args_count.
11106
11107 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11108
11109         * tree-iterator.c (expr_only): Remove.
11110         * tree.h: Remove the prototype for expr_only.
11111
11112 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11113
11114         * reginfo.c (cannot_change_mode_set_regs): Remove.
11115         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
11116
11117 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
11118
11119         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
11120         whether operands 0 and 1 overlaps.
11121
11122 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11123
11124         PR middle-end/36902
11125         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
11126         pointer. Use warning_at instead of warning.
11127         (search_for_addr_array): Likewise.
11128         (check_array_bounds): Likewise.
11129         (check_all_array_refs): Check that the incoming edge is not in the
11130         list of edges to be removed.
11131         (check_all_array_refs): Avoid the temporal pointer.
11132         (vrp_visit_cond_stmt): Fix typo.
11133         (simplify_switch_using_ranges): Handle the case where the switch
11134         index is an integer constant.
11135
11136 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
11137
11138         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
11139
11140 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11141
11142         * doc/extend.texi, doc/invoke.texi: Fix typos.
11143
11144 2009-04-17  Cary Coutant  <ccoutant@google.com>
11145
11146         * tree-flow-inline.h (get_lineno): Fix inverted test.
11147
11148 2009-04-17  Diego Novillo  <dnovillo@google.com>
11149
11150         * tree-ssa-pre.c (create_expression_by_pieces): Remove
11151         assertion for AVAIL_OUT.
11152
11153 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
11154
11155         PR target/38627
11156         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
11157         * config/sh/linux-atomic.asm: Likewise.
11158
11159 2009-04-17  Diego Novillo  <dnovillo@google.com>
11160
11161         * except.c (debug_eh_tree): New.
11162         (struct eh_region, struct eh_status): Move ...
11163         * except.h: ... here.
11164         (add_type_for_runtime): Declare extern.
11165         (lookup_type_for_runtime): Likewise.
11166         (debug_eh_tree): Declare.
11167         * Makefile.in (GTFILES): List except.h before except.c
11168
11169 2009-04-17  Diego Novillo  <dnovillo@google.com>
11170
11171         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
11172         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
11173         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
11174         (find_vars_r): ... here.
11175         * tree-flow.h (find_referenced_vars_in): Declare.
11176         * tree-ssa-pre.c (create_expression_by_pieces): Assert
11177         that AVAIL_OUT exists for BLOCK.
11178         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
11179         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
11180         (tree-parloops.o): Likewise.
11181
11182 2009-04-17  Simon Baldwin  <simonb@google.com>
11183
11184         * toplev.c (default_tree_printer): Add handling for %E format.
11185
11186 2009-04-17  Diego Novillo  <dnovillo@google.com>
11187
11188         * tree-pretty-print.c (dump_generic_node): Add break after
11189         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
11190         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
11191         FUNCTION_TYPE together.  Call print_struct_decl when printing
11192         structures and TDF_SLIM is not given.
11193         (print_struct_decl): Fix logic for detecting recursion.
11194
11195 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
11196
11197         PR 31567
11198         * gcc.c (create_at_file): New.
11199         (compile_input_file_p): New.
11200         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
11201         * main.c (main): Update call to toplev_main.
11202         * toplev.c (toplev_main): Change signature. Call expandargv.
11203         * toplev.h (toplev_main): Change signature.
11204
11205 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
11206
11207         * dwarf2out.c (field_byte_offset): Use the type size as the field size
11208         if the latter is not constant.
11209
11210 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
11211
11212         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
11213
11214 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
11215
11216         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
11217         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
11218
11219 2009-04-17  Richard Guenther  <rguenther@suse.de>
11220
11221         * tree-ssa-structalias.c (get_constraint_for_component_ref):
11222         Handle component references view-converting an invariant address.
11223
11224 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
11225
11226         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
11227         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
11228         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
11229         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
11230         Use @deftypevr rather than @deftypevar.
11231
11232 2009-04-17  Richard Guenther  <rguenther@suse.de>
11233
11234         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
11235         (get_prop_source_stmt): Likewise.
11236         (can_propagate_from): Likewise.
11237
11238 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
11239
11240         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
11241         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
11242         (--with-multilib-list): Add default value.
11243         * configure: Regenerate.
11244         * Makefile.in (TM_ENDIAN_CONFIG): Define.
11245         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
11246         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
11247         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
11248         Don't add default cpu to multilib list unnecessarily, but do enable
11249         the relevant compiler option..
11250         Add support for --with-multilib-list=<blank> and
11251         --with-multilib-list=!<somelib> to supress unwanted multilibs.
11252         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
11253         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
11254         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
11255         TM_MULTILIB_CONFIG.
11256         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
11257         (MULTILIB_OSDIRNAMES): New variable.
11258         * config/sh/t-1e: Delete file.
11259         * config/sh/t-mlib-sh1: Delete file.
11260         * config/sh/t-mlib-sh2: Delete file.
11261         * config/sh/t-mlib-sh2a: Delete file.
11262         * config/sh/t-mlib-sh2a-nofpu: Delete file.
11263         * config/sh/t-mlib-sh2a-single: Delete file.
11264         * config/sh/t-mlib-sh2a-single-only: Delete file.
11265         * config/sh/t-mlib-sh2e: Delete file.
11266         * config/sh/t-mlib-sh3e: Delete file.
11267         * config/sh/t-mlib-sh4: Delete file.
11268         * config/sh/t-mlib-sh4-nofpu: Delete file.
11269         * config/sh/t-mlib-sh4-single: Delete file.
11270         * config/sh/t-mlib-sh4-single-only: Delete file.
11271         * config/sh/t-mlib-sh4a: Delete file.
11272         * config/sh/t-mlib-sh4a-nofpu: Delete file.
11273         * config/sh/t-mlib-sh4a-single: Delete file.
11274         * config/sh/t-mlib-sh4a-single-only: Delete file.
11275         * config/sh/t-mlib-sh4al: Delete file.
11276         * config/sh/t-mlib-sh5-32media: Delete file.
11277         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
11278         * config/sh/t-mlib-sh5-64media: Delete file.
11279         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
11280         * config/sh/t-mlib-sh5-compact: Delete file.
11281         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
11282         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
11283         * doc/install.texi (Options specification): Add
11284         --with-multilib-list and --with-endian.
11285
11286 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
11287
11288         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
11289         REVISION_c.
11290         (OBJS-common): Add plugin-version.o.
11291         (plugin-version.o): New.
11292         * gcc-plugin.h (plugin_gcc_version): New.
11293         (plugin_default_version_check): New.
11294         (plugin_init_func, plugin_init): Add version argument.
11295         * plugin-version.c: New.
11296         * plugin.c (str_plugin_gcc_version_name): New.
11297         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
11298         pass it to the init function.
11299         (plugin_default_version_check): New.
11300
11301 2009-04-17  Richard Guenther  <rguenther@suse.de>
11302
11303         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
11304         for decl-vs-decl disambiguation.
11305
11306 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
11307
11308         * config/s390/s390.h (s390_tune_attr): New macro definition.
11309         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
11310
11311 2009-04-17  Richard Guenther  <rguenther@suse.de>
11312
11313         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
11314         (fold_stmt_r): Likewise.
11315         (maybe_fold_reference): New function.
11316         (fold_gimple_assign): Handle cases fold_stmt_r did.
11317         (fold_stmt): Do not use fold_stmt_r.
11318         (fold_stmt_inplace): Likewise.
11319
11320 2009-04-17  Richard Guenther  <rguenther@suse.de>
11321
11322         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
11323         (record_equivalences_from_stmt): Remove useless checks and
11324         simplifications.
11325         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
11326         the type is already suitable.
11327
11328 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
11329
11330         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
11331
11332 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
11333
11334         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
11335         (CMPtype): Define as __gcc_CMPtype.
11336
11337 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
11338
11339         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
11340         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
11341
11342 2009-04-17  Richard Guenther  <rguenther@suse.de>
11343
11344         PR tree-optimization/39746
11345         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
11346         special-casing for builtins and static variable use/def.
11347         (call_may_clobber_ref_p_1): Likewise.
11348
11349 2009-04-16  Ian Lance Taylor  <iant@google.com>
11350
11351         * df.h: Include "timevar.h".
11352         (struct df_problem): Change tv_id field to timevar_id_t.
11353         * tree-pass.h: Include "timevar.h".
11354         (struct opt_pass): Change tv_id field to timevar_id_t.
11355         * timevar.h (timevar_id_t): Define TV_NONE.
11356         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
11357         TV_NONE rather than tv_id != 0.
11358         (execute_one_pass): Likewise.
11359         * Makefile.in (DF_H): Add $(TIMEVAR_H).
11360         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
11361         dependencies to $(TREE_PASS_H).
11362         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
11363         to TV_NONE.
11364         (pass_branch_target_load_optimize2): Likewise.
11365         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
11366         (pass_outof_cfg_layout_mode): Likewise.
11367         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
11368         (pass_rebuild_cgraph_edges): Likewise.
11369         (pass_remove_cgraph_callee_edges): Likewise.
11370         * df-core.c (pass_df_initialize_opt): Likewise.
11371         (pass_df_initialize_no_opt): Likewise.
11372         (pass_df_finish): Likewise.
11373         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
11374         * except.c (pass_set_nothrow_function_flags): Likewise.
11375         (pass_convert_to_eh_region_ranges): Likewise.
11376         * final.c (pass_compute_alignments): Likewise.
11377         * function.c (pass_instantiate_virtual_regs): Likewise.
11378         (pass_init_function): Likewise.
11379         (pass_leaf_regs): Likewise.
11380         (pass_match_asm_constraints): Likewise.
11381         * gimple-low.c (pass_lower_cf): Likewise.
11382         (pass_mark_used_blocks): Likewise.
11383         * init-regs.c (pass_initialize_regs): Likewise.
11384         * integrate.c (pass_initial_value_sets): Likewise.
11385         * ira.c (pass_ira): Likewise.
11386         * jump.c (pass_cleanup_barriers): Likewise.
11387         * omp-low.c (pass_expand_omp): Likewise.
11388         (pass_lower_omp): Likewise.
11389         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
11390         * recog.c (pass_split_all_insns): Likewise.
11391         (pass_split_after_reload): Likewise.
11392         (pass_split_before_regstack): Likewise.
11393         (pass_split_before_sched2): Likewise.
11394         (pass_split_for_shorten_branches): Likewise.
11395         * reginfo.c (pass_reginfo_init): Likewise.
11396         (pass_subregs_of_mode_init): Likewise.
11397         (pass_subregs_of_mode_finish): Likewise.
11398         * passes.c (pass_postreload): Likewise.
11399         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
11400         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
11401         (pass_warn_function_return): Likewise.
11402         (pass_warn_function_noreturn): Likewise.
11403         * tree-complex.c (pass_lower_complex): Likewise.
11404         (pass_lower_complex_O0): Likewise.
11405         * tree-if-conv.c (pass_if_conversion): Likewise.
11406         * tree-into-ssa.c (pass_build_ssa): Likewise.
11407         * tree-mudflap.c (pass_mudflap_1): Likewise.
11408         (pass_mudflap_2): Likewise.
11409         * tree-nomudflap.c (pass_mudflap_1): Likewise.
11410         (pass_mudflap_2): Likewise.
11411         * tree-nrv.c (pass_return_slot): Likewise.
11412         * tree-object-size.c (pass_object_sizes): Likewise.
11413         * tree-optimize.c (pass_all_optimizations): Likewise.
11414         (pass_early_local_passes): Likewise.
11415         (pass_all_early_optimizations): Likewise.
11416         (pass_cleanup_cfg): Likewise.
11417         (pass_cleanup_cfg_post_optimizing): Likewise.
11418         (pass_free_datastructures): Likewise.
11419         (pass_free_cfg_annotations): Likewise.
11420         (pass_fixup_cfg): Likewise.
11421         (pass_init_datastructures): Likewise.
11422         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
11423         (pass_late_warn_uninitialized): Likewise.
11424         (pass_update_address_taken): Likewise.
11425         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
11426         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
11427         (pass_cse_sincos): Likewise.
11428         (pass_convert_to_rsqrt): Likewise.
11429         * tree-ssa-structalias.c (pass_build_alias): Likewise.
11430         * tree-stdarg.c (pass_stdarg): Likewise.
11431         * tree-tailcall.c (pass_tail_recursion): Likewise.
11432         (pass_tail_calls): Likewise.
11433         * tree-vect-generic.c (pass_lower_vector): Likewise.
11434         (pass_lower_vector_ssa): Likewise.
11435         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
11436
11437 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
11438
11439         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
11440         XLR entry.
11441         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
11442         Handle -march=xlr.
11443         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
11444         logical and signext.
11445
11446 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
11447
11448         PR target/39767
11449         * config/sh/predicates.md (arith_operand): Check if the operand
11450         of TRUNCATE is a REG.
11451
11452 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11453
11454         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
11455         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
11456
11457 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11458
11459         * tree-iterator.c (tsi_split_statement_list_after,
11460         tsi_split_statement_list_before): Remove.
11461         * tree-iterator.h: Remove the prototypes for
11462         tsi_split_statement_list_after and tsi_split_statement_list_before.
11463
11464 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11465
11466         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
11467         * tree-ssa-propagate.h: Remove the prototype for
11468         stmt_makes_single_load.
11469
11470 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11471
11472         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
11473         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
11474
11475 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11476
11477         * tree-iterator.c (EXPR_LAST_BODY): Remove.
11478
11479 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11480
11481         * except.c (eh_region_outer_p): Remove.
11482         * except.h: Remove the prototype for eh_region_outer_p.
11483
11484 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11485
11486         * function.c (current_function_assembler_name): Remove.
11487         * function.h: Remove the prototype for
11488         current_function_assembler_name.
11489
11490 2009-04-16  Ian Lance Taylor  <iant@google.com>
11491
11492         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
11493         (add_reg_note): Call alloc_reg_note.
11494         * rtl.h (alloc_reg_note): Declare.
11495         * combine.c (try_combine): Use alloc_reg_note.
11496         (recog_for_combine, move_deaths): Likewise.
11497         (distribute_notes): Use alloc_reg_note and add_reg_note.
11498         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
11499         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
11500         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
11501
11502 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
11503
11504         PR rtl-optimization/39762
11505         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
11506         ira_may_move_out_cost): Add comments about way of their usage.
11507         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
11508
11509         * ira-conflicts.c (process_regs_for_copy): Use function
11510         ira_get_register_move_cost instead of global
11511         ira_register_move_cost.
11512
11513         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
11514         color_pass, move_spill_restore, update_curr_costs): Ditto.
11515
11516         * ira-lives.c (process_single_reg_class_operands): Ditto.
11517
11518         * ira-emit.c (emit_move_list): Ditto.
11519
11520         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
11521         (record_reg_classes): Ditto.  Use functions
11522         ira_get_register_move_cost and ira_get_may_move_cost instead of
11523         global vars ira_register_move_cost, ira_may_move_out_cost and
11524         ira_may_move_in_cost.
11525         (record_address_regs): Don't call ira_init_register_move_cost.
11526         Use function ira_get_may_move_cost instead of global
11527         ira_may_move_in_cost.
11528         (process_bb_node_for_hard_reg_moves): Use function
11529         ira_get_register_move_cost instead of global ira_register_move_cost.
11530         (ira_costs): Don't call ira_init_register_move_cost.
11531
11532 2009-04-16  Richard Guenther  <rguenther@suse.de>
11533
11534         * tree-cfg.c (verify_gimple_assign_binary):
11535         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
11536         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
11537         (create_general_new_stmt): Note that this function is broken.
11538
11539 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
11540
11541         * common.opt (fhelp): Add Var(help_flag).
11542         * gcc-plugin.h (plugin_info): Add help.
11543         * plugin.c (plugin_name_args): Add help.
11544         (register_plugin_info): Set plugin->help.
11545         (print_help_one_plugin): New.
11546         (print_plugins_help): New.
11547         * plugin.h (print_plugins_help): New.
11548         * toplev.c (toplev_main): Call print_plugins_help if needed.
11549
11550 2009-04-16  Richard Guenther  <rguenther@suse.de>
11551
11552         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
11553         (gimple_ior_addresses_taken_1): New function.
11554         (gimple_ior_addresses_taken): Likewise.
11555         * gimple.h (struct gimple_statement_with_ops_base): Remove
11556         addresses_taken member.
11557         (gimple_ior_addresses_taken): Declare.
11558         (gimple_addresses_taken, gimple_addresses_taken_ptr,
11559         gimple_set_addresses_taken): Remove.
11560         * ipa-reference.c (mark_address): New function.
11561         (scan_stmt_for_static_refs): Use it for marking addresses taken.
11562         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
11563         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
11564         (gimple_add_to_addresses_taken): Remove.
11565         (get_tmr_operands): Call mark_address_taken.
11566         (get_asm_expr_operands): Likewise.
11567         (get_expr_operands): Likewise.
11568         (build_ssa_operands): Do not clear the addresses_taken bitmap.
11569         (free_stmt_operands): Do not free it.
11570         * tree-ssa.c (delete_tree_ssa): Likewise.
11571         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
11572
11573 2009-04-16  Richard Guenther  <rguenther@suse.de>
11574
11575         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
11576         (walk_stmt_load_store_ops): Likewise.
11577         * gimple.c (get_base_loadstore): New function.
11578         (walk_stmt_load_store_addr_ops): Likewise.
11579         (walk_stmt_load_store_ops): Likewise.
11580         * ipa-pure-const.c (check_op): Simplify.
11581         (check_load, check_store): New functions.
11582         (check_stmt): Use walk_stmt_load_store_ops.
11583         * ipa-reference.c (mark_load): Adjust signature.
11584         (mark_store): Likewise.
11585         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
11586
11587 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
11588
11589         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
11590         (plugin_info): New.
11591         * opts.c (common_handle_option): Don't call print_version.
11592         * plugin.c (plugin_name_args): Add version.
11593         (register_plugin_info): New.
11594         (register_callback): Handle PLUGIN_INFO.
11595         (try_init_one_plugin): New.
11596         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
11597         if failed to init.
11598         (finalize_one_plugin): New.
11599         (finalize_plugins): New.
11600         (print_one_plugin): New.
11601         (print_plugins_versions): New.
11602         * plugin.h (print_plugins_versions): New.
11603         (finalize_plugins): New.
11604         * toplev.c (compile_file): Don't call initialize_plugins.
11605         (print_version): Call print_plugins_versions.
11606         (toplev_main): Call initialize_plugins. Print version if needed.
11607         Call finalize_plugins.
11608
11609 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
11610
11611         * common.opt (fversion): New.
11612         * gcc.c (print_version): New.
11613         (process_command): Don't print the version. Just set print_version.
11614         (main): Print version. Call subprocesses if print_version and
11615         verbose_flag are set.
11616         * opts.c (common_handle_option): Handle OPT_fversion.
11617
11618 2009-04-16  Richard Guenther  <rguenther@suse.de>
11619             Ira Rosen  <irar@il.ibm.com>
11620
11621         PR tree-optimization/39698
11622         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
11623         type of the reduction variable.  Only generate the def if
11624         it is needed.
11625
11626         * omp-low.c (expand_omp_for_generic): When converting to a pointer
11627         make sure to first convert to an integer of the same precision.
11628         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
11629         the type of the evolution correctly in computing the new
11630         induction variable base.
11631
11632 2009-04-16  Richard Guenther  <rguenther@suse.de>
11633
11634         PR middle-end/39625
11635         * tree-cfg.c (make_blocks): Split statements with to-be
11636         abnormal SSA names on the lhs.
11637
11638 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
11639
11640         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
11641         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
11642         * c-typeck.c (really_start_incremental_init): Likewise.
11643         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
11644         (TARGET_INITIALIZER): Remove it.
11645         * target.h (struct target): Remove vector_opaque_p.
11646         * tree.c (build_opaque_vector_type): New.
11647         * tree.h (TYPE_VECTOR_OPAQUE): New.
11648         (build_opaque_vector_type): Declare.
11649         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
11650         * config/rs6000/rs6000.c (build_opaque_vector_type,
11651         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
11652         (rs6000_init_builtins): Use build_opaque_vector_type for
11653         opaque_V4SI_type_node.
11654
11655 2009-04-15  Catherine Moore  <clm@codesourcery.com>
11656
11657         * debug.h (set_name):  Declare.
11658         * dwarf2out.c (dwarf2out_set_name): Declare.
11659         (dwarf2_debug_hooks): Add set_name.
11660         (find_AT_string): New.
11661         (add_AT_string): Call find_AT_string.
11662         (dwarf2out_set_name): New.
11663         * cp/decl.c (grokdeclarator): Call set_name.
11664         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
11665         * debug.c (do_nothing_debug_hooks):  Likewise.
11666         * dbxout.c (dbx_debug_hooks): Likewise.
11667         * sdbout.c (sdb_debug_hooks): Likewise.
11668
11669 2009-04-15  Michael Eager  <eager@eagercon.com>
11670
11671         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
11672         reg for single-precision FPU.
11673         * config/rs6000/rs6000.md (movsi_internal1): Only for
11674         !TARGET_SINGLE_FPU.
11675         (movsi_internal1_single): New. Add pattern to move SI values to/from
11676         single-precision FP regs.
11677
11678 2009-04-15  Richard Guenther  <rguenther@suse.de>
11679
11680         * omp-low.c (lower_rec_input_clauses): Build correct address
11681         expressions.
11682         (expand_omp_for_generic): Fix multiplication type.
11683         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
11684         (generate_memset_zero): Fix types.
11685         * tree-profile.c (prepare_instrumented_value): Correctly
11686         widen a pointer.
11687
11688 2009-04-15  Ian Lance Taylor  <iant@google.com>
11689
11690         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
11691         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
11692         for -Wall and for -Wc++-compat.
11693         (c_common_post_options): For C++, set warn_enum_compare if not
11694         already set.
11695         * c-tree.h (struct c_expr): Add field original_type.
11696         (build_external_ref): Update declaration.
11697         * c-parser.c (c_parser_braced_init): Set original_type.
11698         (c_parser_initelt): Likewise.
11699         (c_parser_expr_no_commas): Likewise.
11700         (c_parser_conditional_expression): Likewise.
11701         (c_parser_cast_expression): Likewise.
11702         (c_parser_unary_expression): Likewise.  Pull setting of
11703         original_code to top of function.
11704         (c_parser_sizeof_expression): Set original_type.
11705         (c_parser_alignof_expression): Likewise.
11706         (c_parser_postfix_expression): Likewise.  Pull setting of
11707         original_code to top of function.
11708         (c_parser_postfix_expression_after_paren_type): Set original_type.
11709         (c_parser_postfix_expression_after_primary): Likewise.
11710         (c_parser_expression): Likewise.
11711         * c-typeck.c (build_external_ref): Add type parameter.  Change all
11712         callers.
11713         (c_expr_sizeof_expr): Set original_type field.
11714         (parser_build_unary_op): Likewise.
11715         (parser_build_binary_op): Likewise.  Optionally warn about
11716         comparisons of enums of different types.
11717         (digest_init): Set original_type field.
11718         (really_start_incremental_init): Likewise.
11719         (push_init_level, pop_init_level): Likewise.
11720         * doc/invoke.texi (Warning Options): -Wenum-compare now
11721         supported in C.
11722
11723 2009-04-15  Richard Guenther  <rguenther@suse.de>
11724
11725         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
11726         out a necessary conversion.
11727         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
11728         names we didn't value number.
11729         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
11730
11731 2009-04-15  Richard Guenther  <rguenther@suse.de>
11732
11733         PR tree-optimization/39764
11734         * tree-ssa-ccp.c (get_value): Canonicalize value with
11735         canonicalize_float_value.
11736
11737 2009-04-15  Jan Hubicka  <jh@suse.cz>
11738
11739         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
11740         Wrong version of patch.
11741
11742 2009-04-15  Jan Hubicka  <jh@suse.cz>
11743
11744         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
11745
11746 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
11747
11748         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
11749         our distinct integral and vector types.
11750
11751 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
11752
11753         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
11754         * init.c (build_vtbl_address): Remove call to assemble_external.
11755
11756 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
11757
11758         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
11759         output for other floating point modes.
11760
11761 2009-04-14  Diego Novillo  <dnovillo@google.com>
11762
11763         * diagnostic.c (diagnostic_report_diagnostic): Do not
11764         warn about loaded plugins for DK_ERROR and DK_WARNING.
11765         * c-decl.c (declspecs_add_type): Move call to
11766         invoke_plugin_callbacks ...
11767         * c-parser.c (c_parser_declspecs): ... here.
11768         * plugin.c (dump_active_plugins): Tidy output.
11769
11770 2009-04-14  Diego Novillo  <dnovillo@google.com>
11771             Le-Chun Wu  <lcwu@google.com>
11772
11773         * configure.ac: Add --enable-plugin support.
11774         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
11775         * Makefile.in (PLUGIN_H): Define.
11776         Export ENABLE_PLUGIN and GMPINC to site.exp.
11777         Add PLUGINLIBS to link command.
11778         Add/modify dependencies for plugin.o and files including plugin.h.
11779         (plugin.o): New.
11780         * config.in: Regenerate.
11781
11782         * opts.c (common_handle_option): Handle OPT_fplugin_ and
11783         OPT_fplugin_arg_.
11784
11785 2009-04-14  Le-Chun Wu  <lcwu@google.com>
11786
11787         * tree-pass.h (register_one_dump_file): Add a prototype for
11788         register_one_dump_file.
11789         * toplev.c (compile_file): Call initialize_plugins.
11790         (do_compile): Call invoke_plugin_callbacks.
11791         (toplev_main): Call invoke_plugin_callbacks.
11792         * common.opt: Add -fplugin= and -fplugin-arg-.
11793         * gcc-plugin.h: New public header file for plugins to include.
11794         * plugin.c: New source file.
11795         * plugin.h: New internal header file.
11796         * passes.c (register_one_dump_file): Make it external.
11797
11798         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
11799
11800 2009-04-14  Diego Novillo  <dnovillo@google.com>
11801
11802         * doc/plugins.texi: New.
11803         * doc/gccint.texi: Add reference to Plugins chapter.
11804         * doc/invoke.texi: Document -fplugin and -fplugin-arg
11805         * diagnostic.c (diagnostic_report_diagnostic): Warn about
11806         loaded plugins, if any.
11807         * timevar.def (TV_PLUGIN_INIT): Define.
11808         (TV_PLUGIN_RUN): Define.
11809         * plugin.c: Include timevar.h
11810         (plugins_active_p): New.
11811         (dump_active_plugins): New.
11812         (debug_active_plugins): New.
11813
11814 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
11815
11816         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
11817         library paths.
11818         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
11819
11820 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
11821
11822         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
11823         the same as a minus without a shift.
11824
11825 2009-04-14  Nick Clifton  <nickc@redhat.com>
11826
11827         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
11828         comparisons with small integers will always produce a short
11829         branch.
11830
11831 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
11832
11833         Merge:
11834         2008-12-19  Diego Novillo  <dnovillo@google.com>
11835
11836         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
11837
11838 2009-04-14  Richard Guenther  <rguenther@suse.de>
11839
11840         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
11841         verification.
11842         (verify_gimple_assign_binary): Likewise.  Handle shifts and
11843         rotates correctly.
11844         (verify_gimple_phi): Print the mismatched argument position.
11845         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
11846         Fix types.
11847         (vect_update_init_of_dr): Likewise.
11848         * matrix-reorg.c (transform_access_sites): Do what the
11849         comment suggests.
11850         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
11851
11852 2009-04-13  Michael Eager  <eager@eagercon.com>
11853
11854         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
11855         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
11856         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
11857         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
11858         remove duplicate config
11859
11860 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11861
11862         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
11863         file_name:line_number type locator of the call site.
11864
11865 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
11866
11867         * genautomata.c: Put blank after comma.
11868         (automaton_decls): New.
11869         (struct unit_usage): Add comments to member next.
11870         (store_alt_unit_usage): Keep the list ordered.
11871         (unit_present_on_list_p, equal_alternatives_p): New.
11872         (check_regexp_units_distribution): Check units distribution
11873         correctness correctly.
11874         (main): Don't write automata if error is found.  Return correct
11875         exit code.
11876
11877         * config/m68k/cf.md (cfv4_ds): Remove.
11878         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
11879         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
11880
11881         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
11882         power4-load-ext, power4-store, power4-store-update,
11883         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
11884         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
11885         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
11886         power4-sqrt, power4-isync): Modify reservation to make correct
11887         unit distribution to automata.
11888
11889         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
11890         power5-store-update, power5-two, power5-three, power5-lmul,
11891         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
11892
11893 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
11894
11895         * except.c (pass_set_nothrow_function_flags): Set name and add
11896         TODO_dump_func.
11897         (set_nothrow_function_flags): Mention in the dump file when
11898         changing a function to nothrow.
11899
11900 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
11901
11902         PR/39066
11903         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
11904         instead of unsigned long.
11905
11906 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11907
11908         * config/arm/arm.c (return_used_this_function): Remove.
11909         (arm_output_function_prologue): Remove use of
11910         return_used_this_function.
11911         (output_return_instruction): Replace use of
11912         return_used_this_function
11913         by cfun->machine->return_used_this_function.
11914         (arm_output_epilogue): Likewise.
11915         (arm_output_function_epilogue): Likewise.
11916         (thumb_unexpanded_epilogue): Likewise.
11917         * config/arm/arm.h (struct machine_function):
11918         New member return_used_this_function.
11919
11920 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
11921
11922         * doc/install.texi: Correct description of default directory for
11923         --with-gxx-include-dir.
11924
11925 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
11926
11927         * fold-const.c (build_range_check): Properly deal with enumeral and
11928         boolean base types.
11929
11930 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
11931
11932         * doc/invoke.texi (max_gcse_passes): Remove documentation.
11933         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
11934         * params.h (MAX_GCSE_PASSES): Remove.
11935         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
11936         in sequence.  Remove ability to run multiple passes.
11937         (bypass_jumps): Report run as third CPROP pass.
11938
11939 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
11940
11941         PR middle-end/39651
11942         * except.c (can_throw_external): Look at each insn in a SEQUENCE
11943         when deciding whether the whole SEQUENCE can throw.
11944
11945 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
11946
11947         PR target/39740
11948         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
11949         offseted label references.
11950
11951 2009-04-11  Jan Hubicka  <jh@suse.cz>
11952
11953         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
11954
11955 2009-04-11  Richard Guenther  <rguenther@suse.de>
11956
11957         PR middle-end/39732
11958         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
11959         return variables as TREE_ADDRESSABLE.
11960
11961 2009-04-11  Richard Guenther  <rguenther@suse.de>
11962
11963         PR tree-optimization/39713
11964         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
11965         reference trees have SSA_NAME operands.
11966
11967 2009-04-11  Richard Guenther  <rguenther@suse.de>
11968
11969         PR c/39712
11970         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
11971         address expressions.
11972
11973 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
11974
11975         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
11976         match changes in Cygwin 1.7
11977         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
11978         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
11979
11980 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
11981
11982         PR tree-optimization/39701
11983         * doc/invoke.texi (Optimization Options): Document change in
11984         meaning and initialization of -fdelete-null-pointer-checks.
11985
11986 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
11987
11988         PR middle-end/39701
11989         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
11990
11991         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
11992         here.
11993
11994         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
11995
11996 2009-04-10  Chao-ying Fu  <fu@mips.com>
11997
11998         * doc/tm.texi (Instruction Output): Document
11999         TARGET_ASM_FINAL_POSTSCAN_INSN.
12000         * target.h (final_postscan_insn): New field in asm_out.
12001         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
12002         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
12003         * final.c (final_scan_insn): Call
12004         targetm.asm_out.final_postscan_insn after outputting
12005         an asm macro and a normal instruction.
12006
12007         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
12008         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
12009         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
12010         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
12011         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
12012
12013 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
12014
12015         PR middle-end/39701
12016         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
12017         variables as non-NULL even with -fdelete-null-pointer-checks.
12018
12019 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
12020
12021         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
12022
12023 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
12024
12025         PR target/39678
12026         * config/i386/i386.c (classify_argument): Handle SCmode with
12027         (bit_offset % 64) != 0.
12028
12029 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
12030
12031         * doc/invoke.texi (Optimize Options): Add cross-reference to
12032         -Q --help=optimizers examples.
12033
12034 2009-04-10  Ben Elliston  <bje@au.ibm.com>
12035
12036         PR target/36800
12037         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
12038         regalign for the reg == fpr and TDmode case.
12039
12040 2009-04-09  David Ayers  <ayers@fsfe.org>
12041
12042         PR objc/29200
12043         * objc/objc-act.c (warn_with_method): Remove helper function.
12044         (check_duplicates): Call warning and inform directly.
12045         (really_start_method): Likewise.
12046
12047 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
12048
12049         * expmed.c (expand_divmod): Always use a comparison for a division
12050         by a large unsigned integer.
12051
12052         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
12053         for things others than variables or functions as nonzero.
12054
12055 2009-04-09  Nick Clifton  <nickc@redhat.com>
12056
12057         * unwind-compat.c: Change copyright header to refer to version
12058         3 of the GNU General Public License with version 3.1 of the
12059         GCC Runtime Library Exception and to point readers at the
12060         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
12061         * config/alpha/crtfastmath.c: Likewise.
12062         * config/alpha/linux-unwind.h: Likewise.
12063         * config/alpha/qrnnd.asm: Likewise.
12064         * config/alpha/vms-crt0-64.c: Likewise.
12065         * config/alpha/vms-crt0.c: Likewise.
12066         * config/alpha/vms-dwarf2.asm: Likewise.
12067         * config/alpha/vms-dwarf2eh.asm: Likewise.
12068         * config/alpha/vms-psxcrt0-64.c: Likewise.
12069         * config/alpha/vms-psxcrt0.c: Likewise.
12070         * config/alpha/vms_tramp.asm: Likewise.
12071         * config/arc/initfini.c: Likewise.
12072         * config/arc/lib1funcs.asm: Likewise.
12073         * config/arm/bpabi-v6m.S: Likewise.
12074         * config/arm/bpabi.S: Likewise.
12075         * config/arm/bpabi.c: Likewise.
12076         * config/arm/crti.asm: Likewise.
12077         * config/arm/crtn.asm: Likewise.
12078         * config/arm/ieee754-df.S: Likewise.
12079         * config/arm/ieee754-sf.S: Likewise.
12080         * config/arm/lib1funcs.asm: Likewise.
12081         * config/arm/libunwind.S: Likewise.
12082         * config/arm/linux-atomic.c: Likewise.
12083         * config/arm/mmintrin.h: Likewise.
12084         * config/arm/pr-support.c: Likewise.
12085         * config/arm/unaligned-funcs.c: Likewise.
12086         * config/arm/unwind-arm.c: Likewise.
12087         * config/arm/unwind-arm.h: Likewise.
12088         * config/avr/libgcc.S: Likewise.
12089         * config/bfin/crti.s: Likewise.
12090         * config/bfin/crtlibid.s: Likewise.
12091         * config/bfin/crtn.s: Likewise.
12092         * config/bfin/lib1funcs.asm: Likewise.
12093         * config/bfin/linux-unwind.h: Likewise.
12094         * config/cris/arit.c: Likewise.
12095         * config/cris/cris_abi_symbol.c: Likewise.
12096         * config/darwin-64.c: Likewise.
12097         * config/darwin-crt2.c: Likewise.
12098         * config/darwin-crt3.c: Likewise.
12099         * config/darwin.h: Likewise.
12100         * config/dbxelf.h: Likewise.
12101         * config/dfp-bit.c: Likewise.
12102         * config/dfp-bit.h: Likewise.
12103         * config/elfos.h: Likewise.
12104         * config/fixed-bit.c: Likewise.
12105         * config/fixed-bit.h: Likewise.
12106         * config/fp-bit.c: Likewise.
12107         * config/fp-bit.h: Likewise.
12108         * config/fr30/crti.asm: Likewise.
12109         * config/fr30/crtn.asm: Likewise.
12110         * config/fr30/lib1funcs.asm: Likewise.
12111         * config/freebsd-spec.h: Likewise.
12112         * config/frv/cmovd.c: Likewise.
12113         * config/frv/cmovh.c: Likewise.
12114         * config/frv/cmovw.c: Likewise.
12115         * config/frv/frvbegin.c: Likewise.
12116         * config/frv/frvend.c: Likewise.
12117         * config/frv/lib1funcs.asm: Likewise.
12118         * config/glibc-stdint.h: Likewise.
12119         * config/h8300/clzhi2.c: Likewise.
12120         * config/h8300/crti.asm: Likewise.
12121         * config/h8300/crtn.asm: Likewise.
12122         * config/h8300/ctzhi2.c: Likewise.
12123         * config/h8300/fixunssfsi.c: Likewise.
12124         * config/h8300/lib1funcs.asm: Likewise.
12125         * config/h8300/parityhi2.c: Likewise.
12126         * config/h8300/popcounthi2.c: Likewise.
12127         * config/i386/ammintrin.h: Likewise.
12128         * config/i386/att.h: Likewise.
12129         * config/i386/avxintrin.h: Likewise.
12130         * config/i386/biarch64.h: Likewise.
12131         * config/i386/bmmintrin.h: Likewise.
12132         * config/i386/cpuid.h: Likewise.
12133         * config/i386/cross-stdarg.h: Likewise.
12134         * config/i386/crtfastmath.c: Likewise.
12135         * config/i386/crtprec.c: Likewise.
12136         * config/i386/cygming-crtbegin.c: Likewise.
12137         * config/i386/cygming-crtend.c: Likewise.
12138         * config/i386/cygwin.asm: Likewise.
12139         * config/i386/emmintrin.h: Likewise.
12140         * config/i386/gmm_malloc.h: Likewise.
12141         * config/i386/gthr-win32.c: Likewise.
12142         * config/i386/i386.h: Likewise.
12143         * config/i386/immintrin.h: Likewise.
12144         * config/i386/linux-unwind.h: Likewise.
12145         * config/i386/linux64.h: Likewise.
12146         * config/i386/mm3dnow.h: Likewise.
12147         * config/i386/mmintrin-common.h: Likewise.
12148         * config/i386/mmintrin.h: Likewise.
12149         * config/i386/nmmintrin.h: Likewise.
12150         * config/i386/pmm_malloc.h: Likewise.
12151         * config/i386/pmmintrin.h: Likewise.
12152         * config/i386/smmintrin.h: Likewise.
12153         * config/i386/sol2-c1.asm: Likewise.
12154         * config/i386/sol2-ci.asm: Likewise.
12155         * config/i386/sol2-cn.asm: Likewise.
12156         * config/i386/sol2-gc1.asm: Likewise.
12157         * config/i386/tmmintrin.h: Likewise.
12158         * config/i386/unix.h: Likewise.
12159         * config/i386/w32-unwind.h: Likewise.
12160         * config/i386/wmmintrin.h: Likewise.
12161         * config/i386/x86-64.h: Likewise.
12162         * config/i386/x86intrin.h: Likewise.
12163         * config/i386/xmmintrin.h: Likewise.
12164         * config/ia64/crtbegin.asm: Likewise.
12165         * config/ia64/crtend.asm: Likewise.
12166         * config/ia64/crtfastmath.c: Likewise.
12167         * config/ia64/crti.asm: Likewise.
12168         * config/ia64/crtn.asm: Likewise.
12169         * config/ia64/fde-glibc.c: Likewise.
12170         * config/ia64/lib1funcs.asm: Likewise.
12171         * config/ia64/linux-unwind.h: Likewise.
12172         * config/ia64/quadlib.c: Likewise.
12173         * config/ia64/unwind-ia64.c: Likewise.
12174         * config/linux.h: Likewise.
12175         * config/m32c/m32c-lib1.S: Likewise.
12176         * config/m32c/m32c-lib2-trapv.c: Likewise.
12177         * config/m32c/m32c-lib2.c: Likewise.
12178         * config/m32r/initfini.c: Likewise.
12179         * config/m68hc11/larith.asm: Likewise.
12180         * config/m68hc11/m68hc11-crt0.S: Likewise.
12181         * config/m68k/cf.md: Likewise.
12182         * config/m68k/crti.s: Likewise.
12183         * config/m68k/crtn.s: Likewise.
12184         * config/m68k/lb1sf68.asm: Likewise.
12185         * config/m68k/linux-unwind.h: Likewise.
12186         * config/mcore/crti.asm: Likewise.
12187         * config/mcore/crtn.asm: Likewise.
12188         * config/mcore/lib1.asm: Likewise.
12189         * config/mips/linux-unwind.h: Likewise.
12190         * config/mips/loongson.h: Likewise.
12191         * config/mips/mips16.S: Likewise.
12192         * config/mmix/crti.asm: Likewise.
12193         * config/mmix/crtn.asm: Likewise.
12194         * config/pa/fptr.c: Likewise.
12195         * config/pa/hpux-unwind.h: Likewise.
12196         * config/pa/lib2funcs.asm: Likewise.
12197         * config/pa/linux-atomic.c: Likewise.
12198         * config/pa/linux-unwind.h: Likewise.
12199         * config/pa/milli64.S: Likewise.
12200         * config/pa/quadlib.c: Likewise.
12201         * config/pa/stublib.c: Likewise.
12202         * config/picochip/libgccExtras/adddi3.asm: Likewise.
12203         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
12204         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
12205         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
12206         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
12207         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
12208         * config/picochip/libgccExtras/divmod15.asm: Likewise.
12209         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
12210         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
12211         * config/picochip/libgccExtras/longjmp.asm: Likewise.
12212         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
12213         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
12214         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
12215         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
12216         * config/picochip/libgccExtras/setjmp.asm: Likewise.
12217         * config/picochip/libgccExtras/subdi3.asm: Likewise.
12218         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
12219         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
12220         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
12221         * config/rs6000/750cl.h: Likewise.
12222         * config/rs6000/altivec.h: Likewise.
12223         * config/rs6000/biarch64.h: Likewise.
12224         * config/rs6000/crtresfpr.asm: Likewise.
12225         * config/rs6000/crtresgpr.asm: Likewise.
12226         * config/rs6000/crtresxfpr.asm: Likewise.
12227         * config/rs6000/crtresxgpr.asm: Likewise.
12228         * config/rs6000/crtsavfpr.asm: Likewise.
12229         * config/rs6000/crtsavgpr.asm: Likewise.
12230         * config/rs6000/darwin-asm.h: Likewise.
12231         * config/rs6000/darwin-fallback.c: Likewise.
12232         * config/rs6000/darwin-fpsave.asm: Likewise.
12233         * config/rs6000/darwin-ldouble.c: Likewise.
12234         * config/rs6000/darwin-tramp.asm: Likewise.
12235         * config/rs6000/darwin-unwind.h: Likewise.
12236         * config/rs6000/darwin-vecsave.asm: Likewise.
12237         * config/rs6000/darwin-world.asm: Likewise.
12238         * config/rs6000/e500crtres32gpr.asm: Likewise.
12239         * config/rs6000/e500crtres64gpr.asm: Likewise.
12240         * config/rs6000/e500crtres64gprctr.asm: Likewise.
12241         * config/rs6000/e500crtrest32gpr.asm: Likewise.
12242         * config/rs6000/e500crtrest64gpr.asm: Likewise.
12243         * config/rs6000/e500crtresx32gpr.asm: Likewise.
12244         * config/rs6000/e500crtresx64gpr.asm: Likewise.
12245         * config/rs6000/e500crtsav32gpr.asm: Likewise.
12246         * config/rs6000/e500crtsav64gpr.asm: Likewise.
12247         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
12248         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
12249         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
12250         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
12251         * config/rs6000/eabi-ci.asm: Likewise.
12252         * config/rs6000/eabi-cn.asm: Likewise.
12253         * config/rs6000/eabi.asm: Likewise.
12254         * config/rs6000/linux-unwind.h: Likewise.
12255         * config/rs6000/linux64.h: Likewise.
12256         * config/rs6000/paired.h: Likewise.
12257         * config/rs6000/paired.md: Likewise.
12258         * config/rs6000/ppc64-fp.c: Likewise.
12259         * config/rs6000/ppu_intrinsics.h: Likewise.
12260         * config/rs6000/rs6000.h: Likewise.
12261         * config/rs6000/si2vmx.h: Likewise.
12262         * config/rs6000/sol-ci.asm: Likewise.
12263         * config/rs6000/sol-cn.asm: Likewise.
12264         * config/rs6000/spe.h: Likewise.
12265         * config/rs6000/spu2vmx.h: Likewise.
12266         * config/rs6000/sysv4.h: Likewise.
12267         * config/rs6000/tramp.asm: Likewise.
12268         * config/rs6000/vec_types.h: Likewise.
12269         * config/s390/linux-unwind.h: Likewise.
12270         * config/s390/tpf-unwind.h: Likewise.
12271         * config/score/crti.asm: Likewise.
12272         * config/score/crtn.asm: Likewise.
12273         * config/sh/crt1.asm: Likewise.
12274         * config/sh/crti.asm: Likewise.
12275         * config/sh/crtn.asm: Likewise.
12276         * config/sh/divtab-sh4-300.c: Likewise.
12277         * config/sh/divtab-sh4.c: Likewise.
12278         * config/sh/divtab.c: Likewise.
12279         * config/sh/lib1funcs-4-300.asm: Likewise.
12280         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
12281         * config/sh/lib1funcs.asm: Likewise.
12282         * config/sh/lib1funcs.h: Likewise.
12283         * config/sh/linux-atomic.asm: Likewise.
12284         * config/sh/linux-unwind.h: Likewise.
12285         * config/sh/shmedia.h: Likewise.
12286         * config/sh/sshmedia.h: Likewise.
12287         * config/sh/ushmedia.h: Likewise.
12288         * config/sparc/crtfastmath.c: Likewise.
12289         * config/sparc/linux-unwind.h: Likewise.
12290         * config/sparc/sol2-c1.asm: Likewise.
12291         * config/sparc/sol2-ci.asm: Likewise.
12292         * config/sparc/sol2-cn.asm: Likewise.
12293         * config/spu/divmodti4.c: Likewise.
12294         * config/spu/divv2df3.c: Likewise.
12295         * config/spu/float_disf.c: Likewise.
12296         * config/spu/float_unsdidf.c: Likewise.
12297         * config/spu/float_unsdisf.c: Likewise.
12298         * config/spu/float_unssidf.c: Likewise.
12299         * config/spu/mfc_multi_tag_release.c: Likewise.
12300         * config/spu/mfc_multi_tag_reserve.c: Likewise.
12301         * config/spu/mfc_tag_release.c: Likewise.
12302         * config/spu/mfc_tag_reserve.c: Likewise.
12303         * config/spu/mfc_tag_table.c: Likewise.
12304         * config/spu/multi3.c: Likewise.
12305         * config/spu/spu_internals.h: Likewise.
12306         * config/spu/spu_intrinsics.h: Likewise.
12307         * config/spu/spu_mfcio.h: Likewise.
12308         * config/spu/vec_types.h: Likewise.
12309         * config/spu/vmx2spu.h: Likewise.
12310         * config/stormy16/stormy16-lib2.c: Likewise.
12311         * config/svr4.h: Likewise.
12312         * config/sync.c: Likewise.
12313         * config/v850/lib1funcs.asm: Likewise.
12314         * config/vxlib-tls.c: Likewise.
12315         * config/vxlib.c: Likewise.
12316         * config/vxworks-dummy.h: Likewise.
12317         * config/xtensa/crti.asm: Likewise.
12318         * config/xtensa/crtn.asm: Likewise.
12319         * config/xtensa/ieee754-df.S: Likewise.
12320         * config/xtensa/ieee754-sf.S: Likewise.
12321         * config/xtensa/lib1funcs.asm: Likewise.
12322         * config/xtensa/lib2funcs.S: Likewise.
12323         * config/xtensa/linux-unwind.h: Likewise.
12324         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
12325         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
12326         * coretypes.h: Likewise.
12327         * crtstuff.c: Likewise.
12328         * defaults.h: Likewise.
12329         * dwarf2.h: Likewise.
12330         * emutls.c: Likewise.
12331         * gbl-ctors.h: Likewise.
12332         * gcov-io.h: Likewise.
12333         * ginclude/float.h: Likewise.
12334         * ginclude/iso646.h: Likewise.
12335         * ginclude/stdarg.h: Likewise.
12336         * ginclude/stdbool.h: Likewise.
12337         * ginclude/stddef.h: Likewise.
12338         * ginclude/stdfix.h: Likewise.
12339         * ginclude/stdint-gcc.h: Likewise.
12340         * ginclude/tgmath.h: Likewise.
12341         * gthr-aix.h: Likewise.
12342         * gthr-dce.h: Likewise.
12343         * gthr-gnat.c: Likewise.
12344         * gthr-gnat.h: Likewise.
12345         * gthr-lynx.h: Likewise.
12346         * gthr-mipssde.h: Likewise.
12347         * gthr-nks.h: Likewise.
12348         * gthr-posix.c: Likewise.
12349         * gthr-posix.h: Likewise.
12350         * gthr-posix95.h: Likewise.
12351         * gthr-rtems.h: Likewise.
12352         * gthr-single.h: Likewise.
12353         * gthr-solaris.h: Likewise.
12354         * gthr-tpf.h: Likewise.
12355         * gthr-vxworks.h: Likewise.
12356         * gthr-win32.h: Likewise.
12357         * gthr.h: Likewise.
12358         * libgcc2.c: Likewise.
12359         * libgcc2.h: Likewise.
12360         * libgcov.c: Likewise.
12361         * tsystem.h: Likewise.
12362         * typeclass.h: Likewise.
12363         * unwind-c.c: Likewise.
12364         * unwind-compat.h: Likewise.
12365         * unwind-dw2-fde-compat.c: Likewise.
12366         * unwind-dw2-fde-darwin.c: Likewise.
12367         * unwind-dw2-fde-glibc.c: Likewise.
12368         * unwind-dw2-fde.c: Likewise.
12369         * unwind-dw2-fde.h: Likewise.
12370         * unwind-dw2.c: Likewise.
12371         * unwind-dw2.h: Likewise.
12372         * unwind-generic.h: Likewise.
12373         * unwind-pe.h: Likewise.
12374         * unwind-sjlj.c: Likewise.
12375         * unwind.inc: Likewise.
12376         * config/arm/neon-gen.ml: Change generated copyright header to
12377         refer to version 3 of the GNU General Public License with
12378         version 3.1 of the GCC Runtime Library Exception and to point
12379         readers at the COPYING3 and COPYING3.RUNTIME files and the
12380         FSF's license web page.
12381         * config/arm/arm_neon.h: Regenerate.
12382
12383 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
12384
12385         * config/cris/cris.md: Change copyright header to refer to version
12386         3 of the GNU General Public License.
12387         * doc/install.texi2html: Change copyright header to refer to version
12388         3 of the GNU General Public License and to point readers at the
12389         COPYING3 file and the FSF's license web page.
12390         * config/vax/linux.h: Likewise.
12391
12392 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
12393
12394         * config/i386/i386.md (cmpcc): New.
12395         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
12396         (sync_compare_and_swap_cc*): Delete.
12397
12398         * config/s390/s390.c (s390_compare_emitted): Remove.
12399         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
12400         s390_compare_emitted used to be handled.  Assert that modes match.
12401         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
12402         refer to sync_compare_and_swap_ccsi.
12403         * config/s390/s390.h (s390_compare_emitted): Remove.
12404         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
12405         instead of s390_compare_emitted.
12406         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
12407         instead of s390_compare_emitted.
12408         * config/s390/s390.md (cmpcc): New.
12409         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
12410         CC_REGNUM, do not pretend it's set.
12411         (sync_compare_and_swap_cc*): Delete.
12412         * config/s390/predicates.md (cc_reg_operand): New.
12413
12414         * expr.c (sync_compare_and_swap_cc): Delete.
12415         * optabs.h (sync_compare_and_swap_cc): Delete.
12416         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
12417         is being used with can_compare_p.
12418         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
12419         (find_cc_set): New.
12420         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
12421         look for a MODE_CC set instead.  Use emit_store_flag.
12422         (expand_compare_and_swap_loop): Likewise, with some additional
12423         complication to avoid a force_reg when useless.  Use
12424         emit_cmp_and_jump_insns.
12425         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
12426         * doc/md.texi (sync_compare_and_swap_cc): Merge with
12427         sync_compare_and_swap documentation.
12428
12429 2009-04-09  Jan Hubicka  <jh@suse.cz>
12430
12431         * except.c (find_prev_try): Break out from ....
12432         (duplicate_eh_regions): ... here; properly update prev_try pointers
12433         when duplication part of tree.
12434         (dump_eh_tree): Improve dumping.
12435         (verify_eh_region): New.
12436         (verify_eh_tree): Use it.
12437
12438 2009-04-06  Richard Guenther  <rguenther@suse.de>
12439
12440         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
12441         &ARRAY addresses by adjusting their types and prepending
12442         a conversion.
12443         * tree-cfg.c (verify_gimple_assign_single): Verify that
12444         addresses are correct.
12445
12446 2009-04-09  Richard Guenther  <rguenther@suse.de>
12447
12448         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
12449         indices into an array reference if possible.
12450         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
12451         Fold POINTER_PLUS_EXPR statements with invariant address.
12452
12453 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
12454
12455         PR target/39634
12456         * config.gcc (powerpc64-*-linux*): Always build biarch.
12457
12458 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
12459
12460         PR c/39613
12461         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
12462         it and pedwarn if this results in an INTEGER_CST.
12463
12464 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12465
12466         * doc/install.texi: Update minimum GMP version.  Remove obsolete
12467         text in MPFR section.
12468
12469 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
12470
12471         * dwarf2out.c (class_scope_p): New static inline.
12472         (class_or_namespace_scope_p): Use it.
12473         (gen_variable_die): Use DW_TAG_member tag for static data member
12474         declarations instead of DW_TAG_variable.
12475
12476         PR middle-end/39573
12477         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
12478         variables.
12479
12480 2009-04-08  Richard Guenther  <rguenther@suse.de>
12481
12482         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
12483         valueize random data.
12484
12485 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
12486
12487         * config.gcc (aix tm_file):  Add aix-stdint.h.
12488         (aix tm clause use_gcc_stdint):  Set to wrap.
12489         * config/rs6000/aix-stdint.h:  New file.
12490
12491 2009-04-08  Richard Guenther  <rguenther@suse.de>
12492
12493         PR middle-end/36291
12494         * tree-dfa.c (add_referenced_var): Do not recurse into
12495         global initializers.
12496         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
12497         exposed variables.
12498         (fold_const_aggregate_ref): Likewise.
12499
12500 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
12501
12502         * recog.c (ordered_comparison_operator): New.
12503         * gensupport.c (std_preds): Add it.
12504         * doc/md.texi (Machine-Independent Predicates): Document it.
12505
12506 2009-04-08  Jan Hubicka  <jh@suse.cz>
12507
12508         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
12509         * function.h (rtl_eh): Remove exception_handler_label_map.
12510         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
12511         remove_exception_handler_label, for_each_eh_label_1): Remove.
12512         (rtl_remove_unreachable_regions): Remove.
12513         (convert_from_eh_region_ranges): Do not remove unreachable regions.
12514         (find_exception_handler_labels): Don't build the hashtable.
12515         (maybe_remove_eh_handler): Remove.
12516         (for_each_eh_label): Rewrite to walk the tree.
12517         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
12518         * except.h (maybe_remove_eh_handler): Remove.
12519         * passes.c (init_optimization_passes): Schedule second EH cleanup
12520         before out-of-ssa.
12521         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
12522         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
12523
12524 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
12525
12526         * genoutput.c (validate_optab_operands): New.
12527         (gen_insn, gen_expand): Call it.
12528
12529         * genflags.c (gen_insn): Detect misused iterators.
12530         (main): Pass line_no to gen_insn, exit with status 1 on error.
12531
12532         * genextract.c (line_no): Make global.
12533         (VEC_safe_set_locstr): Change assertion to error message.
12534         (main): Exit with status 1 on error.
12535
12536 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
12537
12538         PR c/39614
12539         PR c/39673
12540         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
12541         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
12542         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
12543         * c-convert.c (convert): Do not call fold on results of conversion
12544         functions when the result is a C_MAYBE_CONST_EXPR.
12545         * c-parser.c (c_parser_postfix_expression): Do not fold condition
12546         of __builtin_choose_expr.
12547         * c-typeck.c (remove_c_maybe_const_expr): New.
12548         (build_unary_op, build_conditional_expr, build_compound_expr,
12549         build_binary_op, c_objc_common_truthvalue_conversion): Call
12550         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
12551         integer operands.
12552
12553 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
12554
12555         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
12556         CODE to produce a new one. Add a prototype to use fold_convert_const
12557
12558 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
12559
12560         PR bootstrap/39660
12561         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
12562         mix declarations and code.
12563
12564 2009-04-08  Ben Elliston  <bje@au.ibm.com>
12565
12566         * gcc.c: Replace `CC' with `GCC' throughout.
12567
12568 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
12569
12570         * doc/invoke.texi: Document Atom support.
12571
12572 2009-04-07  Jason Merrill  <jason@redhat.com>
12573
12574         PR c++/25185
12575         * c-common.h, c-common.c: Add flag_pretty_templates.
12576         * c-opts.c (c_common_handle_option): Set it.
12577         * c.opt: Add -fno-pretty-templates.
12578         * doc/invoke.texi (C++ Dialect Options): Likewise.
12579
12580 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
12581
12582         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
12583         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
12584         (ia64_expand_builtin): Likewise.
12585
12586 2009-04-07  Martin Jambor  <mjambor@suse.cz>
12587
12588         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
12589         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
12590         ADDR_EXPRS are include too.
12591
12592 2009-04-07  Richard Guenther  <rguenther@suse.de>
12593
12594         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
12595         decls are only used if passes as parameters or if they are
12596         local statics and the call is not to a builtin.
12597         (call_may_clobber_ref_p_1): Likewise.
12598
12599 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
12600
12601         * expr.c (do_store_flag): Remove last argument.  Simplify code
12602         to avoid duplication of tests already done by can_compare_p.
12603         (expand_expr_real_1): Adjust caller.
12604
12605 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
12606
12607         * optabs.c (can_compare_p): Test the predicate of a
12608         cbranch and cstore pattern.
12609
12610 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
12611
12612         * expr.c (convert_move): Use emit_store_flag instead of
12613         "emulating" it.
12614
12615 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
12616
12617         * config/i386/i386.c (ix86_compare_emitted): Remove.
12618         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
12619         ix86_compare_op0 like ix86_compare_emitted used to be handled.
12620         * config/i386/i386.h (ix86_compare_emitted): Remove.
12621         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
12622         instead of ix86_compare_emitted.
12623         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
12624
12625 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
12626
12627         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
12628         Add t-sysroot-suffix to tmake_file.
12629         * config/print-sysroot-suffix.sh: New file.
12630         * config/t-sysroot-suffix: New file.
12631
12632 2009-04-07  Ben Elliston  <bje@au.ibm.com>
12633
12634         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
12635         as the latter produces a warning when the target does not support
12636         infinity.
12637
12638 2009-04-07  Ben Elliston  <bje@au.ibm.com>
12639
12640         * dfp.c: Replace type punning assignments with memcpy throughout.
12641         * Makefile.in (dfp.o-warn): Remove.
12642
12643 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
12644
12645         PR target/39634
12646         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
12647         Include soft-fp/t-softfp after rs6000/t-linux64.
12648
12649 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
12650
12651         * stor-layout.c (set_sizetype): Use the full precision of their
12652         machine mode for bitsize types.
12653
12654 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
12655
12656         * config/i386/i386.md: Revert 2 accidental checkins.
12657
12658 2009-04-06  Joey Ye  <joey.ye@intel.com>
12659             Xuepeng Guo  <xuepeng.guo@intel.com>
12660             H.J. Lu  <hongjiu.lu@intel.com>
12661
12662         Atom pipeline model, tuning and insn selection.
12663         * config.gcc (atom): Add atom config options and target.
12664
12665         * config/i386/atom.md: New.
12666
12667         * config/i386/i386.c (atom_cost): New cost.
12668         (m_ATOM): New macro flag.
12669         (initial_ix86_tune_features): Set m_ATOM.
12670         (x86_accumulate_outgoing_args): Likewise.
12671         (x86_arch_always_fancy_math_387): Likewise.
12672         (processor_target): Add Atom cost.
12673         (cpu_names): Add Atom cpu name.
12674         (override_options): Set Atom ISA.
12675         (ix86_issue_rate): New case PROCESSOR_ATOM.
12676         (ix86_adjust_cost): Likewise.
12677
12678         * config/i386/i386.h (TARGET_ATOM): New target macro.
12679         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
12680         (TARGET_OPT_AGU): New target option.
12681         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
12682         (processor_type): Add PROCESSOR_ATOM.
12683
12684         * config/i386/i386.md (cpu): Add new value "atom".
12685         (use_carry, movu): New attr.
12686         (atom.md): Include atom.md.
12687         (adddi3_carry_rex64): Set attr "use_carry".
12688         (addqi3_carry): Likewise.
12689         (addhi3_carry): Likewise.
12690         (addsi3_carry): Likewise.
12691         (*addsi3_carry_zext): Likewise.
12692         (subdi3_carry_rex64): Likewise.
12693         (subqi3_carry): Likewise.
12694         (subhi3_carry): Likewise.
12695         (subsi3_carry): Likewise.
12696         (x86_movdicc_0_m1_rex64): Likewise.
12697         (*x86_movdicc_0_m1_se): Likewise.
12698         (x86_movsicc_0_m1): Likewise.
12699         (*x86_movsicc_0_m1_se): Likewise.
12700         (*adddi_1_rex64): Emit add insn as much as possible.
12701         (*addsi_1): Likewise.
12702         (return_internal): Set atom_unit.
12703         (return_internal_long): Likewise.
12704         (return_pop_internal): Likewise.
12705         (*rcpsf2_sse): Set atom_sse_attr attr.
12706         (*qrt<mode>2_sse): Likewise.
12707         (*prefetch_sse): Likewise.
12708
12709         * config/i386/i386-c.c (ix86_target_macros_internal): New case
12710         PROCESSOR_ATOM.
12711         (ix86_target_macros_internal): Likewise.
12712
12713         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
12714         (*prefetch_sse_rex): Likewise.
12715         (sse_rcpv4sf2): Likewise.
12716         (sse_vmrcpv4sf2): Likewise.
12717         (sse_sqrtv4sf2): Likewise.
12718         (<sse>_vmsqrt<mode>2): Likewise.
12719         (sse_ldmxcsr): Likewise.
12720         (sse_stmxcsr): Likewise.
12721         (*sse_sfence): Likewise.
12722         (sse2_clflush): Likewise.
12723         (*sse2_mfence): Likewise.
12724         (*sse2_lfence): Likewise.
12725         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
12726         (<sse>_movup<ssemodesuffixf2c>): Likewise.
12727         (avx_movdqu<avxmodesuffix>): Likewise.
12728         (avx_lddqu<avxmodesuffix>): Likewise.
12729         (sse2_movntv2di): Change attr "type" to "ssemov".
12730         (sse2_movntsi): Likewise.
12731         (rsqrtv8sf2): Change attr "type" to "sseadd".
12732         (sse3_addsubv2df3): Set attr "atom_unit".
12733         (sse3_h<plusminus_insn>v4sf3): Likewise.
12734         (*sse2_pmaddwd): Likewise.
12735         (*vec_extractv2di_1_rex64): Likewise.
12736         (*vec_extractv2di_1_avx): Likewise.
12737         (sse2_psadbw): Likewise.
12738         (ssse3_phaddwv8hi3): Likewise.
12739         (ssse3_phaddwv4hi3): Likewise.
12740         (ssse3_phadddv4si3): Likewise.
12741         (ssse3_phadddv2si3): Likewise.
12742         (ssse3_phaddswv8hi3): Likewise.
12743         (ssse3_phaddswv4hi3): Likewise.
12744         (ssse3_phsubwv8hi3): Likewise.
12745         (ssse3_phsubwv4hi3): Likewise.
12746         (ssse3_phsubdv4si3): Likewise.
12747         (ssse3_phsubdv2si3): Likewise.
12748         (ssse3_phsubswv8hi3): Likewise.
12749         (ssse3_phsubswv4hi3): Likewise.
12750         (ssse3_pmaddubsw128): Likewise.
12751         (sse3_pmaddubsw: Likewise.
12752         (ssse3_palignrti): Likewise.
12753         (ssse3_palignrdi): Likewise.
12754
12755 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
12756
12757         * doc/install.texi (Specific): Fix two cross-references to MinGW.
12758
12759 2009-04-06  Richard Guenther  <rguenther@suse.de>
12760
12761         PR tree-optimization/28868
12762         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
12763         of which PHI results we inserted.
12764         (insert_into_preds_of_block): Record inserted PHIs.
12765         (eliminate): Eliminate redundant PHI nodes.
12766         (init_pre): Init inserted_phi_names.
12767
12768 2009-04-06  Richard Guenther  <rguenther@suse.de>
12769
12770         PR tree-optimization/39643
12771         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
12772         IMAGPART_EXPRs of complex constants.
12773         (execute_fold_all_builtins): If we folded a call queue
12774         TODO_update_address_taken.
12775
12776 2009-04-06  Jan Hubicka  <jh@suse.cz>
12777
12778         PR middle-end/39659
12779         * except.c (remove_unreachable_regions): Propagate may_contain_throw
12780         flag.
12781
12782 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
12783
12784         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
12785         delay slot.
12786         (ic_invalidate_array): Likewise.
12787
12788 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
12789
12790         * calls.c (emit_library_call_value_1): Fix a problem with parameter
12791         alignment for library calls.
12792
12793 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
12794
12795         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
12796         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
12797         * config/i386/mingw-stdint.h:  New file.
12798
12799 2009-04-05  Richard Guenther  <rguenther@suse.de>
12800
12801         PR tree-optimization/39648
12802         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
12803         our &A vs. &A[0] IL deficiencies.
12804
12805 2009-04-04  Jan Hubicka  <jh@suse.cz>
12806
12807         * except.c (sjlj_find_directly_reachable_regions): Be ready for
12808         removed toplevel regions.
12809         (sjlj_mark_call_sites): Likewise.
12810
12811 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
12812
12813         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
12814         (cygwin tm clause use_gcc_stdint):  Set to wrap.
12815         * config/i386/cygwin-stdint.h:  New file.
12816
12817 2009-04-04  Richard Guenther  <rguenther@suse.de>
12818
12819         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
12820         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
12821         single-argument PHIs if we are in loop-closed SSA form.
12822         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
12823         for the pre-condition.
12824         (slpeel_tree_peel_loop_to_edge): Likewise.
12825         (vect_build_loop_niters): Take an optional sequence to append stmts.
12826         (vect_generate_tmps_on_preheader): Likewise.
12827         (vect_do_peeling_for_loop_bound): Take extra guards for the
12828         pre-condition.
12829         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
12830         the cost model check.
12831         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
12832         guards if we are going to peel.  Do not apply versioning in that case.
12833         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
12834         (vect_do_peeling_for_loop_bound): Likewise.
12835         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
12836         loop bound only record extra pre-conditions, do not apply loop
12837         versioning.
12838
12839 2009-04-04  Richard Guenther  <rguenther@suse.de>
12840
12841         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
12842         renaming code.
12843
12844 2009-04-04  Jan Hubicka  <jh@suse.cz>
12845
12846         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
12847         last_basic_block for size of bb->index indexed array.
12848         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
12849         compute_out, link_btr_uses, build_btr_def_use_webs,
12850         build_btr_def_use_webs, migrate_btr_defs): Likewise.
12851
12852 2009-04-04  Jan Hubicka  <jh@suse.cz>
12853
12854         * except.c (remove_eh_handler_and_replace): Break out from ...
12855         (remove_eh_handler): ... here.
12856         (bring_to_root): New function.
12857         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
12858         handled ones, bring others to root of tree.
12859
12860 2009-04-04  Jan Hubicka  <jh@suse.cz>
12861
12862         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
12863         (all_phis_safe_to_merge): New function.
12864         (update_info): New structure.
12865         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
12866         (cleanup_empty_eh): Update SSA if possible.
12867
12868 2009-04-04  Richard Guenther  <rguenther@suse.de>
12869
12870         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
12871         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
12872         (append_vuse): Likewise.
12873
12874 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
12875
12876         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
12877         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
12878         instead of REG_UNSAVED for DW_CFA_undefined.
12879         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
12880         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
12881         outermost frame.
12882
12883 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
12884
12885         PR target/39501
12886         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
12887         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
12888         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
12889
12890 2009-04-04  Richard Guenther  <rguenther@suse.de>
12891
12892         PR tree-optimization/8781
12893         PR tree-optimization/37892
12894         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
12895         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
12896         (valueize_refs): Call it for *& valueizations.
12897         (shared_reference_ops_from_ref): Rename to ...
12898         (valueize_shared_reference_ops_from_ref): ... this and valueize.
12899         (shared_reference_ops_from_call): Rename to ...
12900         (valueize_shared_reference_ops_from_call): ... this and valueize.
12901         (vn_reference_lookup): Update.
12902         (visit_reference_op_call): Likewise.
12903         * tree-ssa-pre.c (phi_translate_1): Fold *&.
12904         (eliminate): Value-replace the call address in call statements.
12905
12906 2009-04-04  Richard Guenther  <rguenther@suse.de>
12907
12908         PR tree-optimization/39636
12909         * tree-ssa-forwprop.c
12910         (forward_propagate_addr_into_variable_array_index): Check for
12911         GIMPLE_ASSIGN before accessing the rhs code.
12912
12913 2009-04-03  Jason Merrill  <jason@redhat.com>
12914
12915         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
12916
12917 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
12918
12919         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
12920         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
12921         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
12922         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
12923         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
12924         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
12925         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
12926         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
12927         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
12928         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
12929         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
12930         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
12931         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
12932         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
12933         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
12934         Use fr_reg_or_fp01_operand instead of fr_register_operand
12935
12936         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
12937         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
12938         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
12939
12940 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
12941
12942         PR rtl-optimization/39607
12943         PR rtl-optimization/39631
12944
12945         Revert:
12946
12947         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
12948         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
12949         instead of DF_LR_OUT.
12950         * ira-lives.c (process_bb_node_lives): Ditto.
12951         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
12952         instead of DF_LR_{OUT,IN}.
12953         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
12954         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
12955
12956 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
12957
12958         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
12959         (execute_lower_omp): Always run but take the short way out if -fopenmp
12960         is not given.
12961         (gate_lower_omp): Remove, forcing the pass manager to always run the
12962         pass and always set PROP_gimple_lomp.
12963         (pass_lower_omp): Remove gate function.
12964         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
12965         PROP_trees.  Instead, require it.
12966         * ipa-cp.c (pass_ipa_cp): Likewise.
12967         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
12968         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
12969         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
12970         and PROP_gimple_leh.
12971
12972 2009-04-03  Richard Guenther  <rguenther@suse.de>
12973
12974         PR middle-end/13146
12975         PR tree-optimization/23940
12976         PR tree-optimization/33237
12977         PR middle-end/33974
12978         PR middle-end/34093
12979         PR tree-optimization/36201
12980         PR tree-optimization/36230
12981         PR tree-optimization/38049
12982         PR tree-optimization/38207
12983         PR tree-optimization/38230
12984         PR tree-optimization/38301
12985         PR tree-optimization/38585
12986         PR middle-end/38895
12987         PR tree-optimization/38985
12988         PR tree-optimization/39299
12989         * tree-ssa-structalias.h: Remove.
12990         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
12991         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
12992         (struct vuse_element_d): Remove.
12993         (struct vuse_vec_d): Likewise.
12994         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
12995         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
12996         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
12997         VUSE_ELEMENT_VAR): Likewise.
12998         (struct voptype_d): Likewise.
12999         (NUM_VOP_FREE_BUCKETS): Likewise.
13000         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
13001         (struct stmt_operands_d): Remove.
13002         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
13003         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
13004         VDEF_NUM, VDEF_VECT): Likewise.
13005         (copy_virtual_operands): Remove.
13006         (operand_build_cmp): Likewise.
13007         (create_ssa_artificial_load_stmt): Likewise.
13008         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
13009         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
13010         vuse_index and mayuse_index members.  Pack and move done and iter_type
13011         members to the front.
13012         (SSA_OP_VMAYUSE): Remove.
13013         (SSA_OP_VIRTUAL_USES): Adjust.
13014         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
13015         (unlink_stmt_vdef): Declare.
13016         (add_to_addressable_set): Remove.
13017         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
13018         (vrp_visit_stmt): Likewise.
13019         * doc/tree-ssa.texi (Alias analysis): Update.
13020         * doc/invoke.texi (max-aliased-vops): Remove docs.
13021         (avg-aliased-vops): Likewise.
13022         * tree-into-ssa.c (syms_to_rename): Remove.
13023         (need_to_update_vops_p): Likewise.
13024         (need_to_initialize_update_ssa_p): Rename to ...
13025         (update_ssa_initialized_fn): ... this.  Track function we are
13026         initialized for.
13027         (symbol_marked_for_renaming): Simplify.
13028         (add_new_name_mapping): Do not set need_to_update_vops_p.
13029         (dump_currdefs): Use SYMS_TO_RENAME.
13030         (rewrite_update_stmt): Always walk all uses/defs.
13031         (dump_update_ssa): Adjust.
13032         (init_update_ssa): Take function argument.  Track what we are
13033         initialized for.
13034         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
13035         (create_new_def_for): Initialize for cfun, assert we are initialized
13036         for cfun.
13037         (mark_sym_for_renaming): Simplify.
13038         (mark_set_for_renaming): Do not initialize update-ssa.
13039         (need_ssa_update_p): Simplify.  Take function argument.
13040         (name_mappings_registered_p): Assert we ask for the correct function.
13041         (name_registered_for_update_p): Likewise.
13042         (ssa_names_to_replace): Likewise.
13043         (release_ssa_name_after_update_ssa): Likewise.
13044         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
13045         (dump_decl_set): Do not print a newline.
13046         (debug_decl_set): Do it here.
13047         (dump_update_ssa): And here.
13048         * tree-ssa-loop-im.c (move_computations): Adjust.
13049         (movement_possibility): Likewise.
13050         (determine_max_movement): Likewise.
13051         (gather_mem_refs_stmt): Likewise.
13052         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
13053         or NAME_MEMORY_TAG.
13054         * tree-complex.c (update_all_vops): Remove.
13055         (expand_complex_move): Adjust.
13056         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
13057         Simplify test for memory referencing statement.  Exclude
13058         non-invariant ADDR_EXPRs.
13059         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
13060         * tree-loop-distribution.c (generate_memset_zero): Adjust.
13061         (rdg_flag_uses): Likewise.
13062         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
13063         related code.
13064         (tree_optimize_tail_calls_1): Also split the
13065         edge from the entry block if we have degenerate PHI nodes in
13066         the first basic block.
13067         * tree.c (init_ttree): Remove memory-tag related code.
13068         (tree_code_size): Likewise.
13069         (tree_node_structure): Likewise.
13070         (build7_stat): Re-write to be build6_stat.
13071         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
13072         (SSA_VAR_P): Adjust.
13073         (struct tree_memory_tag): Remove.
13074         (struct tree_memory_partition_tag): Likewise.
13075         (union tree_node): Adjust.
13076         (build7): Re-write to be build6.
13077         * tree-pass.h (pass_reset_cc_flags): Remove.
13078         (TODO_update_address_taken): New flag.
13079         (pass_simple_dse): Remove.
13080         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
13081         * params.h (MAX_ALIASED_VOPS): Remove.
13082         (AVG_ALIASED_VOPS): Likewise.
13083         * omp-low.c (expand_omp_taskreg): Update SSA form.
13084         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
13085         aliases the lhs in a copy stmt.
13086         * tree-ssa-dse.c (struct address_walk_data): Remove.
13087         (memory_ssa_name_same): Likewise.
13088         (memory_address_same): Likewise.
13089         (get_kill_of_stmt_lhs): Likewise.
13090         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
13091         unused stores.  Look through PHI nodes into post-dominated regions.
13092         (dse_optimize_stmt): Simplify.  Properly remove stores.
13093         (tree_ssa_dse): Compute dominators.
13094         (execute_simple_dse): Remove.
13095         (pass_simple_dse): Likewise.
13096         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
13097         gimple_loaded_syms and gimple_stored_syms computation.
13098         * toplev.c (dump_memory_report): Dump alias and pta stats.
13099         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
13100         (vn_reference_eq): Likewise.
13101         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
13102         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
13103         valueize_vuses): Remove.
13104         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
13105         (get_def_ref_stmt_vuse): ... this.
13106         (vn_reference_lookup_2): New function.
13107         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
13108         walking equivalent vuses.  Simplify.
13109         (vn_reference_lookup): Likewise.
13110         (vn_reference_insert): Likewise.
13111         (vn_reference_insert_pieces): Likewise.
13112         (visit_reference_op_call): Simplify.
13113         (visit_reference_op_load): Likewise.
13114         (visit_reference_op_store): Likewise.
13115         (init_scc_vn): Remove shared_lookup_vuses initialization.
13116         (free_scc_vn): Remove shared_lookup_vuses freeing.
13117         (sort_vuses, sort_vuses_heap): Remove.
13118         (get_ref_from_reference_ops): Export.
13119         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
13120         vector with single vuse pointer.
13121         (vn_reference_lookup_pieces, vn_reference_lookup,
13122         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
13123         (shared_vuses_from_stmt): Remove.
13124         (get_ref_from_reference_ops): Declare.
13125         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
13126         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
13127         memory-tag related code.
13128         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
13129         (likely_value): Add comment, skip static-chain of call statements.
13130         (surely_varying_stmt_p): Adjust.
13131         (gimplify_and_update_call_from_tree): Likewise.
13132         (execute_fold_all_builtins): Do not rebuild alias info.
13133         (gimplify_and_update_call_from_tree): Properly update VOPs.
13134         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
13135         (copy_ref_info): Remove memory-tag related code.
13136         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
13137         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
13138         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
13139         computation.
13140         * tree-ssa-dom.c (gimple_p): Remove typedef.
13141         (eliminate_redundant_computations): Adjust.
13142         (record_equivalences_from_stmt): Likewise.
13143         (avail_expr_hash): Likewise.
13144         (avail_expr_eq): Likewise.
13145         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
13146         (stmt_makes_single_load): Likewise.
13147         (stmt_makes_single_store): Likewise.
13148         * tree-ssa-alias.c: Rewrite completely.
13149         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
13150         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
13151         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
13152         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
13153         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
13154         Remove public functions.
13155         (pass_reset_cc_flags): Remove.
13156         (pass_build_alias): Move ...
13157         * tree-ssa-structalias.c (pass_build_alias): ... here.
13158         * tree-ssa-alias.c (may_be_aliased): Move ...
13159         * tree-flow-inline.h (may_be_aliased): ... here.
13160         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
13161         count_uses_and_derefs): Move ...
13162         * gimple.c: ... here.
13163         * gimple.h (count_uses_and_derefs): Declare.
13164         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
13165         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
13166         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
13167         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
13168         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
13169         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
13170         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
13171         New functions.
13172         * tree-dfa.c (refs_may_alias_p): Move ...
13173         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
13174         * tree-ssa-alias.h: New file.
13175         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
13176         (statement_sink_location): Likewise.
13177         * opts.c (decode_options): Do not adjust max-aliased-vops or
13178         avg-aliased-vops values.
13179         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
13180         (TV_CALL_CLOBBER): Likewise.
13181         (TV_FLOW_SENSITIVE): Likewise.
13182         (TV_FLOW_INSENSITIVE): Likewise.
13183         (TV_MEMORY_PARTITIONING): Likewise.
13184         (TV_ALIAS_STMT_WALK): New timevar.
13185         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
13186         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
13187         (get_address_description): Remove memory-tag related code.
13188         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
13189         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
13190         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
13191         and immediate uses in statements.  Document.
13192         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
13193         (dump_symbols): Remove.
13194         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
13195         * alias.c (get_deref_alias_set): New function split out from ...
13196         (get_alias_set): ... here.
13197         * alias.h (get_deref_alias_set): Declare.
13198         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
13199         type parameter.  Remove restrict pointer handling.  Create a
13200         ref-all pointer in case type-based alias sets do not conflict.
13201         (vect_analyze_data_refs): Remove SMT related code.
13202         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
13203         (vectorizable_load): Likewise.
13204         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
13205         (DR_SYMBOL_TAG, DR_VOPS): Remove.
13206         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
13207         Ignore vops and SMTs.
13208         (dr_analyze_alias): Likewise..
13209         (free_data_ref): Likewise.
13210         (create_data_ref): Likewise.
13211         (analyze_all_data_dependences): Likewise.
13212         (get_references_in_stmt): Adjust.
13213         * tree-flow-inline.h (gimple_aliases_computed_p,
13214         gimple_addressable_vars, gimple_call_clobbered_vars,
13215         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
13216         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
13217         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
13218         gimple_mem_ref_stats): Remove.
13219         (gimple_vop): New function.
13220         (op_iter_next_use): Remove vuses and mayuses cases.
13221         (op_iter_next_def): Remove vdefs case.
13222         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
13223         (clear_and_done_ssa_iter): Do not set removed fields.
13224         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
13225         Assert we are not iterating over vuses or vdefs if not also
13226         iterating over uses or defs.
13227         (op_iter_init_use): Likewise.
13228         (op_iter_init_def): Likewise.
13229         (op_iter_next_vdef): Remove.
13230         (op_iter_next_mustdef): Likewise.
13231         (op_iter_init_vdef): Likewise.
13232         (compare_ssa_operands_equal): Likewise.
13233         (link_use_stmts_after): Handle vuse operand.
13234         (is_call_used): Use is_call_clobbered.
13235         (is_call_clobbered): Global variables are always call clobbered,
13236         query the call-clobbers bitmap.
13237         (mark_call_clobbered): Ignore global variables.
13238         (clear_call_clobbered): Likewise.
13239         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
13240         virtual operands sanity check.
13241         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
13242         Remove.
13243         (TARGET_MEM_REF): Remove TMR_TAG operand.
13244         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
13245         Remove call-clobber related code.
13246         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
13247         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
13248         partitions or escape reason.
13249         (get_single_def_stmt, get_single_def_stmt_from_phi,
13250         get_single_def_stmt_with_phi): Remove.
13251         (dump_referenced_vars): Tidy.
13252         (get_ref_base_and_extent): Allow bare decls.
13253         (collect_dfa_stats): Adjust.
13254         * graphite.c (rename_variables_in_stmt): Adjust.
13255         (graphite_copy_stmts_from_block): Likewise.
13256         (translate_clast): Likewise.
13257         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
13258         (EXPR_DIES): New.
13259         (translate_vuse_through_block): Use the oracle.
13260         (phi_translate_1): Adjust.
13261         (value_dies_in_block_x): Use the oracle.  Cache the outcome
13262         in EXPR_DIES.
13263         (valid_in_sets): Check if the VUSE for
13264         a REFERENCE is available.
13265         (eliminate): Do not remove stmts during elimination,
13266         instead queue and remove them afterwards.
13267         (do_pre): Do not rebuild alias info.
13268         (pass_pre): Run TODO_rebuild_alias before PRE.
13269         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
13270         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
13271         (mark_all_v_defs_stmt): Remove.
13272         (mark_all_v_defs_seq): Adjust.
13273         (sra_replace): Likewise.
13274         (scalarize_use): Likewise.
13275         (scalarize_copy): Likewise.
13276         (scalarize_init): Likewise.
13277         (scalarize_ldst): Likewise.
13278         (todoflags): Remove.
13279         (tree_sra): Do not rebuild alias info.
13280         (tree_sra_early): Adjust.
13281         (pass_sra): Run TODO_update_address_taken before SRA.
13282         * tree-predcom.c (set_alias_info): Remove.
13283         (prepare_initializers_chain): Do not call it.
13284         (mark_virtual_ops_for_renaming): Adjust.
13285         (mark_virtual_ops_for_renaming_list): Remove.
13286         (initialize_root_vars): Adjust.
13287         (initialize_root_vars_lm): Likewise.
13288         (prepare_initializers_chain): Likewise.
13289         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
13290         (may_propagate_copy_into_stmt): Likewise.
13291         (merge_alias_info): Do nothing for now.
13292         (propagate_tree_value_into_stmt): Adjust.
13293         (stmt_may_generate_copy): Likewise.
13294         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
13295         not mark symbols for renaming.
13296         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
13297         with the same statement, make sure to update the new pointed-to one.
13298         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
13299         call statements, do not mark symbols for renaming.
13300         (mark_operand_necessary): Dump something.
13301         (ref_may_be_aliased): New function.
13302         (mark_aliased_reaching_defs_necessary_1): New helper function.
13303         (mark_aliased_reaching_defs_necessary): Likewise.
13304         (mark_all_reaching_defs_necessary_1): Likewise.
13305         (mark_all_reaching_defs_necessary): Likewise.
13306         (propagate_necessity): Do not process virtual PHIs.  For
13307         non-aliased loads mark all reaching definitions as necessary.
13308         For aliased loads and stores mark the immediate dominating
13309         aliased clobbers as necessary.
13310         (visited): New global static.
13311         (perform_tree_ssa_dce): Free visited bitmap after propagating
13312         necessity.
13313         (remove_dead_phis): Perform simple dead virtual PHI removal.
13314         (remove_dead_stmt): Properly unlink virtual operands when
13315         removing stores.
13316         (eliminate_unnecessary_stmts): Schedule PHI removal after
13317         stmt removal.
13318         * tree-ssa-ter.c (is_replaceable_p): Adjust.
13319         (process_replaceable): Likewise.
13320         (find_replaceable_in_bb): Likewise.
13321         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
13322         based on the single gimple vop.
13323         (verify_flow_insensitive_alias_info): Remove.
13324         (verify_flow_sensitive_alias_info): Likewise.
13325         (verify_call_clobbering): Likewise.
13326         (verify_memory_partitions): Likewise.
13327         (verify_alias_info): Likewise.
13328         (verify_ssa): Adjust..
13329         (execute_update_addresses_taken): Export.  Update SSA
13330         manually.  Optimize only when optimizing.  Use a local bitmap.
13331         (pass_update_address_taken): Remove TODO_update_ssa, add
13332         TODO_dump_func.
13333         (pass_update_address_taken): Just use TODO_update_address_taken.
13334         (init_tree_ssa): Do not initialize addressable_vars.
13335         (verify_ssa): Verify new VUSE / VDEF properties.
13336         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
13337         Do not call verify_alias_info.
13338         (delete_tree_ssa): Clear the VUSE, VDEF operands.
13339         Do not free the loaded and stored syms bitmaps.  Reset the escaped
13340         and callused solutions.  Do not free addressable_vars.
13341         Remove memory-tag related code.
13342         (warn_uninitialized_var): Aliases are always available.
13343         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
13344         * lambda-code.c (can_put_in_inner_loop): Adjust.
13345         (can_put_after_inner_loop): Likewise.
13346         (perfect_nestify): Likewise.
13347         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
13348         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
13349         (vectorizable_conversion): Do not mark symbols for renaming.
13350         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
13351         (expand_call_inline): Unlink the calls virtual operands before
13352         replacing it.
13353         (tree_function_versioning): Do not call update_ssa if we are not
13354         updating clones.  Simplify.
13355         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
13356         (propagate_with_phi): Likewise..
13357         * tree-outof-ssa.c (create_temp): Remove memory tag and call
13358         clobber code.  Assert we are not aliased or global.
13359         * tree-flow.h: Include tree-ssa-alias.h
13360         (enum escape_type): Remove.
13361         (struct mem_sym_stats_d): Likewise.
13362         (struct mem_ref_stats_d): Likewise.
13363         (struct gimple_df): Add vop member.  Remove global_var,
13364         call_clobbered_vars, call_used_vars, addressable_vars,
13365         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
13366         escaped and callused members.
13367         (struct ptr_info_def): Remove all members, add points-to solution
13368         member pt.
13369         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
13370         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
13371         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
13372         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
13373         (tree-ssa-alias.o): Likewise.
13374         (toplev.o): Add tree-ssa-alias.h
13375         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
13376         * gimple.c (gimple_set_bb): Fix off-by-one error.
13377         (is_gimple_reg): Do not handle memory tags.
13378         (gimple_copy): Also copy virtual operands.
13379         Delay updating the statement.  Do not reset loaded and stored syms.
13380         (gimple_set_stored_syms): Remove.
13381         (gimple_set_loaded_syms): Likewise.
13382         (gimple_call_copy_skip_args): Copy the virtual operands
13383         and mark the new statement modified.
13384         * tree-ssa-structalias.c (may_alias_p): Remove.
13385         (set_uids_in_ptset): Take the alias set to prune with as
13386         parameter.  Fold in the alias test of may_alias_p.
13387         (compute_points_to_sets): Compute whether a ptr is dereferenced
13388         in a local sbitmap.
13389         (process_constraint): Deal with &ANYTHING on the lhs, reject all
13390         other ADDRESSOF constraints on the lhs.
13391         (get_constraint_for_component_ref): Assert that we don't get
13392         ADDRESSOF constraints from the base of the reference.
13393         Properly generate UNKNOWN_OFFSET for DEREF if needed.
13394         (struct variable_info): Remove collapsed_to member.
13395         (get_varinfo_fc): Remove.
13396         (new_var_info): Do not set collapsed_to.
13397         (dump_constraint): Do not follow cycles.
13398         (dump_constraint_graph): Likewise.
13399         (build_pred_graph): Likewise.
13400         (build_succ_graph): Likewise.
13401         (rewrite_constraints): Likewise.
13402         (do_simple_structure_copy): Remove.
13403         (do_rhs_deref_structure_copy): Remove.
13404         (do_lhs_deref_structure_copy): Remove.
13405         (collapse_rest_of_var): Remove.
13406         (do_structure_copy): Re-implement.
13407         (pta_stats): New global variable.
13408         (dump_pta_stats): New function.
13409         (struct constraint_expr): Make offset signed.
13410         (UNKNOWN_OFFSET): Define special value.
13411         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
13412         (solution_set_expand): New helper function split out from ...
13413         (do_sd_constraint): ... here.
13414         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
13415         (do_ds_constraint): Likewise.
13416         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
13417         and CALLUSED = *CALLUSED.
13418         (set_union_with_increment): Make inc argument signed.
13419         (type_safe): Remove.
13420         (get_constraint_for_ptr_offset): Handle unknown and negative
13421         constant offsets.
13422         (first_vi_for_offset): Handle offsets before start.  Bail
13423         out early for offsets beyond the variable extent.
13424         (first_or_preceding_vi_for_offset): New function.
13425         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
13426         Together with ESCAPED = *ESCAPED this properly computes reachability.
13427         (find_what_var_points_to): New function.
13428         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
13429         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
13430         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
13431         pt_solutions_intersect): New functions.
13432         (compute_call_used_vars): Remove.
13433         (compute_may_aliases): New main entry into PTA computation.
13434         * gimple.h (gimple_p): New typedef.
13435         (struct gimple_statement_base): Remove references_memory_p.
13436         (struct gimple_statement_with_memory_ops_base): Remove
13437         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
13438         members.
13439         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
13440         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
13441         gimple_set_references_memory): Remove.
13442         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
13443         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
13444         New functions.
13445         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
13446         (verify_expr): Allow RESULT_DECL.
13447         (gimple_duplicate_bb): Do not copy virtual operands.
13448         (gimple_duplicate_sese_region): Adjust.
13449         (gimple_duplicate_sese_tail): Likewise.
13450         (mark_virtual_ops_in_region): Remove.
13451         (move_sese_region_to_fn): Do not call it.
13452         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
13453         and pass_simple_dse.
13454         (execute_function_todo): Handle TODO_update_address_taken,
13455         call execute_update_addresses_taken for TODO_rebuild_alias.
13456         (execute_todo): Adjust.
13457         (execute_one_pass): Init dump files early.
13458         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
13459         call-clobbered.
13460         (create_general_new_stmt): Clear vops.
13461         * tree-ssa-reassoc.c (get_rank): Adjust.
13462         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
13463         symbols for renaming.
13464         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
13465         (PARAM_AVG_ALIASED_VOPS): Likewise.
13466         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
13467         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
13468         * tree-ssa-operands.c: Simplify for new virtual operand representation.
13469         (operand_build_cmp, copy_virtual_operands,
13470         create_ssa_artificial_load_stmt, add_to_addressable_set,
13471         gimple_add_to_addresses_taken): Remove public functions.
13472         (unlink_stmt_vdef): New function.
13473
13474 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
13475
13476         * config.gcc (powerpc-*-linux*): Merge variants.
13477
13478 2009-04-02  Chao-ying Fu  <fu@mips.com>
13479             James Grosbach  <james.grosbach@microchip.com>
13480
13481         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
13482         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
13483         cop0_sp_offset.
13484         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
13485         keep_interrupts_masked_p, use_debug_exception_return_p.
13486         (mips_attribute_table): Add interrupt, use_shadow_register_set,
13487         keep_interrupts_masked, use_debug_exception_return.
13488         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
13489         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
13490         New functions.
13491         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
13492         (mips_print_operand): Process COP0 registers to print $0 .. $31
13493         correctly for GAS to process.
13494         (mips_interrupt_extra_call_saved_reg_p): New function.
13495         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
13496         extra registers.
13497         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
13498         (mips_compute_frame_info): Add supports for interrupt context that
13499         includes doubleword accumulators and COP0 registers.
13500         (mips_for_each_saved_acc): New function.
13501         (mips_for_each_saved_gpr_and_fpr): Change the function name from
13502         mips_for_each_saved_reg.
13503         (mips_save_reg): Save accumulators.
13504         (mips_kernel_reg_p): A new for_each_rtx callback.
13505         (mips_expand_prologue): Support interrupt handlers.
13506         (mips_restore_reg): Restore accumulators.
13507         (mips_expand_epilogue): Support interrupt handlers.
13508         (mips_can_use_return_insn): Return false for interrupt handlers.
13509         (mips_epilogue_uses): New function.
13510         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
13511         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
13512         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
13513         cop0_move): New instructions.
13514         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
13515         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
13516         defines.
13517         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
13518         New defines.
13519         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
13520         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
13521         interrupt handlers, we use K0 as the temporary register.
13522         (EPILOGUE_USES): Change to a function call.
13523         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
13524         handlers, we use K0 as the temporary register.
13525
13526         * doc/extend.texi (Function Attributes): Document interrupt,
13527         use_shadow_register_set, keep_interrupts_masked,
13528         use_debug_exception_return for MIPS attributes.
13529
13530 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
13531
13532         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
13533         Remove a number of t-files from tmake_file.
13534         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
13535         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
13536         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
13537         target_prototype, not TARGET_PROTOTYPE.
13538         (LINK_OS_GNU_SPEC): Define.
13539         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
13540         and darwin-ldoubdle.c.
13541
13542 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
13543
13544         PR driver/39293
13545         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
13546         (cpp_options): Ditto.
13547         (default_compilers): Ditto.
13548         (display_help): Ditto.
13549         (process_command): Ditto.
13550         (do_spec_1): Ditto.
13551         (set_input): Use lbasename instead of duplicate code.
13552         (save_temps_prefix): New static for -save-temps=obj.
13553         (save_temps_length): Ditto.
13554
13555         * doc/invoke.texi (-save-temps=obj): Document new variant to
13556         -save-temps switch.
13557
13558 2009-04-02  Jeff Law  <law@redhat.com>
13559
13560         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
13561         variable.
13562
13563 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
13564
13565         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
13566         * configure: Regenerated.
13567
13568 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
13569
13570         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
13571         share the argument list.
13572
13573 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
13574
13575         Merge
13576
13577         2009-02-12  Diego Novillo  <dnovillo@google.com>
13578
13579         * varpool.c (debug_varpool): New.
13580         * cgraph.h (debug_varpool): Declare.
13581
13582 2009-04-02  Jan Hubicka  <jh@suse.cz>
13583
13584         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
13585         pass.
13586
13587 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
13588
13589         * config/i386/i386.c (ix86_abi): Move initialization to ...
13590         (override_options): Here.
13591
13592 2009-04-02  Christian Bruel  <christian.bruel@st.com>
13593
13594         * config/sh/sh.c (sh_dwarf_register_span): New function.
13595         (TARGET_DWARF_REGISTER_SPAN): Define.
13596         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
13597
13598 2009-04-02  Ira Rosen  <irar@il.ibm.com>
13599
13600         PR tree-optimization/39595
13601         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
13602         interleaved loads group is not  greater than the SLP group size.
13603
13604 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
13605
13606         * builtins.c (is_builtin_name): New.
13607         (called_as_built_in): Use is_builtin_name.
13608         * tree.h (is_builtin_name): New.
13609         * varasm.c (incorporeal_function_p): Use is_builtin_name
13610
13611 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
13612
13613         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
13614
13615 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
13616
13617         PR c++/26693
13618         * c-decl.c (clone_underlying_type): Move this ...
13619         * c-common.c (set_underlying_type): ... here.
13620         Also, make sure the function properly sets TYPE_STUB_DECL() on
13621         the newly created typedef variant type.
13622         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
13623         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
13624         points.
13625
13626 2009-04-02  Richard Guenther  <rguenther@suse.de>
13627
13628         PR tree-optimization/37221
13629         * tree-flow.h (degenerate_phi_result): Declare.
13630         * tree-ssa-dom.c (degenerate_phi_result): Export.
13631         * tree-scalar-evolution.c (analyze_initial_condition): If
13632         the initial condition is defined by a degenerate PHI node
13633         use the degenerate value.
13634
13635 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
13636
13637         PR rtl-optimization/39588
13638         * combine.c (merge_outer_ops): Do not set the constant when this
13639         is not necessary.
13640         (simplify_shift_const_1): Do not modify it either in this case.
13641
13642 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
13643
13644         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
13645         tuning is deprecated if -mtune value is set to an Itanium1 variant.
13646
13647 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
13648
13649         PR c/29027
13650         * c-lex.c (interpret_float): Default (no suffix) is double.
13651
13652 2009-04-1  Xinliang David Li  <davidxl@google.com>
13653
13654         * config/i386/i386.c (legitimate_constant_p): Recognize
13655         all one vector constant.
13656
13657 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13658
13659         * config/vax/vax.c: Add #includes to silence warnings.
13660         Change #include order to silence two warnings.
13661
13662 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13663
13664         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
13665         (ASM_SPEC): Pass -k to the assembler for PIC code.
13666
13667 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13668
13669         * config.gcc: Add vax-*-linux* to the switch.
13670         * config/vax/linux.h: New file. (TARGET_VERSION,
13671         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
13672
13673 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13674
13675         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
13676         Use predicate macros instead of GET_CODE() == foo.
13677         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
13678         ashlsi3, rotrsi3, <unnamed>): Likewise.
13679
13680 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13681
13682         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
13683         jbbccihi, jbbccisi): Remova trailing whitespace.
13684         * config/vax/constraints.md: Likewise.
13685         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
13686         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
13687         * config/vax/predicates.md: Likewise.
13688         * config/vax/vax.c (print_operand_address, vax_output_int_move,
13689         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
13690         * config/vax/vax.h: Likewise.
13691         * config/vax/vax.md (nonlocal_goto): Likewise.
13692
13693 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13694
13695         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
13696         (indirectable_address_p, adjacent_operands_p): Add spaces around
13697         braces.
13698         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
13699
13700 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13701
13702         * config/vax/vax.c (legitimate_constant_address_p,
13703         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
13704         index_term_p, reg_plus_index_p, legitimate_address_p,
13705         vax_mode_dependent_address_p): Update comments to match functions
13706         modified by the recent int->bool conversion.
13707
13708 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13709
13710         * config/vax/builtins.md: Update copyright message.
13711         * config/vax/constraints.md: Likewise.
13712         * config/vax/netbsd-elf.h: Likewise.
13713         * config/vax/predicates.md: Likewise.
13714         * config/vax/vax-protos.h: Likewise.
13715         * config/vax/vax.c: Likewise.
13716         * config/vax/vax.h: Likewise.
13717         * config/vax/vax.md: Likewise.
13718         * config/vax/vax.opt: Likewise.
13719
13720 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13721
13722         * config/vax/builtins.md (ffssi2, ffssi2_internal,
13723         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
13724         * config/vax/constraints.md (B, R): Likewise.
13725         * config/vax/predicates.md (external_memory_operand,
13726         nonimmediate_addsub_di_operand): Likewise.
13727         * config/vax/vax.c (vax_output_int_add): Likewise.
13728         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
13729         untyped_call): Likewise.
13730
13731 2009-04-01  Matt Thomas  <matt@3am-software.com>
13732
13733         * config/vax/predicates.md: New file.
13734         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
13735         external_const_operand, nonsymbolic_operand, external_memory_operand,
13736         indirect_memory_operand, indexed_memory_operand,
13737         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
13738         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
13739         predicate.
13740         * config/vax/constraints.md: New file.
13741         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
13742         New constraint.
13743         * config/vax/builtins.md: New file.
13744         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
13745         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
13746         jbbccisi): Define.
13747         * config/vax/vax.opt (mqmath): Add option.
13748         * config/vax/vax.md (isfx): Extend with DI.
13749         (VAXintQH, VAXintQHSD): Define.
13750         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
13751         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
13752         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
13753         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
13754         (movdi): Update constraints and use vax_output_int_move().
13755         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
13756         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
13757         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
13758         nonlocal_goto): New.
13759         (mov<mode>): Extend accepted operand types.
13760         (subdi3_old): Rename from subdi3, change update constraints and use
13761         a new implementation.
13762         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
13763         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
13764         MOVE_RATIO, CLEAR_RATIO): Define.
13765         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
13766         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
13767         (PRINT_OPERAND): Redefine using a function instead of inlined code.
13768         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
13769         (split_quadword_operands): Make static and really allow variable
13770         splitting.
13771         (print_operand_address): Update for PIC generation.
13772         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
13773         indexable_address_p, fixup_mathdi_operand,
13774         vax_expand_addsub_di_operands, adjacent_operands_p): New.
13775         (vax_float_literal, legitimate_constant_p,
13776         indirectable_constant_address_p, index_term_p,
13777         reg_plus_index_p): Return bool instead of int.
13778         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
13779         where needed.
13780         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
13781         generation.
13782         (vax_output_conditional_branch): Indent.
13783         (legitimate_constant_address_p, indirectable_constant_address_p,
13784         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
13785         vax_mode_dependent_address_p): Return bool instead of int, update for
13786         PIC generation.
13787         * config/vax/vax-protos.h (legitimate_constant_address_p,
13788         legitimate_constant_p, legitimate_address_p,
13789         vax_mode_dependent_address_p): Change declaration to bool.
13790         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
13791         vax_expand_addsub_di_operands, vax_output_int_subtract,
13792         vax_output_movmemsi): Declare.
13793         (split_quadword_operands, vax_float_literal): Delete declaration.
13794         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
13795         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
13796         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
13797         ASM_OUTPUT_DWARF_PCREL): Define.
13798         (ASM_SPEC): Change definition to allow PIC generation.
13799
13800 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
13801
13802         * doc/sourcebuild.texi: Update front-end requirements.
13803
13804 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
13805
13806         PR target/39226
13807         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
13808         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
13809         (booldi3_internal3): Use boolean_or_operator instead of
13810         boolean_operator.
13811
13812 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
13813
13814         PR c/39605
13815         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
13816         declarator whose size is not an integer constant expression but
13817         folds to an integer constant, then treat it as a constant
13818         subsequently.
13819
13820 2009-04-01  Richard Guenther  <rguenther@suse.de>
13821
13822         * fold-const.c (fold_plusminus_mult_expr): Do not fold
13823         i * 4 + 2 to (i * 2 + 1) * 2.
13824
13825 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
13826
13827         PR c/37772
13828         * c-parser.c (c_parser_asm_statement): Skip until close paren and
13829         return if c_parser_asm_string_literal returned NULL.
13830
13831 2009-04-01  Nick Clifton  <nickc@redhat.com>
13832
13833         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
13834         already defined.
13835         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
13836         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
13837         other typedefs to avoid conflicts with libgcc2.c.  Define labels
13838         to gain 16-bit bit-manipulation functions from libgcc2.c and then
13839         include it.
13840         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
13841         to gain 16-bit trapping arithmetic functions from libgcc2.c and
13842         then include it.
13843
13844 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
13845
13846         * varasm.c (default_function_rodata_section): Declare DOT as
13847         const char*.
13848
13849 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
13850             Andrey Galkin  <agalkin@hypercom.com>
13851
13852         PR/39492
13853         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
13854         Make object_name unique for each process.
13855
13856 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
13857
13858         PR other/39591
13859         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
13860         addressable variables in the parallel that could go out of scope while
13861         running queued tasks.
13862
13863 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
13864
13865         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
13866         (CASE_VALUES_THRESHOLD): Redefine.
13867         * config/avr/avr.c (avr_override_options): Remove initialization of
13868         avr_case_values_threshold variable.
13869         (avr_case_values_threshold): Remove variable. Add new function.
13870         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
13871         * config/avr/avr.opt (mno-tablejump): Remove option.
13872         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
13873
13874 2009-04-01  DJ Delorie  <dj@redhat.com>
13875
13876         * varasm.c (default_function_rodata_section): Don't assume
13877         anything about where the first '.' in the section name is.
13878
13879 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
13880
13881         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
13882         rs6000_emit_stack_tie.
13883
13884 2009-03-31  Ian Lance Taylor  <iant@google.com>
13885
13886         * tree-eh.c (tree_remove_unreachable_handlers): Compare
13887         gimple_code with GIMPLE_RESX, not RESX.
13888
13889 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
13890
13891         * c-common.c (c_get_ident): New.
13892         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
13893
13894 2009-04-01  Ben Elliston  <bje@au.ibm.com>
13895
13896         * config/rs6000/sysv4.opt (msdata): Improve option description.
13897
13898 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
13899
13900         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
13901         (divdf3_internal_lat): Remove.
13902         (divxf3_internal_lat): Remove.
13903         (divxf3_internal_thr): Remove.
13904         (divxf): Use divxf3_internal.
13905         * config/ia64/div.md (divsf3_internal_lat): New.
13906         (divdf3_internal_lat): New.
13907         (divxf3_internal): New.
13908
13909 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
13910
13911         PR c/448
13912         * Makefile.in (USE_GCC_STDINT): Define.
13913         (stmp-int-hdrs): Install stdint.h if applicable.
13914         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
13915         if known.
13916         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
13917         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
13918         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
13919         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
13920         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
13921         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
13922         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
13923         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
13924         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
13925         (c_common_nodes_and_builtins): Initialize
13926         underlying_wchar_type_node.  Do not initialize
13927         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
13928         nodes for new types.
13929         (c_stddef_cpp_builtins): Define macros for new types.
13930         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
13931         Remove.
13932         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
13933         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
13934         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
13935         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
13936         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
13937         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
13938         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
13939         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
13940         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
13941         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
13942         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
13943         int16_type_node, int32_type_node, int64_type_node,
13944         uint8_type_node, uint16_type_node, c_uint32_type_node,
13945         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
13946         int_least32_type_node, int_least64_type_node,
13947         uint_least8_type_node, uint_least16_type_node,
13948         uint_least32_type_node, uint_least64_type_node,
13949         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
13950         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
13951         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
13952         uintptr_type_node): Define.
13953         * c-cppbuiltin.c (builtin_define_constants,
13954         builtin_define_type_minmax): New.
13955         (builtin_define_stdint_macros): Define more macros.
13956         (c_cpp_builtins): Define more limit macros.
13957         (type_suffix): New.
13958         (builtin_define_type_max): Define in terms of
13959         builtin_define_type_minmax.  Remove is_long parameter.  All
13960         callers changed.
13961         * config.gcc (use_gcc_stdint): Define.
13962         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
13963         Add newlib-stdint.h for generic targets.
13964         * config/glibc-stdint.h, config/newlib-stdint.h,
13965         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
13966         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
13967         * config/score/score.h (UINTPTR_TYPE): Define.
13968         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
13969         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
13970         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
13971         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
13972         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
13973         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
13974         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
13975         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
13976         * config/spu/spu.h (STDINT_LONG32): Define.
13977         * configure.ac (use_gcc_stdint): Substitute.
13978         * configure: Regenerate.
13979         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
13980         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
13981         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
13982         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
13983         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
13984         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
13985         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
13986         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
13987         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
13988         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
13989         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
13990         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
13991         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
13992         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
13993         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
13994         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
13995         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
13996         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
13997         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
13998         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
13999         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
14000         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
14001         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
14002         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
14003         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
14004         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
14005         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
14006         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
14007         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
14008
14009 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
14010
14011         * loop-iv.c (suitable_set_for_replacement): Renamed from
14012         simplify_using_assignment; changed to return bool and to accept new
14013         args DEST and SRC.  Return true iff we find a source/destination pair
14014         that can be used to make a replacement, and fill SRC and DEST if so.
14015         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
14016         changed.
14017         (simplify_using_initial_values): Deal with altered regs here and track
14018         more precisely the effect they have on the validity of our expression.
14019
14020         * loop-iv.c (simplify_using_condition): A condition of the form
14021         (EQ REG CONST) can be used to simply make a substitution.
14022         (simplify_using_initial_values): Keep track of conditions we have seen
14023         and keep using them to simplify new expressions, while applying the
14024         same substitutions to them as to the expression.
14025
14026         * simplify-rtx.c (simplify_relational_operation_1): Simplify
14027         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
14028         GEU/LTU reversed.
14029
14030         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
14031         changed.  Use this when trying to improve the upper bound.
14032         Generate the comparison by using simplify_gen_relational.
14033
14034         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
14035
14036         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
14037         functions.
14038         (simplify_using_assignment, simplify_using_initial_values): Call
14039         replace_in_expr to make replacements.  Call replace_single_def_regs
14040         once on the initial version of the expression.
14041
14042 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14043
14044         PR target/27237
14045         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
14046
14047 2009-03-31  Richard Guenther  <rguenther@suse.de>
14048
14049         PR middle-end/31029
14050         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
14051         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
14052
14053 2009-03-31  Richard Guenther  <rguenther@suse.de>
14054
14055         * tree.h (div_if_zero_remainder): Declare.
14056         * fold-const.c (div_if_zero_remainder): Export.
14057         * tree-ssa-forwprop.c
14058         (forward_propagate_addr_into_variable_array_index): Handle
14059         constant array index addition outside of the variable index.
14060
14061 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
14062
14063         PR target/39592
14064         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
14065         define_splits, floatunssi<mode>2): Require x87 conversions from
14066         DImode to be permitted.
14067
14068 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
14069
14070         PR preprocessor/15638
14071         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
14072
14073 2009-03-31  Richard Guenther  <rguenther@suse.de>
14074
14075         PR middle-end/23401
14076         PR middle-end/27810
14077         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
14078         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
14079         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
14080         a separate statement.
14081         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
14082         (lookup_tmp_var): Likewise.
14083         (is_gimple_formal_tmp_or_call_rhs): Remove.
14084         (is_gimple_reg_or_call_rhs): Rename to ...
14085         (is_gimple_reg_rhs_or_call): ... this.
14086         (is_gimple_mem_or_call_rhs): Rename to ...
14087         (is_gimple_mem_rhs_or_call): ... this.
14088         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
14089         DECL_GIMPLE_REG_P only if is_formal is true.
14090         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
14091         for non-proper post-modify expression gimplification.
14092         (gimplify_self_mod_expr): For post-modify expressions gimplify
14093         the lvalue to a minimal lvalue.
14094         (rhs_predicate_for): Remove formal temp case.
14095         (gimplify_modify_expr_rhs): Likewise.
14096         (gimplify_addr_expr): Use is_gimple_reg.
14097         (gimplify_expr): Remove formal temp cases.
14098         (gimple_regimplify_operands): Likewise.
14099         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
14100         and FILTER_EXPR like constants.
14101         * gimple.c (walk_gimple_op): Fix val_only initialization, use
14102         is_gimple_reg.
14103         (is_gimple_formal_tmp_rhs): Remove.
14104         (is_gimple_reg_rhs): Remove special casing.
14105         (is_gimple_mem_rhs): Fix.
14106         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
14107         (is_gimple_formal_tmp_var): Remove.
14108         (is_gimple_formal_tmp_reg): Likewise.
14109         (is_gimple_min_lval): Allow invariant component ref parts.
14110         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
14111         is_gimple_formal_tmp_reg): Remove declarations.
14112         * tree-cfg.c (verify_expr): Verify that variables with address
14113         taken do not have DECL_GIMPLE_REG_P set.
14114         * tree-mudflap.c (mf_build_check_statement_for): Use
14115         force_gimple_operand instead of gimplify_expr.
14116
14117 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
14118
14119         * modulo-sched.c (sms_schedule_by_order): Pass the actual
14120         schedulable rows to compute_split_row.
14121
14122 2009-03-31  Ben Elliston  <bje@au.ibm.com>
14123
14124         PR target/31635
14125         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
14126         OPT_mvrsave.
14127
14128 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
14129
14130         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
14131         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
14132         * configure: Regenerate.
14133         * config.in: Regenerate.
14134         * config/rs6000/rs6000.opt (mtls-markers): Add.
14135         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
14136         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
14137         (tls_ld_aix, tls_ld_sysv): Likewise.
14138         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
14139         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
14140
14141 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
14142
14143         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
14144
14145 2009-03-30  Jan Hubicka  <jh@suse.cz>
14146
14147         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
14148         out of RESX.
14149         (tree_remove_unreachable_handlers): Cleanup EH predecestor
14150         detection and label handling.
14151
14152 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
14153
14154         * ira-int.h (ira_allocno): Rename left_conflicts_num to
14155         left_conflicts_size.
14156         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
14157         ALLOCNO_LEFT_CONFLICTS_SIZE.
14158
14159         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
14160         remove_allocno_from_bucket_and_push,
14161         allocno_spill_priority_compare, push_allocnos_to_stack,
14162         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
14163         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
14164         (setup_allocno_left_conflicts_num): Ditto.  Rename to
14165         setup_allocno_left_conflicts_size.
14166         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
14167         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
14168         setup_allocno_left_conflicts_size instead of
14169         setup_allocno_left_conflicts_num.
14170
14171         * ira-build.c (ira_create_allocno): Use
14172         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
14173         ALLOCNO_LEFT_CONFLICTS_NUM.
14174
14175 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
14176
14177         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
14178         instead of DF_LR_OUT.
14179
14180         * ira-lives.c (process_bb_node_lives): Ditto.
14181
14182         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
14183         instead of DF_LR_{OUT,IN}.
14184
14185         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
14186
14187         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
14188
14189 2009-03-30  Jan Hubicka  <jh@suse.cz>
14190
14191         * except.c (label_to_region_map): Fix thinko.
14192
14193 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
14194
14195         PR middle-end/38237
14196         * tree.h (tree_find_value): New declaration.
14197         * tree.c (tree_find_value): New function.
14198         * varasm.c (assemble_external): Avoid duplicate entries on lists.
14199
14200 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
14201
14202         PR debug/39563
14203         * c-decl.c (struct c_binding): Add locus field.
14204         (bind): Add locus argument, set locus field from it.
14205         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
14206         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
14207         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
14208         implicitly_declare, undeclared_variable, lookup_label,
14209         declare_label, c_make_fname_decl, c_builtin_function,
14210         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
14211         bind callers.
14212
14213 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
14214
14215         PR target/38781
14216         * config/i386/i386.c (classify_argument): Check total size of
14217         structure.
14218
14219 2009-03-30  Martin Jambor  <mjambor@suse.cz>
14220
14221         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
14222         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
14223         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
14224         respectively.
14225
14226         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
14227         seen_variable_array_ref while also traversing a union.
14228
14229         * tree-inline.c (optimize_inline_calls): Do not call
14230         cgraph_node_remove_callees.
14231         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
14232         (pass_remove_cgraph_callee_edges): New variable.
14233         * passes.c (init_optimization_passes): Add
14234         pass_remove_cgraph_callee_edges after early inlining and before all
14235         late intraprocedural passes.
14236
14237         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
14238
14239 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14240
14241         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
14242         Fix typos in names.
14243
14244 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14245
14246         * combine.c (simplify_comparison): Use have_insn_for.
14247         * dojump.c (do_jump): Likewise.
14248
14249 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14250
14251         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
14252         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
14253         sparc_compare_op0 like sparc_compare_emitted used to be handled.
14254         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
14255         instead of sparc_compare_emitted.
14256         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
14257         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
14258         instead of sparc_compare_emitted.
14259
14260 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14261
14262         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
14263         enter/exit cfglayout mode.
14264         (pass_partition_block): Require it.
14265         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
14266         (combine_instructions): Track basic blocks instead of labels.
14267         (update_cfg_for_uncondjump): New.
14268         (try_combine): Use it.  Update jumps after rescanning.
14269         (pass_combine): Require PROP_cfglayout.
14270         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
14271
14272 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14273
14274         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
14275         Provide/destroy PROP_cfglayout respectively.
14276         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
14277         * tree-pass.h (PROP_cfglayout): New.
14278
14279 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14280
14281         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
14282         fold_convert_const_fixed_from_fixed,
14283         fold_convert_const_fixed_from_int,
14284         fold_convert_const_fixed_from_real, fold_negate_const): Do not
14285         set TREE_CONSTANT_OVERFLOW.
14286         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
14287         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
14288
14289 2009-03-30  Ira Rosen  <irar@il.ibm.com>
14290
14291         * tree-vect-loop-manip.c: New file.
14292         * tree-vectorizer.c: Update documentation and included files.
14293         (vect_loop_location): Make extern.
14294         (rename_use_op): Move to tree-vect-loop-manip.c
14295         (rename_variables_in_bb, rename_variables_in_loop,
14296         slpeel_update_phis_for_duplicate_loop,
14297         slpeel_update_phi_nodes_for_guard1,
14298         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
14299         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
14300         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
14301         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
14302         find_loop_location): Likewise.
14303         (new_stmt_vec_info): Move to tree-vect-stmts.c.
14304         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
14305         get_vectype_for_scalar_type, vect_is_simple_use,
14306         supportable_widening_operation, supportable_narrowing_operation):
14307         Likewise.
14308         (bb_in_loop_p): Move to tree-vect-loop.c.
14309         (new_loop_vec_info, destroy_loop_vec_info,
14310         reduction_code_for_scalar_code, report_vect_op,
14311         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
14312         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
14313         (vect_supportable_dr_alignment): Likewise.
14314         * tree-vectorizer.h (tree-data-ref.h): Include.
14315         (vect_loop_location): Declare.
14316         Reorganize function declarations according to the new file structure.
14317         * tree-vect-loop.c: New file.
14318         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
14319         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
14320         * tree-vect-data-refs.c: New file.
14321         * tree-vect-patterns.c (timevar.h): Don't include.
14322         * tree-vect-stmts.c: New file.
14323         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
14324         tree-vect-slp.c, tree-vect-loop.c.
14325         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
14326         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
14327         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
14328         (tree-vect-analyze.o): Remove.
14329         (tree-vect-transform.o): Likewise.
14330         (tree-vect-data-refs.o): Add rule.
14331         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
14332         tree-vect-slp.o): Likewise.
14333         (tree-vect-patterns.o): Remove redundant dependencies.
14334         (tree-vectorizer.o): Likewise.
14335         * tree-vect-slp.c: New file.
14336
14337 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14338
14339         * optc-gen.awk: Warn if an option flag has multiple different
14340         help strings.
14341
14342 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
14343
14344         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
14345         -floop-block): Document dependences on PPL, CLooG and Graphite.
14346
14347 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
14348
14349         PR rtl-optimization/323
14350         * c-common.c (c_fully_fold, convert_and_check,
14351         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
14352         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
14353         * c-common.def (EXCESS_PRECISION_EXPR): New.
14354         * c-cppbuiltin.c (builtin_define_float_constants): Define
14355         constants with enough digits for long double.
14356         * c-lex.c (interpret_float): Interpret constant with excess
14357         precision where appropriate.
14358         * c-opts.c (c_common_post_options): Set
14359         flag_excess_precision_cmdline.  Give an error for
14360         -fexcess-precision=standard for C++ for processors where the
14361         option is significant.
14362         * c-parser.c (c_parser_conditional_expression): Handle excess
14363         precision in condition.
14364         * c-typeck.c (convert_arguments): Handle arguments with excess
14365         precision.
14366         (build_unary_op): Move excess precision outside operation.
14367         (build_conditional_expr): Likewise.
14368         (build_compound_expr): Likewise.
14369         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
14370         (build_modify_expr): Handle excess precision in RHS.
14371         (convert_for_assignment): Handle excess precision in converted
14372         value.
14373         (digest_init, output_init_element, process_init_element): Handle
14374         excess precision in initializer.
14375         (c_finish_return): Handle excess precision in return value.
14376         (build_binary_op): Handle excess precision in operands and add
14377         excess precision as needed for operation.
14378         * common.opt (-fexcess-precision=): New option.
14379         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
14380         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
14381         For standard excess precision, output explicit conversion to and
14382         truncation from XFmode.
14383         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
14384         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
14385         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
14386         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
14387         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
14388         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
14389         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
14390         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
14391         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
14392         define_splits, sqrt<mode>2): Disable where appropriate for
14393         standard excess precision.
14394         * convert.c (convert_to_real): Do not shorten arithmetic to type
14395         for which excess precision would be used.
14396         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
14397         * doc/invoke.texi (-fexcess-precision=): Document option.
14398         (-mfpmath=): Correct index entry.
14399         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
14400         flag_excess_precision): New.
14401         * langhooks.c (lhd_post_options): Set
14402         flag_excess_precision_cmdline.
14403         * opts.c (common_handle_option): Handle -fexcess-precision=.
14404         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
14405         init_excess_precision): New.
14406         (lang_dependent_init_target): Call init_excess_precision.
14407         * tree.c (excess_precision_type): New.
14408         * tree.h (excess_precision_type): Declare.
14409
14410 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
14411
14412         PR c/35235
14413         * c-typeck.c (build_component_ref): Do not copy qualifiers from
14414         non-lvalue to component.
14415
14416 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
14417
14418         PR preprocessor/34695
14419         * Makefile.in (c-opts.o): Depend on c-tree.h.
14420         * c-common.c: Move down include of diagnostic.h.
14421         (done_lexing, c_cpp_error): New.
14422         * c-common.h (done_lexing): Declare.
14423         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
14424         (parse_in).
14425         * c-opts.c: Include c-tree.h.
14426         (c_common_init_options): Set preprocessor error callback.
14427         (c_common_handle_option): Do not set preprocessor
14428         inhibit_warnings, warnings_are_errors, warn_system_headers,
14429         pedantic_errors or inhibit_warnings flags.
14430         (c_common_post_options): Do not check cpp_errors (parse_in).
14431         (c_common_finish): Do not output dependencies if there were
14432         errors.  Do not check return value of cpp_finish.
14433         * c-ppoutput.c (pp_file_change): Set input_location.
14434         * c-tree.h (c_cpp_error): Declare.
14435         * diagnostic.c (diagnostic_set_info_translated): Also initialize
14436         override_column.
14437         (diagnostic_build_prefix): Check override_column.
14438         * diagnostic.h (diagnostic_info): Add override_column field.
14439         (diagnostic_override_column): Define.
14440
14441 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
14442
14443         * c-common.c (c_expand_expr, c_staticp): Remove.
14444         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
14445         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
14446         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
14447         * c-gimplify.c (gimplify_compound_literal_expr,
14448         optimize_compound_literals_in_ctor): Remove.
14449         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
14450         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
14451         * c-semantics.c (emit_local_var): Remove.
14452
14453         * langhooks-def.h (lhd_expand_expr): Remove.
14454         * langhooks.c (lhd_expand_expr): Remove.
14455         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
14456
14457         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
14458         handling from c-semantics.c; don't call into langhook.
14459         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
14460         * gimplify.c (gimplify_compound_literal_expr,
14461         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
14462         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
14463         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
14464         as was done in c-gimplify.c.
14465         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
14466         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
14467         Move from c-common.h.
14468         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
14469
14470         * tree.c (staticp): Do not call langhook.
14471         * langhooks.c (lhd_staticp): Delete.
14472         * langhooks-def.h (lhd_staticp): Delete prototype.
14473         (LANG_HOOKS_STATICP): Delete.
14474         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
14475
14476         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
14477         instead of DECL_STMTs.
14478
14479 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
14480
14481         PR c/456
14482         PR c/5675
14483         PR c/19976
14484         PR c/29116
14485         PR c/31871
14486         PR c/35198
14487         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
14488         void_type_node.
14489         (fold_call_expr): Return a NOP_EXPR from folding rather than the
14490         contained expression.
14491         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
14492         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
14493         conditional expressions for C.
14494         (decl_constant_value_for_optimization): Move from
14495         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
14496         whether optimizing and that the expression is a VAR_DECL not of
14497         array type instead of doing such checks in the caller.  Do not
14498         check pedantic.  Call gcc_unreachable for C++.
14499         * c-common.def (C_MAYBE_CONST_EXPR): New.
14500         * c-common.h (c_fully_fold, c_save_expr,
14501         decl_constant_value_for_optimization): New prototypes.
14502         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
14503         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
14504         EXPR_INT_CONST_OPERANDS): Define.
14505         * c-convert.c (convert): Strip nops from expression.
14506         * c-decl.c (groktypename): Take extra parameters expr and
14507         expr_const_operands.  Update call to grokdeclarator.
14508         (start_decl): Update call to grokdeclarator.  Add statement for
14509         expressions used in type of decl.
14510         (grokparm): Update call to grokdeclarator.
14511         (push_parm_decl): Update call to grokdeclarator.
14512         (build_compound_literal): Add parameter non_const and build a
14513         C_MAYBE_COSNT_EXPR if applicable.
14514         (grokdeclarator): Take extra parameters expr and
14515         expr_const_operands.  Track expressions used in declaration
14516         specifiers and declarators.  Fold array sizes and track whether
14517         they are constant expressions and whether they are integer
14518         constant expressions.
14519         (parser_xref_tag): Set expr and expr_const_operands fields in
14520         return value.
14521         (grokfield): Update call to grokdeclarator.
14522         (start_function): Update call to grokdeclarator.
14523         (build_null_declspecs): Set expr and expr_const_operands fields in
14524         return value.
14525         (declspecs_add_type): Handle expressions in typeof specifiers.
14526         * c-parser.c (c_parser_declspecs): Set expr and
14527         expr_const_operands fields for declaration specifiers.
14528         (c_parser_enum_specifier): Likewise.
14529         (c_parser_struct_or_union_specifier): Likewise.
14530         (c_parser_typeof_specifier): Likewise.  Update call to
14531         groktypename.  Fold expression as needed.  Return expressions with
14532         type instead of adding statements.
14533         (c_parser_attributes): Update calls to c_parser_expr_list.
14534         (c_parser_statement_after_labels): Fold expression before passing
14535         to objc_build_throw_stmt.
14536         (c_parser_condition): Fold expression.
14537         (c_parser_asm_operands): Fold expression.
14538         (c_parser_conditional_expression): Use c_save_expr.  Update call
14539         to build_conditional_expr.
14540         (c_parser_alignof_expression): Update call to groktypename.
14541         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
14542         original_code.  Fold expression argument of va_arg.  Create
14543         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
14544         argument to va_arg.  Update calls to groktypename.  Fold array
14545         index for offsetof.  Verify that first argument to
14546         __builtin_choose_expr has integer type.
14547         (c_parser_postfix_expression_after_paren_type): Update calls to
14548         groktypename and build_compound_literal.  Handle expressions with
14549         side effects in type name.
14550         (c_parser_postfix_expression_after_primary): Update call to
14551         c_parser_expr_list.  Set original_code for calls to
14552         __builtin_constant_p.
14553         (c_parser_expr_list): Take extra parameter fold_p.  Fold
14554         expressions if requested.
14555         (c_parser_objc_type_name): Update call to groktypename.
14556         (c_parser_objc_synchronized_statement): Fold expression.
14557         (c_parser_objc_receiver): Fold expression.
14558         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
14559         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
14560         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
14561         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
14562         (struct c_typespec): Add elements expr and expr_const_operands.
14563         (struct c_declspecs): Add elements expr and expr_const_operands.
14564         (groktypename, build_conditional_expr, build_compound_literal):
14565         Update prototypes.
14566         (in_late_binary_op): Declare.
14567         * c-typeck.c (note_integer_operands): New function.
14568         (in_late_binary_op): New variable.
14569         (decl_constant_value_for_broken_optimization): Move to c-common.c
14570         and rename to decl_constant_value_for_optimization.
14571         (default_function_array_conversion): Do not strip nops.
14572         (default_conversion): Do not call
14573         decl_constant_value_for_broken_optimization.
14574         (build_array_ref): Do not fold result.
14575         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
14576         result when operand is a VLA.
14577         (c_expr_sizeof_type): Update call to groktypename.  Handle
14578         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
14579         result when operand names a VLA type.
14580         (build_function_call): Update call to build_compound_literal.
14581         Only fold result for calls to __builtin_* functions.  Strip
14582         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
14583         the function designator.
14584         (convert_arguments): Fold arguments.  Update call to
14585         convert_for_assignment.
14586         (build_unary_op): Handle increment and decrement of
14587         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
14588         decrement earlier.  Fold operand of increment and decrement.
14589         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
14590         built for integer operand.  Wrap returns that are INTEGER_CSTs
14591         without being integer constant expressions or that have integer
14592         constant operands without being INTEGER_CSTs.
14593         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
14594         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
14595         result is an integer constant expression or can be used in
14596         unevaluated parts of one and avoid folding and wrap as
14597         appropriate.  Fold operands before possibly doing -Wsign-compare
14598         warnings.
14599         (build_compound_expr): Wrap result for C99 if operands can be used
14600         in integer constant expressions.
14601         (build_c_cast): Update call to digest_init.  Do not ignore
14602         overflow from casting floating-point constants to integers.  Wrap
14603         results that could be confused with integer constant expressions,
14604         null pointer constants or floating-point constants.
14605         (c_cast_expr): Update call to groktypename.  Handle expressions
14606         included in type name.
14607         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
14608         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
14609         Update calls to convert_for_assignment.
14610         (convert_for_assignment): Take new parameter
14611         null_pointer_constant.  Do not strip nops or call
14612         decl_constant_value_for_broken_optimization.  Set
14613         in_late_binary_op for conversions to boolean.
14614         (store_init_value): Update call to digest_init.
14615         (digest_init): Take new parameter null_pointer_constant.  Do not
14616         call decl_constant_value_for_broken_optimization.  pedwarn for
14617         initializers not constant expressions.  Update calls to
14618         convert_for_assignment.
14619         (constructor_nonconst): New.
14620         (struct constructor_stack): Add nonconst element.
14621         (really_start_incremental_init, push_init_level, pop_init_level):
14622         Handle constructor_nonconst and nonconst element.
14623         (set_init_index): Call constant_expression_warning for array
14624         designators.
14625         (output_init_element): Fold value.  Set constructor_nonconst as
14626         applicable.  pedwarn for initializers not constant expressions.
14627         Update call to digest_init.  Call constant_expression_warning
14628         where constant initializers are required.
14629         (process_init_element): Use c_save_expr.
14630         (c_finish_goto_ptr): Fold expression.
14631         (c_finish_return): Fold return value.  Update call to
14632         convert_for_assignment.
14633         (c_start_case): Fold switch expression.
14634         (c_process_expr_stmt): Fold expression.
14635         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
14636         ensure statement expression is not evaluated in constant expression.
14637         (build_binary_op): Track whether results are integer constant
14638         expressions or may occur in such, disable folding and wrap results
14639         as applicable.  Fold operands for -Wsign-compare warnings unless
14640         in_late_binary_op.
14641         (c_objc_common_truthvalue_conversion): Handle results folded to
14642         integer constants that are not integer constant expressions.
14643         * doc/extend.texi: Document when typeof operands are evaluated,
14644         that condition of __builtin_choose_expr is an integer constant
14645         expression, and more about use of __builtin_constant_p in
14646         initializers.
14647
14648 2009-03-29  Richard Guenther  <rguenther@suse.de>
14649
14650         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
14651         propagate addresses of array references.
14652
14653 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
14654
14655         * regmove.c (perhaps_ends_bb_p): Remove.
14656         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
14657         from INSN and check that the main loop stays within that basic block.
14658         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
14659         (regmove_forward_pass): Split out from regmove_optimize.  Use
14660         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
14661         (regmove_backward_pass): Split out from regmove_optimize.  Use
14662         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
14663         (regmove_optimize): Simplify.
14664
14665 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
14666
14667         PR target/39545
14668         * config/i386/i386.c (classify_argument): Ignore flexible array
14669         member in struct and warn ABI change.
14670
14671 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
14672
14673         * config/i386/i386-protos.h (ix86_agi_dependent): New.
14674
14675         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
14676         (ix86_adjust_cost): Updated.
14677
14678 2009-03-29  Jan Hubicka  <jh@suse.cz>
14679
14680         PR middle-end/28850
14681         * tree-pass.h (pass_cleanup_eh): New function.
14682         (remove_unreachable_regions): Break code handling RTL
14683         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
14684         that can not be reached by runtime.
14685         (can_be_reached_by_runtime): New function.
14686         (label_to_region_map): New function.
14687         (num_eh_regions): New function.
14688         (rtl_remove_unreachable_regions): New function.
14689         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
14690         (remove_eh_region): New function.
14691         * except.h: Include sbitmap and vecprim.
14692         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
14693         num_eh_regions): Declare.
14694         * passes.c (init_optimization_passes): Schedule cleanup_eh.
14695         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
14696         * tree-eh.c (tree_remove_unreachable_handlers): New function.
14697         (tree_empty_eh_handler_p): New function.
14698         (cleanup_empty_eh): New function.
14699         (cleanup_eh): New function.
14700         (pass_cleanup_eh): New function.
14701
14702 2009-03-29  Jan Hubicka  <jh@suse.cz>
14703
14704         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
14705         for removed regions.
14706
14707 2009-03-29  Jan Hubicka  <jh@suse.cz>
14708
14709         * except.c (dump_eh_tree): Dump all datastructures.
14710
14711 2009-03-29  Jan Hubicka  <jh@suse.cz>
14712
14713         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
14714         (duplicate_eh_regions_1): Likewise.
14715         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
14716         vector; call EH verification.
14717         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
14718         Be ready for region being removed.
14719
14720 2009-03-29  Jan Hubicka  <jh@suse.cz>
14721
14722         * bitmap.c (bitmap_last_set_bit): New function.
14723         * bitmap.h (bitmap_last_set_bit): Declare.
14724
14725 2009-03-29  David Ayers  <ayers@fsfe.org>
14726
14727         PR objc/27377
14728         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
14729         by calling objc_compare_types and surpress warnings about
14730         incompatible C pointers that are compatible ObjC pointers.
14731
14732 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
14733
14734         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
14735         call initialize_inline_failed.
14736         (initialize_inline_failed): Move it from here ...
14737         * cgraph.c (initialize_inline_failed): ... to here.
14738         (cgraph_create_edge): Call initialize_inline_failed rather than
14739         setting inline_failed directly.
14740
14741 2009-03-29  Ben Elliston  <bje@au.ibm.com>
14742
14743         PR target/32542
14744         * sysv4.opt (msdata): Improve comment.
14745         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
14746         * sysv4.h (SVR4_ASM_SPEC): Likewise.
14747
14748 2009-03-29  Ben Elliston  <bje@au.ibm.com>
14749
14750         PR target/30451
14751         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
14752         load and store attributes.
14753
14754 2009-03-29  Ben Elliston  <bje@au.ibm.com>
14755
14756         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
14757         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
14758         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
14759         * doc/extend.texi (X86 Built-in Functions): Add index entries for
14760         __builtin_infq and __builtin_huge_valq.
14761
14762 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
14763
14764         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
14765         atmega8m1 devices.
14766         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
14767         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
14768
14769 2009-03-28  Xinliang David Li  <davidxl@google.com>
14770
14771         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
14772         (do_dbg_cnt): New function.
14773
14774 2009-03-28  Jan Hubicka  <jh@suse.cz>
14775
14776         Merge from pretty-ipa:
14777
14778         2009-03-27  Jan Hubicka  <jh@suse.cz>
14779
14780         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
14781         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
14782         * passes.c (function_called_by_processed_nodes_p): New.
14783         * ipa-pure-const.c (check_call): Fix handling of operands.
14784         (analyze_function): Dump debug output for skipped bodies.
14785         (local_pure_const): Use function_called_by_processed_nodes_p.
14786         * dwarf2out.c (reference_to_unused): Use output.
14787         * passes.c (do_per_function_toporder): Likewise.
14788
14789         2008-11-12  Jan Hubicka  <jh@suse.cz>
14790
14791         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
14792         * ipa-pure-const.c (funct_state_d): Add can throw field; make
14793         state_set_in_source enum
14794         (check_decl): Ignore memory tags; do not set fake looping flags;
14795         dump diagnostics.
14796         (check_operand, check_tree, check_rhs_var, check_lhs_var,
14797         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
14798         (check_call, analyze_function): Rewrite.
14799         (check_stmt): New.
14800         (add_new_function): Update call of analyze_function.
14801         (generate_summary): Add call of analyze_function.
14802         (propagate): Propagate can_throw; handle state_set_in_source correctly.
14803         (local_pure_const): New function.
14804         (pass_local_pure_const): New pass.
14805         * ipa-inline.c (inline_transform): Set after_inlining.
14806         * tree-eh.c (stmt_can_throw_external): New.
14807         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
14808         work with aliasing built.
14809         * tree-flow.h (stmt_can_throw_external): New.
14810         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
14811         and local pure/const pass in early and late optimization queue.
14812
14813 2009-03-28  Martin Jambor  <mjambor@suse.cz>
14814
14815         * fold-const.c (get_pointer_modulus_and_residue): New parameter
14816         allow_func_align.
14817         (fold_binary): Allow function decl aligment consideration is the
14818         second argument is integer constant one.
14819         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
14820         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
14821         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
14822
14823 2009-03-28  Jan Hubicka  <jh@suse.cz>
14824
14825         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
14826         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
14827         * function.h (rtl_data): Add nothrow flag.
14828         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
14829         set DECL_NOTHROW for AVAILABLE functions.
14830
14831 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
14832
14833         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
14834         following vector keyword has expansion starting with pixel or bool
14835         keyword, expand vector to __vector and pixel or bool to __pixel or
14836         __bool.
14837
14838         PR c++/39554
14839         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
14840         warn_if_disallowed_function_p): Removed.
14841         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
14842         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
14843         warning_if_disallowed_function_p.
14844         * flags.h (warn_if_disallowed_function_p,
14845         warn_disallowed_functions): Removed.
14846         * common.opt (Wdisallowed-function-list=): Removed.
14847         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
14848
14849 2009-03-28  Richard Guenther  <rguenther@suse.de>
14850
14851         PR tree-optimization/38723
14852         * tree-ssa-pre.c (compute_avail): Add all default definitions to
14853         the entry block.
14854
14855 2009-03-28  Jan Hubicka  <jh@suse.cz>
14856
14857         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
14858         test introduced by my previous patch.
14859
14860 2009-03-28  Richard Guenther  <rguenther@suse.de>
14861
14862         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
14863         the PHIs value undefined.
14864
14865 2009-03-28  Jan Hubicka  <jh@suse.cz>
14866
14867         * tree-pass.h (pass_fixup_cfg): New pass.
14868         * ipa-inline.c (inline_transform): Set
14869         always_inline_functions_inlined/after_inlining.
14870         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
14871         (pass_fixup_cfg): New pass.
14872         * passes.c (init_optimization_passes): Add fixup_cfg.
14873
14874 2009-03-28  Richard Guenther  <rguenther@suse.de>
14875
14876         PR tree-optimization/38458
14877         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
14878         argument use the arguments copy-of value.
14879
14880 2009-03-28  Richard Guenther  <rguenther@suse.de>
14881
14882         PR tree-optimization/38180
14883         * tree-ssa-ccp.c (get_default_value): Simplify.
14884         (likely_value): Likewise.
14885         (surely_varying_stmt_p): Properly handle VOP case.
14886         (ccp_initialize): Likewise.
14887         (ccp_fold): Handle propagating through *&.
14888         (fold_const_aggregate_ref): Also handle decls.
14889
14890 2009-03-28  Jan Hubicka  <jh@suse.cz>
14891
14892         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
14893         * cgraph.h (cgraph_node): Likewise.
14894         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
14895         (cgraph_reset_node): Use process flag.
14896         (cgraph_mark_functions_to_output): Likewise.
14897         (cgraph_expand_function): Likewise.
14898         (cgraph_expand_all_functions): Likewise.
14899         (cgraph_output_in_order): Likewise.
14900         * dwarf2out.c (reference_to_unused): Likewise.
14901         * passes.c do_per_function_toporder): Likewise.
14902
14903 2009-03-28  Jan Hubicka  <jh@suse.cz>
14904
14905         Bring from lto-branch:
14906
14907         2008-09-03  Doug Kwan  <dougkwan@google.com>
14908
14909         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
14910         enums instead of reason strings.
14911         * cgraph.c (cgraph_create_edge): Same.
14912         (cgraph_inline_failed_string): New function.
14913         * cgraph.h (cgraph_inline_failed_t): New enum type.
14914         (cgraph_inline_failed_string): New prototype.
14915         (struct cgraph_edge): Change type of INLINED_FAILED from constant
14916         char pointer to cgraph_inline_failed_t.
14917         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
14918         (cgraph_default_inline_p): Ditto.
14919         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
14920         to cgraph_inline_failed_t pointer.
14921         * cif-code.def: New file.
14922         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
14923         reason string.
14924         (cgraph_check_inline_limits): Change type of REASON to pointer to
14925         cgraph_inline_failed_t.  Replace reason strings with enums.
14926         (cgraph_default_inline_p): Ditto.
14927         (cgraph_recursive_inlining_p): Ditto.
14928         (update_caller_keys): Change type of FAILED_REASON to
14929         cgraph_inline_failed_t.
14930         (cgraph_set_inline_failed): Change type of REASON to pointer to
14931         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
14932         convert enums to strings for text output.
14933         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
14934         to be of type cgraph_inline_failed_t.  Replace reason strings with
14935         enums.  Call cgraph_inline_failed_string to covert enums
14936         to strings for text output.
14937         (cgraph_decide_inlining): Replace reason strings with enums.
14938         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
14939         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
14940         for text output.
14941         * tree-inline.c (expand_call_inline): Change type of REASON
14942         to cgraph_inline_failed_t.  Replace reason strings with enums.
14943         Call cgraph_inline_failed_string for text output.
14944         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
14945         (cgraph.o): Ditto.
14946
14947 2009-03-28  Jan Hubicka  <jh@suse.cz>
14948
14949         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
14950         cgraph_clone_node): Remove master clone handling.
14951         (cgraph_is_master_clone, cgraph_master_clone): Remove.
14952         * cgraph.h (master_clone): Remove.
14953         (cgraph_is_master_clone, cgraph_master_clone): Remove.
14954         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
14955         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
14956
14957 2009-03-28  Jan Hubicka  <jh@suse.cz>
14958
14959         * cgraph.c (cgraph_function_body_availability): Functions declared
14960         inline are always safe to assume that it is not going to be replaced.
14961
14962 2009-03-28  Richard Guenther  <rguenther@suse.de>
14963
14964         PR tree-optimization/38513
14965         * tree-ssa-pre.c (eliminate): Remove redundant stores.
14966         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
14967         EXC_PTR_EXPR and FILTER_EXPR.
14968         (get_ref_from_reference_ops): Likewise.
14969
14970 2009-03-28  Richard Guenther  <rguenther@suse.de>
14971
14972         PR tree-optimization/38968
14973         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
14974         Use FLOOR_MOD_EXPR to compute misalignment.
14975
14976 2009-03-28  Richard Guenther  <rguenther@suse.de>
14977
14978         PR tree-optimization/37795
14979         * tree.h (combine_comparisons): Declare.
14980         * fold-const.c (combine_comparisons): Export.
14981         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
14982         comparisons.
14983         (ifcombine_iforif): Use combine_comparisons.
14984
14985 2009-03-28  Jan Hubicka  <jh@suse.cz>
14986
14987         * tree-eh.c (inlinable_call_p): New function.
14988         (make_eh_edges): Use it.
14989         (verify_eh_edges): Use it.
14990         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
14991         * except.c (reachable_next_level): Add inlinable_function argument
14992         (sjlj_find_directly_reachable_regions): Update.
14993         (add_reachable_handler): Do not set saw_any_handlers.
14994         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
14995         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
14996         Add new inlinable call parameter.
14997         (can_throw_internal, can_throw_external): Update.
14998         * except.h (can_throw_internal_1, can_throw_external_1,
14999         foreach_reachable_handler): Update declaration.
15000
15001 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
15002
15003         * config/arm/t-arm-coff, config/h8300/coff.h,
15004         config/i386/i386-aout.h, config/i386/i386-coff.h,
15005         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
15006         config/pdp11/2bsd.h, config/rs6000/aix41.h,
15007         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
15008         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
15009         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
15010         sys-types.h: Remove.
15011         * Makefile.in: Remove protoize and fixproto support and references
15012         in comments.
15013         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
15014         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
15015         Remove.
15016         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
15017         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
15018         unprotoize$(exeext).
15019         (rest.encap): Don't depend on $(STMP_FIXPROTO)
15020         (.PHONY): Don't depend on proto.
15021         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
15022         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
15023         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
15024         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
15025         build/gen-protos.o, build/scan.o, xsys-protos.h,
15026         build/fix-header$(build_exeext), build/fix-header.o,
15027         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
15028         stmp-install-fixproto): Remove.
15029         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
15030         SYSCALLS.c or fixproto files.
15031         (install-common): Don't install protoize.
15032         (install-headers-tar, install-headers-cpio, install-headers-cp):
15033         Don't depend on $(STMP_FIXPROTO).
15034         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
15035         install fixproto files or write out fixproto settings.
15036         (uninstall): Don't uninstall protoize.
15037         * config.gcc (use_fixproto): Remove.
15038         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
15039         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
15040         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
15041         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
15042         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
15043         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
15044         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
15045         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
15046         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
15047         * config/t-vxworks (STMP_FIXPROTO): Remove.
15048         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
15049         STMP_FIXPROTO): Remove.
15050         * config.in, configure: Regenerate.
15051         * crtstuff.c (gid_t, uid_t): Don't undefine.
15052         * doc/install.texi: Change m68k-coff to m68k-elf in example.
15053         (arm-*-coff, arm-*-aout: Remove target entries.
15054         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
15055         Remove mention of AIX 4.1.
15056         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
15057         * doc/invoke.texi (Running Protoize): Remove.
15058         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
15059         (Protoize Caveats): Remove.
15060         * tsystem.h: Update comments on headers assumed to exist.
15061
15062 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
15063
15064         * genautomata.c: Add a new year to the copyright.  Add a new
15065         reference.
15066         (struct insn_reserv_decl): Add comments for member bypass_list.
15067         (find_bypass): Remove.
15068         (insert_bypass): New.
15069         (process_decls): Use insert_bypass.
15070         (output_internal_insn_latency_func): Output all bypasses with the
15071         same input insn in one switch case.
15072
15073         * rtl.def (define_bypass): Describe bypass choice.
15074         * doc/md.texi (define_bypass): Ditto.
15075
15076 2009-03-27  Richard Guenther  <rguenther@suse.de>
15077
15078         * gimplify.c (mark_addressable): Export.
15079         * tree-flow.h (mark_addressable): Declare.
15080         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
15081         * tree-ssa.c (verify_phi_args): Verify that address taken
15082         variables have TREE_ADDRESSABLE set.
15083
15084 2009-03-27  Richard Guenther  <rguenther@suse.de>
15085
15086         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
15087         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
15088         Do not mark decls TREE_ADDRESSABLE.
15089         (build_fold_addr_expr): Adjust.
15090         (fold_addr_expr): Remove.
15091         (fold_unary): Use build_fold_addr_expr.
15092         (fold_comparison): Likewise.
15093         (split_address_to_core_and_offset): Likewise.
15094         * coverage.c (tree_coverage_counter_addr): Mark the array decl
15095         TREE_ADDRESSABLE.
15096         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
15097         (gimplify_modify_expr_to_memcpy): Mark source and destination
15098         addressable.
15099         * omp-low.c (create_omp_child_function): Mark the object decl
15100         TREE_ADDRESSABLE.
15101         (lower_rec_input_clauses): Mark the var we take the address of
15102         TREE_ADDRESSABLE.
15103         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
15104
15105 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15106
15107         PR middle-end/39315
15108         * cfgexpand.c (expand_one_stack_var_at): Change alignment
15109         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
15110
15111 2009-03-27  Richard Guenther  <rguenther@suse.de>
15112
15113         PR tree-optimization/39120
15114         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
15115         constraints.
15116         (handle_lhs_call): Process return constraints.  Add escape
15117         constraints if necessary.
15118         (handle_const_call): Fill out return constraints.  Make nested
15119         case more precise.  Avoid consttmp if possible.
15120         (handle_pure_call): Fill out return constraints.  Avoid
15121         callused if possible.
15122         (find_func_aliases): Simplify call handling.
15123
15124 2009-03-27  Richard Guenther  <rguenther@suse.de>
15125
15126         PR tree-optimization/39120
15127         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
15128         as a representative.
15129         (solve_graph): Do propagate CALLUSED.
15130         (handle_pure_call): Use a scalar constraint from CALLUSED for
15131         the return value.
15132         (find_what_p_points_to): CALLUSED shall not appear in poins-to
15133         solutions.
15134
15135 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15136
15137         PR c/39323
15138         * c-common.c (handle_aligned_attribute): Properly check alignment
15139         overflow.  Use (1U << i) instead of (1 << i).
15140
15141         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
15142
15143         * expr.h (get_mem_align_offset): Updated.
15144
15145         * tree.h (tree_decl_common): Change align to "unsigned int" and
15146         move it before pointer_alias_set.
15147
15148 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15149             Jakub Jelinek  <jakub@redhat.com>
15150
15151         PR target/38034
15152         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
15153         gr_register_operand with gr_reg_or_0_operand.
15154         (cmpxchg_rel_di): Likewise.
15155         (sync_lock_test_and_set<mode>): Likewise.
15156
15157 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15158
15159         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
15160         (true_regnum): Likewise.
15161
15162         * rtlanal.c (subreg_info): Moved to ...
15163         * rtl.h (subreg_info): Here.  New.
15164         (subreg_get_info): New.
15165
15166         * rtlanal.c (subreg_get_info): Make it extern.
15167
15168 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15169
15170         PR target/39472
15171         * config/i386/i386.c (ix86_abi): New.
15172         (override_options): Handle -mabi=.
15173         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
15174         (ix86_call_abi_override): Likewise.
15175         (init_cumulative_args): Likewise.
15176         (function_arg_advance): Likewise.
15177         (function_arg_64): Likewise.
15178         (function_arg): Likewise.
15179         (ix86_pass_by_reference): Likewise.
15180         (ix86_function_value_regno_p): Likewise.
15181         (ix86_build_builtin_va_list_abi): Likewise.
15182         (setup_incoming_varargs_64): Likewise.
15183         (is_va_list_char_pointer): Likewise.
15184         (ix86_init_machine_status): Likewise.
15185         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
15186         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
15187         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
15188         (ix86_function_abi): Make it static and return enum calling_abi.
15189         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
15190         with ix86_abi.
15191         (ix86_fn_abi_va_list): Updated.
15192
15193         * config/i386/i386.h (ix86_abi): New.
15194         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
15195         (CONDITIONAL_REGISTER_USAGE): Likewise.
15196         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
15197         (machine_function): Likewise.
15198
15199         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
15200         with ix86_abi.
15201         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
15202         (STACK_BOUNDARY): Likewise.
15203         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
15204
15205         * config/i386/i386.opt (mabi=): New.
15206
15207         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
15208         return enum calling_abi.
15209         (ix86_function_type_abi): Likewise.
15210         (ix86_function_abi): Removed.
15211
15212         * doc/invoke.texi: Document -mabi= option for x86.
15213
15214 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15215
15216         * builtins.c (real_dconstp): Delete.
15217         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
15218
15219 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
15220             Jakub Jelinek  <jakub@redhat.com>
15221
15222         PR debug/37959
15223         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
15224         (gen_subprogram_die): When a function is explicit, generate the
15225         DW_AT_explicit attribute.
15226         * langhooks.h (struct lang_hooks_for_decls): Add
15227         function_decl_explicit_p langhook.
15228         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
15229         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
15230
15231 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
15232
15233         * builtins.c (fold_builtin_memory_op): Optimize memmove
15234         into memcpy if we can prove source and destination don't overlap.
15235
15236         * tree-inline.c: Include gt-tree-inline.h.
15237         (clone_fn_id_num): New variable.
15238         (clone_function_name): New function.
15239         (tree_function_versioning): Use it.
15240         * Makefile.in (GTFILES): Add tree-inline.c.
15241
15242 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
15243
15244         * BASE-VER: Change to 4.5.0.
15245
15246 2009-03-27  Xinliang David Li  <davidxl@google.com>
15247
15248         PR tree-optimization/39557
15249         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
15250
15251 2009-03-27  Xinliang David Li  <davidxl@google.com>
15252
15253         PR tree-optimization/39548
15254         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
15255         candidate check.
15256
15257 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15258
15259         * c-common.c (pointer_int_sum): Use %wd on return from
15260         tree_low_cst.
15261
15262 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15263
15264         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
15265         on return from tree_low_cst.
15266
15267 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15268
15269         PR c++/36799
15270         * ginclude/stdarg.h (va_copy): Define also for
15271         __GXX_EXPERIMENTAL_CXX0X__.
15272
15273 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15274
15275         PR c++/35652
15276         * builtins.h (c_strlen): Do not warn here.
15277         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
15278         * c-common.c (pointer_int_sum): Take an explicit location.
15279         Warn about offsets out of bounds.
15280         * c-common.h (pointer_int_sum): Adjust declaration.
15281
15282 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15283
15284         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
15285         markup glitch.
15286
15287 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
15288
15289         PR c++/39554
15290         * opts.c (warn_if_disallowed_function_p): Don't assume
15291         get_callee_fndecl must return non-NULL.
15292
15293 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
15294
15295         PR rtl-optimization/39522
15296         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
15297         when reg_reloaded_valid is set.
15298
15299 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15300
15301         * config/spu/divv2df3.c: New file.
15302         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
15303         (DPBIT_FUNCS): Filter out _div_df.
15304
15305 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
15306
15307         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
15308         a jump insn, count that jump in the distance to the loop start.
15309
15310 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
15311
15312         PR target/39523
15313         * config/sh/sh.c (calc_live_regs): Fix condition for global
15314         registers except PIC_OFFSET_TABLE_REGNUM.
15315
15316 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
15317
15318         PR/39518
15319         * doc/invoke.texi (-mconsole): New.
15320         (-mcygwin): New.
15321         (-mno-cygwin): New.
15322         (-mdll): New.
15323         (-mnop-fun-dllimport): New.
15324         (-mthread): New.
15325         (-mwin32): New.
15326         (-mwindows): New.
15327         (sub section "i386 and x86-64 Windows Options"): New.
15328
15329 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
15330
15331         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
15332         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
15333
15334 2009-03-25  Richard Guenther  <rguenther@suse.de>
15335
15336         PR middle-end/39497
15337         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
15338         of -Wno-error.
15339
15340 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
15341
15342         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
15343         neither of haifa/selective schedulers are working.
15344
15345 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15346
15347         * doc/invoke.texi (Debugging Options): Fix description of
15348         -fno-merge-debug-strings.
15349
15350 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
15351
15352         * config/cris/libgcc.ver: New version-script.
15353         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
15354
15355         * configure.ac <GAS features, nop mnemonic>: Add pattern
15356         crisv32-*-* for "nop".
15357         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
15358         * configure: Regenerate.
15359
15360 2009-03-24  Ira Rosen  <irar@il.ibm.com>
15361
15362         PR tree-optimization/39529
15363         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
15364         mark_sym_for_renaming for the tag copied to the new vector
15365         pointer.
15366
15367 2009-03-24  Arthur Loiret  <aloiret@debian.org>
15368
15369         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
15370         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
15371         EXTRA_SPEC_FUNCTIONS.
15372         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
15373         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
15374         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
15375         -march and -mtune options.
15376
15377 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
15378
15379         * config/m68k/t-rtems: Add m5329 multilib.
15380
15381 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
15382             Jakub Jelinek  <jakub@redhat.com>
15383
15384         PR debug/39524
15385         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
15386         nodes.
15387
15388 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
15389
15390         PR c/39495
15391         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
15392         instead of c_parser_expression_conv, if original_code isn't one of the
15393         4 allowed comparison codes, fail.
15394
15395 2009-03-23  Richard Guenther  <rguenther@suse.de>
15396
15397         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
15398         * tree.h (struct tree_type): Likewise.
15399         * reload.h (struct insn_chain): Likewise.
15400         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
15401         * function.h (struct function): Likewise.
15402         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
15403
15404 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
15405
15406         PR tree-optimization/39516
15407         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
15408
15409 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
15410
15411         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
15412         should be set true if BITS_PER_WORD of target is bigger than 32
15413
15414 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
15415
15416         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
15417         Translate -B-options to -rpath-link.  Correct existing
15418         rpath-link and conditionalize on !nostdlib.
15419
15420 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15421
15422         * doc/extend.texi (Function Attributes, Variable Attributes):
15423         Fix typos.
15424         * doc/invoke.texi (Debugging Options, Optimize Options)
15425         (i386 and x86-64 Options, MCore Options): Likewise.
15426
15427 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
15428
15429         PR debug/37890
15430         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
15431         it for block local namespace aliases.
15432         (gen_decl_die): Pass context_die to gen_namespace_die.
15433
15434 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
15435
15436         PR c/39495
15437         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
15438         minimum or maximum value.
15439
15440 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
15441
15442         * reginfo.c (globalize_reg): Recompute derived reg sets.
15443
15444 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
15445
15446         PR target/39063
15447         * libgcc2.c (mprotect): Do not use signed arguments for
15448         VirtualProtect, use DWORD arguments.  Also fix the 'may
15449         be used uninitialized' warning for the np variable.
15450
15451 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
15452
15453         PR target/39496
15454         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
15455         functions using regparm calling conventions when not optimizing.
15456         (ix86_function_sseregparm): Similarly for sseregparm calling
15457         conventions.
15458
15459 2009-03-19  Li Feng  <nemokingdom@gmail.com>
15460
15461         PR middle-end/39500
15462         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
15463         dependence if the first conflict is after niter iterations.
15464
15465 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
15466
15467         PR middle-end/38609
15468         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
15469         functions with dynamic stack-pointer adjustments.
15470
15471 2009-03-19  Ben Elliston  <bje@au.ibm.com>
15472
15473         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
15474         option; change to -msdata=data.
15475
15476 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15477
15478         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
15479         and -fopenmp.
15480
15481 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
15482
15483         PR target/35180
15484         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
15485
15486 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
15487
15488         * doc/invoke.texi (Code Gen Options): Expand discussion of
15489         -fno-common.
15490
15491 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
15492
15493         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
15494         * matrix-reorg.c (struct matrix_info): Likewise.
15495         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
15496         * rtl.h (struct mem_attrs): Likewise.
15497         * df.h (struct df): Likewise.
15498         * tree-data-ref.h (struct data_dependence_relation): Likewise.
15499         * ira-int.h (struct ira_allocno): Likewise.
15500         * df-scan.c (struct df_collection_rec): Likewise.
15501         * ira.c (struct equivalence): Likewise.
15502         * function.c (struct temp_slot): Likewise.
15503         * cfgloop.h (struct loop): Likewise.
15504
15505         PR debug/39485
15506         * function.c (use_register_for_decl): When not optimizing, disregard
15507         register keyword for variables with types containing methods.
15508
15509 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
15510
15511         PR middle-end/39447
15512         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
15513         (is_simple_operand): Call contains_component_ref_p before calling data
15514         reference analysis that would fail on COMPONENT_REFs.
15515
15516         * tree-vrp.c (search_for_addr_array): Fix formatting.
15517
15518 2009-03-18  Richard Guenther  <rguenther@suse.de>
15519
15520         * tree-vect-transform.c (vect_loop_versioning): Fold the
15521         generated comparisons.
15522         * tree-vectorizer.c (set_prologue_iterations): Likewise.
15523         (slpeel_tree_peel_loop_to_edge): Likewise.
15524
15525 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15526
15527         PR middle-end/37805
15528         * opts.c (print_specific_help): In addition to `undocumented',
15529         accept `separate' and `joined' flags if passed alone.  Describe
15530         output by the first matched one of those.
15531         (common_handle_option): Skip over empty strings.
15532         * gcc.c (display_help): Fix help string for `--help='.
15533         * doc/invoke.texi (Option Summary, Overall Options): With
15534         `--help=', classes and qualifiers can both be repeated, but
15535         only the latter can be negated.  One should not pass only
15536         negated qualifiers.  Fix markup and examples.
15537
15538         Revert
15539         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
15540         PR middle-end/37805
15541         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
15542         and -fhelp=separate.
15543
15544 2009-03-17  Jing Yu  <jingyu@google.com>
15545
15546         PR middle-end/39378
15547         * function.h (struct rtl_data): Move is_thunk from here...
15548         (struct function): ...to here.
15549         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
15550         * varasm.c (assemble_start_function): Change is_thunk from crtl to
15551         cfun.
15552         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
15553         cfun.
15554         (alpha_does_function_need_gp, alpha_start_function): Likewise.
15555         (alpha_output_function_end_prologue): Likewise.
15556         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
15557         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
15558         (rs6000_output_function_epilogue): Likewise.
15559         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
15560
15561 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
15562
15563         PR target/39482
15564         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
15565         from different units in a single alternative.
15566         (*truncdfsf_i387): Ditto.
15567         (*truncxfsf2_mixed): Ditto.
15568         (*truncxfdf2_mixed): Ditto.
15569
15570 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
15571
15572         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
15573         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
15574
15575         PR debug/39474
15576         * tree-ssa-live.c (remove_unused_locals): Don't remove local
15577         unused non-artificial variables when not optimizing.
15578
15579         PR debug/39471
15580         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
15581         DW_TAG_imported_module even if decl is IMPORTED_DECL with
15582         NAMESPACE_DECL in its DECL_INITIAL.
15583
15584         PR middle-end/39443
15585         * optabs.c (set_user_assembler_libfunc): New function.
15586         * expr.h (set_user_assembler_libfunc): New prototype.
15587         * c-common.c: Include libfuncs.h.
15588         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
15589         for memcmp, memset, memcpy, memmove and abort.
15590         * Makefile.in (c-common.o): Depend on libfuncs.h.
15591
15592         PR debug/39412
15593         * dwarf2out.c (gen_inlined_enumeration_type_die,
15594         gen_inlined_structure_type_die, gen_inlined_union_type_die,
15595         gen_tagged_type_instantiation_die): Removed.
15596         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
15597         do nothing.
15598
15599 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
15600
15601         PR testsuite/38526
15602         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
15603         its use.
15604         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
15605         (check-parallel-%): Ditto.
15606         (check-consistency): Ditto.
15607
15608 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
15609
15610         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
15611         local variable rhs by NULL_TREE.
15612
15613 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
15614
15615         PR target/39477
15616         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
15617
15618 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
15619
15620         PR target/39476
15621         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
15622
15623 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
15624
15625         PR target/39473
15626         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
15627         for ms->sysv ABI calls only in 64bit mode.
15628
15629         * config/i386/i386.md (untyped_call): Support 32bit.
15630
15631 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
15632
15633         * doc/extend.texi: Replace x86_65 with x86_64.
15634
15635 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
15636
15637         PR tree-optimization/39455
15638         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
15639         mismatches for POINTER_TYPE_P (type).
15640         (number_of_iterations_le): Likewise.
15641
15642 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
15643
15644         * config/picochip/picochip.c: Removed profiling support.
15645         * config/picochip/picochip.md: Removed profiling instruction.
15646         * config/picochip/picochip.h: Removed profiling builtin.
15647
15648 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
15649
15650         * doc/install.texi (--with-host-libstdcxx): Document.
15651
15652 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
15653
15654         PR target/34299
15655         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
15656         generate a warning if the function name does not begin with
15657         "__vector" and the function has either the 'signal' or 'interrupt'
15658         attribute, from here to ...
15659         (avr_declare_function_name): ...here. New function.
15660         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
15661         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
15662
15663 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
15664
15665         PR bootstrap/39454
15666         * cse.c (fold_rtx): Don't modify original const_arg1 when
15667         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
15668         separate variable instead.
15669         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
15670         from out of range shift counts.
15671         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
15672
15673 2009-03-13  Catherine Moore  <clm@codesourcery.com>
15674
15675         * config/i386/x-mingw32 (host-mingw32.o): Replace
15676         diagnostic.h with $(DIAGNOSTIC_H).
15677
15678 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
15679
15680         PR target/39431
15681         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
15682         predicate.
15683         * config/i386/sync.md (sync_compare_and_swap<mode>,
15684         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
15685         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
15686         into a register.
15687         (sync_double_compare_and_swapdi_pic,
15688         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
15689         cmpxchg8b_pic_memory_operand instead of just memory_operand.
15690
15691 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
15692
15693         PR target/39445
15694         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
15695
15696 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
15697
15698         PR target/39327
15699         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
15700         (avx_addsubv4df3): Likewise.
15701         (*avx_addsubv4sf3): Likewise.
15702         (sse3_addsubv4sf3): Likewise.
15703
15704 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
15705
15706         PR target/38824
15707         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
15708
15709 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
15710
15711         PR debug/39432
15712         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
15713         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
15714         registers for allocnos created from user-defined variables.
15715
15716 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15717
15718         PR target/39181
15719         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
15720         of non-integer mode as well.
15721
15722 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
15723
15724         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
15725         for functions for which the parameter types are unknown.
15726
15727 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
15728
15729         PR target/39137
15730         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
15731         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
15732         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
15733         * config/i386/i386.c (ix86_local_alignment): For
15734         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
15735         long long variables on the stack to avoid dynamic realignment.
15736         Allow the first argument to be a decl rather than type.
15737         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
15738
15739 2009-03-11  Nick Clifton  <nickc@redhat.com>
15740
15741         PR target/5362
15742         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
15743         options.
15744         Add description to mno-lsim option.
15745         * config/mcore/mcore.h: Remove comment about deprecated m4align
15746         option.
15747         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
15748         * doc/invoke.texi: Add description of mno-lsim and
15749         mstack-increment options.
15750
15751         * config/fr30/fr30.opt: Document the -mno-lsim option.
15752         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
15753         and -mno-lsim options.
15754
15755 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15756
15757         * fold-const.c (fold_comparison): Only call fold_inf_compare
15758         if the mode supports infinities.
15759
15760 2009-03-11  Jason Merrill  <jason@redhat.com>
15761
15762         PR debug/39086
15763         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
15764         end already did.  Notice GIMPLE_CALL modifications of the result.
15765         Don't copy debug information from an ignored decl or a decl from
15766         another function.
15767
15768 2009-03-10  Richard Guenther  <rguenther@suse.de>
15769             Nathan Froyd  <froydnj@codesourcery.com>
15770
15771         PR middle-end/37850
15772         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
15773         (__divMODE3): Likewise.
15774
15775 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
15776
15777         PR tree-optimization/39394
15778         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
15779         DECL_SIZE_UNIT of variable length FIELD_DECLs.
15780
15781 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
15782
15783         * recog.c (verfiy_changes): Disallow renaming of hard regs in
15784         inline asms for register asm ("") declarations.
15785
15786 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
15787
15788         * fold-const.c (fold_unary): Fix comment.
15789
15790 2009-03-07  Jan Hubicka  <jh@suse.cz>
15791
15792         PR target/39361
15793         * tree-inline.c (setup_one_parameter): Do replacement of const
15794         argument by constant in SSA form.
15795
15796 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15797
15798         PR middle-end/38028
15799         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
15800         determine alignment passed to assign_stack_local.
15801         (assign_parms_unsplit_complex): Likewise.
15802         * except.c (sjlj_build_landing_pads): Likewise.
15803
15804 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
15805
15806         PR middle-end/39360
15807         * tree-flow.h (add_referenced_var): Return bool instead of void.
15808         * tree-dfa.c (add_referenced_var): Return result of
15809         referenced_var_check_and_insert call.
15810         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
15811         of referenced_var_check_and_insert.
15812
15813         PR debug/39372
15814         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
15815         (gen_variable_die): Emit DW_AT_location on abstract static variable's
15816         DIE, don't emit it if abstract origin already has it.
15817         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
15818         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
15819
15820 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
15821
15822         * genpreds.c (needs_variable): Fix parentheses at variable name
15823         detection.
15824         (write_tm_constrs_h): Indent generated code.
15825
15826 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15827
15828         * doc/extend.texi (Function Attributes): Add documentation
15829         for isr attributes.
15830
15831 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
15832
15833         PR debug/39387
15834         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
15835         take locus from its DECL_SOURCE_LOCATION instead of input_location.
15836
15837 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
15838
15839         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
15840         the loop as bad.
15841
15842 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
15843
15844         PR debug/39379
15845         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
15846         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
15847
15848 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
15849
15850         * config/i386/i386.md (R8_REG, R9_REG): New constants.
15851         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
15852         constants instead of magic numbers.
15853         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
15854         (QI_REG_P): Ditto.
15855         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
15856         (x86_64_ms_abi_int_parameter_registers): Ditto.
15857         (x86_64_int_return_registers): Ditto.
15858         (ix86_maybe_switch_abi): Ditto.
15859         (ix86_expand_call): Ditto for clobbered_registers array.
15860         (ix86_hard_regno_mode_ok): Ditto.
15861         (x86_extended_QIreg_mentioned_p): Ditto.
15862
15863 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
15864
15865         PR tree-optimization/39349
15866         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
15867
15868         * combine.c (gen_lowpart_for_combine): Use omode when generating
15869         clobber.
15870
15871 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
15872
15873         PR rtl-optimization/39235
15874         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
15875
15876 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
15877
15878         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
15879
15880 2009-03-04  Richard Guenther  <rguenther@suse.de>
15881
15882         PR tree-optimization/39362
15883         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
15884         that occur in abnormal PHIs should be varying.
15885
15886 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
15887
15888         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
15889         Extend comments.
15890         (simple_iv):  Take loop as an argument instead of statement.
15891         * tree-scalar-evolution.h (simple_iv): Declaration changed.
15892         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
15893         to simple_iv.
15894         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
15895         Ditto.
15896         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
15897         * matrix-reorg.c (analyze_transpose): Ditto.
15898         * tree-data-ref.c (dr_analyze_innermost): Ditto.
15899         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
15900         * tree-predcom.c (ref_at_iteration): Ditto.
15901         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
15902
15903 2009-03-04  Richard Guenther  <rguenther@suse.de>
15904
15905         PR tree-optimization/39358
15906         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
15907         escaped_id and callused_id.
15908         (solve_graph): Likewise.
15909
15910 2009-03-04  Richard Guenther  <rguenther@suse.de>
15911
15912         PR tree-optimization/39339
15913         * tree-sra.c (try_instantiate_multiple_fields): Make it
15914         no longer ICE on the above.
15915
15916 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
15917
15918         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
15919         that fits within Pmode.
15920
15921 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
15922
15923         PR middle-end/10109
15924         * tm.texi (LIBCALL_VALUE): Update description.
15925
15926 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
15927
15928         PR middle-end/34443
15929         * doc/extend.texi (section): Update description.
15930
15931 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
15932
15933         PR middle-end/39345
15934         * tree-inline.c (remapped_type): New.
15935         (can_be_nonlocal): Call remapped_type instead of remap_type.
15936
15937 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
15938
15939         PR fortran/39354
15940         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
15941         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
15942
15943 2009-03-03  Richard Guenther  <rguenther@suse.de>
15944
15945         PR middle-end/39272
15946         * tree.c (tree_nonartificial_location): New function.
15947         * tree.h (tree_nonartificial_location): Declare.
15948         * builtins.c (expand_builtin_memory_chk): Provide location
15949         of the call location for artificial function pieces.
15950         (maybe_emit_chk_warning): Likewise.
15951         (maybe_emit_sprintf_chk_warning): Likewise.
15952         (maybe_emit_free_warning): Likewise.
15953         * expr.c (expand_expr_real_1): Likewise.
15954
15955 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
15956
15957         PR tree-optimization/39343
15958         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
15959         COMPONENT_REF t has ARRAY_TYPE.
15960
15961 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
15962
15963         PR middle-end/39335
15964         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
15965         when the type precision of the induction variable should be
15966         larger than the type precision of nit.
15967         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
15968         * graphite.c (graphite_loop_normal_form): Same.
15969         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
15970
15971 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
15972
15973         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
15974         (*call_1_rex64_ms_sysv): Use named constants instead of magic
15975         numbers to describe clobbered registers.
15976         (*call_value_0_rex64_ms_sysv): Ditto.
15977         * config/i386/mmx.md (mmx_emms): Ditto.
15978         (mmx_femms): Ditto.
15979
15980 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
15981
15982         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
15983         of ABI_64.
15984
15985 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15986
15987         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
15988         (spu_section_type_flags): New function.
15989
15990 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
15991
15992         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
15993         reg_class_contents of FLOAT_REGS into a temporary.
15994
15995 2009-03-02  Richard Guenther  <rguenther@suse.de>
15996             Ira Rosen  <irar@il.ibm.com>
15997
15998         PR tree-optimization/39318
15999         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
16000         information to the vectorized statement.
16001
16002 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
16003
16004         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
16005         variable.  Use defined names instead of magic constants for REX SSE
16006         registers.
16007
16008 2009-03-01  Richard Guenther  <rguenther@suse.de>
16009
16010         PR tree-optimization/39331
16011         * omp-low.c (lower_send_shared_vars): Do not receive new
16012         values for the reference of DECL_BY_REFERENCE parms or results.
16013
16014 2009-03-01  Jan Hubicka  <jh@suse.cz>
16015
16016         PR debug/39267
16017         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
16018         BLOCK_NONLOCALIZED_VAR): New macros.
16019         (tree_block): Add nonlocalized_vars.
16020         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
16021         gen_decl_die): Add origin argument.  Allow generation of die with
16022         origin at hand only.
16023         (gen_member_die, gen_type_die_with_usage, force_decl_die,
16024         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
16025         of gen_*.
16026         (gen_block_die): Fix checking for unused blocks.
16027         (process_scope_var): Break out from .... ; work with origins only.
16028         (decls_for_scope) ... here; process nonlocalized list.
16029         (dwarf2out_ignore_block): Look for nonlocalized vars.
16030         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
16031         vars.
16032         (dump_scope_block): Dump them.
16033         * tree-inline.c (remap_decls): Handle nonlocalized vars.
16034         (remap_block): Likewise.
16035         (can_be_nonlocal): New predicate.
16036         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
16037
16038 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16039
16040         * configure: Regenerate.
16041
16042 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16043
16044         * optc-gen.awk: No need to duplicate option flags twice.
16045         Reuse help texts for duplicate options which do not have any.
16046
16047         * gcc.c (display_help): Document --version.
16048
16049         * gcc.c (main): If print_help_list and verbose_flag, ensure
16050         driver output comes before subprocess output.
16051
16052         * optc-gen.awk: Assign all remaining fields to help string,
16053         space-separated, for multi-line help in *.opt.
16054
16055         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
16056         -Wno-pedantic-ms-format is for MinGW targets only.
16057
16058         * doc/options.texi (Option file format): Fix bad indentation,
16059         restoring dropped sentence.
16060
16061 2009-02-28  Jan Hubicka  <jh@suse.cz>
16062
16063         * tree-inline.c (tree_function_versioning): Output debug info.
16064
16065 2009-02-28  Jan Hubicka  <jh@suse.cz>
16066
16067         PR debug/39267
16068         * tree-inline.c (setup_one_parameter): Do not copy propagate
16069         arguments when not optimizing.
16070
16071 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
16072
16073         PR target/39327
16074         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
16075         (avx_addsubv4df3): Likewise.
16076         (*avx_addsubv4sf3): Likewise.
16077         (sse3_addsubv4sf3): Likewise.
16078         (*avx_addsubv2df3): Likewise.
16079         (sse3_addsubv2df3): Likewise.
16080         (avx_unpckhps256): Correct item selectors.
16081         (avx_unpcklps256): Likewise.
16082         (avx_unpckhpd256): Likewise.
16083         (avx_unpcklpd256): Likewise.
16084
16085 2009-02-28  Jan Hubicka  <jh@suse.cz>
16086
16087         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
16088         static vars.
16089         (copy_arguments_for_versioning): If var is declared don't declare it.
16090         (tree_function_versioning): First setup substitutions and then copy
16091         args.
16092
16093 2009-02-27  Jan Hubicka  <jh@suse.cz>
16094
16095         PR debug/39267
16096         * cgraph.h (varpool_output_debug_info): Remove.
16097         * cgraphunit.c (varpool_output_debug_info): Remove.
16098         * dwarf2out.c (deferred_locations_struct): New struct
16099         (deferred_locations): New type.
16100         (deferred_locations_list): New static var.
16101         (deffer_location): New function.
16102         (gen_variable_die): Use it.
16103         (decls_for_scope): Output info on local static vars.
16104         (dwarf2out_finish): Process deferred locations.
16105         * varpool.c (varpool_output_debug_info): Remove.
16106
16107 2009-02-27  Jan Hubicka  <jh@suse.cz>
16108
16109         PR debug/39267
16110         * tree.h (TREE_PROTECTED): Fix comment.
16111         (BLOCK_HANDLER_BLOCK): Remove.
16112         (struct tree_block): Remove handler_block add body_block.
16113         (inlined_function_outer_scope_p): New.
16114         (is_body_block): Remove.
16115         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
16116         * dwarf2out.c (is_inlined_entry_point): Remove.
16117         (add_high_low_attributes): Use inlined_function_outer_scope_p.
16118         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
16119         code.
16120         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
16121         * gimplify.c (gimplify_expr): Gimplify body blocks.
16122         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
16123         block with multiple subblocks.
16124         (dump_scope_block): Prettier output; dump more flags and info.
16125         (dump_scope_blocks): New.
16126         (remove_unused_locals): Use dump_scope_blocks.
16127         * tree-flow.h (dump_scope_blocks): Declare.
16128         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
16129         * stmt.c (is_body_block): Remove.
16130         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
16131         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
16132
16133 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
16134
16135         PR middle-end/39308
16136         * graphite.c (graphite_loop_normal_form): Do not call
16137         number_of_iterations_exit from a gcc_assert.
16138
16139 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16140
16141         * config/s390/s390.c (s390_swap_cmp): Look for conditional
16142         jumps if COND is NULL.
16143         (find_cond_jump): New function.
16144         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
16145         * config/s390/s390.md: Remove z10_cobra attribute value.
16146
16147 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
16148
16149         * config/alpha/alpha.h (alpha_expand_mov): Return false if
16150         force_const_mem returns NULL_RTX.
16151
16152 2009-02-26  Jan Hubicka  <jh@suse.cz>
16153
16154         PR debug/39267
16155         * cgraph.h (varpool_output_debug_info): Remove.
16156         * cgraphunit.c (varpool_output_debug_info): Remove.
16157         * dwarf2out.c (deferred_locations_struct): New struct
16158         (deferred_locations): New type.
16159         (deferred_locations_list): New static var.
16160         (deffer_location): New function.
16161         (gen_variable_die): Use it.
16162         (decls_for_scope): Output info on local static vars.
16163         (dwarf2out_finish): Process deferred locations.
16164         * varpool.c (varpool_output_debug_info): Remove.
16165
16166 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
16167
16168         PR rtl-optimization/39241
16169         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
16170         to subreg_offset_representable_p.
16171
16172 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
16173
16174         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
16175         execute function prototype.  Get f and nregs from max_reg_num
16176         and get_insns.  Remove the first backward pass as it's dead,
16177         guard the forward pass by flag_expensive_optimizations.
16178         (rest_of_handle_regmove): Delete.
16179         (pass_regmove): Replace it with regmove_optimize.
16180
16181 2009-02-25  Martin Jambor  <mjambor@suse.cz>
16182
16183         PR tree-optimization/39259
16184         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
16185         calls_alloca function flags.
16186         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
16187         calls are detected.
16188
16189 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
16190
16191         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
16192         flags_set_1_rtx, flags_set_1_set): Delete.
16193         (regmove_optimize): Do not call mark_flags_life_zones.
16194
16195 2009-02-24  Julian Brown  <julian@codesourcery.com>
16196
16197         PR target/35965
16198         * config/arm/arm.c (require_pic_register): Only set
16199         cfun->machine->pic_reg once per function.
16200
16201 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
16202
16203         * doc/invoke.texi (Link Options): Document an easier way to pass
16204         options that take arguments to the GNU linker using -Xlinker and -Wl.
16205
16206 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
16207
16208         PR target/33785
16209         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
16210
16211 2009-02-24  Richard Guenther  <rguenther@suse.de>
16212
16213         PR debug/39285
16214         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
16215
16216 2009-02-24  Richard Guenther  <rguenther@suse.de>
16217             Zdenek Dvorak  <ook@ucw.cz>
16218
16219         PR tree-optimization/39233
16220         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
16221         from converting them to a generic type.
16222
16223 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
16224
16225         PR tree-optimization/39260
16226         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
16227         contains a condition with a real type.
16228         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
16229
16230 2009-02-23  Jason Merrill  <jason@redhat.com>
16231
16232         PR c++/38880
16233         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
16234         narrowing_initializer_constant_valid_p.
16235         (narrowing_initializer_constant_valid_p): Don't return
16236         null_pointer_node for adding a pointer to itself.
16237
16238 2009-02-23  Jan Hubicka  <jh@suse.cz>
16239
16240         PR c/12245
16241         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
16242         resizing.
16243
16244 2009-02-23  Jan Hubicka  <jh@suse.cz>
16245
16246         PR tree-optimization/37709
16247         * tree.c (block_ultimate_origin): Move here from dwarf2out.
16248         * tree.h (block_ultimate_origin): Declare.
16249         * dwarf2out.c (block_ultimate_origin): Move to tree.c
16250         * tree-ssa-live.c (remove_unused_scope_block_p):
16251         Eliminate blocks containig no instructions nor live variables nor
16252         nested blocks.
16253         (dump_scope_block): New function.
16254         (remove_unused_locals): Enable removal of dead blocks by default;
16255         enable dumping at TDF_DETAILS.
16256
16257 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
16258
16259         * config/i386/i386.c (classify_argument): Don't allow COImode
16260         and OImode.
16261         (function_arg_advance_32): Don't allow OImode.
16262         (function_arg_32): Likewise.
16263         (function_value_32): Likewise.
16264         (return_in_memory_32): Likewise.
16265         (function_arg_64): Remove OImode comment.
16266
16267 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
16268
16269         PR target/39261
16270         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
16271         ix86_expand_vector_set for V4DImode in 64bit mode only.
16272         (ix86_expand_vector_init_one_var): Likewise.
16273
16274 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
16275
16276         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
16277
16278 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
16279
16280         PR bootstrap/39257
16281         * loop-iv.c: Revert last change.
16282         * emit-rtl.c: Likewise.
16283
16284 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
16285
16286         PR target/39256
16287         * config/i386/i386.c (type_natural_mode): Remove an extra
16288         space in the warning message.
16289         (function_value_32): Handle 32-byte vector modes.
16290         (return_in_memory_32): Likewise.
16291
16292 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
16293
16294         * loop-iv.c (truncate_value): New function.
16295         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
16296         of lowpart_subreg.
16297         (lowpart_subreg): Move to...
16298         * emit-rtl.c: ...here.
16299
16300 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
16301
16302         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
16303         accidental and undocumented change at revision 140860.
16304
16305 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
16306
16307         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
16308         take gimple_seq * arguments.
16309         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
16310         types_compatible_p langhook.
16311
16312 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
16313             Joseph Myers  <joseph@codesourcery.com>
16314
16315         * config/arm/arm.c (arm_builtin_va_list): New function.
16316         (arm_expand_builtin_va_start): Likewise.
16317         (arm_gimplify_va_arg_expr): Likewise.
16318         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
16319         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
16320         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
16321         (va_list_type): New variable.
16322         (arm_mangle_type): Mangle va_list_type appropriately.
16323
16324 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
16325
16326         PR middle-end/39157
16327         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
16328         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
16329         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
16330         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
16331         parameter to 1000 for -O1 by default.
16332         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
16333         parameter.
16334         * loop-invariant.c: Include params.h.
16335         (move_loop_invariants): Don't call move_single_loop_invariants on
16336         very large loops.
16337
16338 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
16339
16340         * calls.c (emit_library_call_value_1): Use slot_offset instead of
16341         offset when calculating bounds for indexing stack_usage_map.  Fixes
16342         a buffer overflow with certain target setups.
16343
16344 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
16345
16346         PR target/39240
16347         * calls.c (expand_call): Clear try_tail_call if caller and callee
16348         disagree in promotion of function return value.
16349
16350 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
16351
16352         PR target/39175
16353         * c-common.c (c_determine_visibility): If visibility changed and
16354         DECL_RTL has been already set, call make_decl_rtl to update symbol
16355         flags.
16356
16357 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
16358
16359         PR c++/39188
16360         * varasm.c (assemble_variable): Don't check DECL_NAME when
16361         globalizing a variable.
16362
16363 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
16364
16365         PR c/38483
16366         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
16367         expression before any __builtin_trap call.
16368         * c-typeck.c (build_function_call): Convert and check function
16369         arguments before generating a call to a trap.  Evaluate the
16370         function arguments before the trap.
16371
16372 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
16373
16374         PR target/39228
16375         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
16376         (UNSPEC_FXAM_MEM): New unspec.
16377         (fxam<mode>2_i387_with_temp): New insn and split pattern.
16378         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
16379         memory using fxam<mode>2_i387_with_temp to remove excess precision.
16380
16381 2009-02-19  Richard Guenther  <rguenther@suse.de>
16382
16383         PR tree-optimization/39207
16384         PR tree-optimization/39074
16385         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
16386         storedanything_tree): New.
16387         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
16388         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
16389         (build_succ_graph): Add edges from STOREDANYTHING to all
16390         non-direct nodes.
16391         (init_base_vars): Initialize STOREDANYTHING.
16392         (compute_points_to_sets): Free substitution info after
16393         building the succ graph.
16394         (ipa_pta_execute): Likewise.
16395
16396         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
16397         field.
16398         (do_ds_constraint): Do not add to special var or non-pointer
16399         field solutions.
16400         (type_could_have_pointers): Split out from ...
16401         (could_have_pointers): ... here.  For arrays use the element type.
16402         (create_variable_info_for): Initialize may_have_pointers.
16403         (new_var_info): Likewise.
16404         (handle_lhs_call): Make the HEAP variable unknown-sized.
16405         (intra_create_variable_infos): Use a type with pointers for
16406         PARM_NOALIAS, make it unknown-sized.
16407
16408 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
16409
16410         PR target/39224
16411         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
16412
16413 2009-02-18  Jason Merrill  <jason@redhat.com>
16414
16415         PR target/39179
16416         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
16417         value if DECL_EXTERNAL.
16418         * tree-sra.c (sra_walk_gimple_assign): Likewise.
16419         * target.h (gcc_target::binds_local_p): Clarify "module".
16420         * tree.h (TREE_PUBLIC): Clarify "module".
16421
16422 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
16423
16424         PR target/38891
16425         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
16426         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
16427
16428 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
16429
16430         PR target/39082
16431         * c.opt (Wabi): Support C and ObjC.
16432         (Wpsabi): New.
16433
16434         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
16435
16436         * config/i386/i386.c (classify_argument): Warn once about the ABI
16437         change when passing union with long double.
16438
16439         * doc/invoke.texi: Update -Wabi for warning psABI changes.
16440
16441 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
16442
16443         PR c/35447
16444         * c-parser.c (c_parser_compound_statement): Always enter and leave
16445         a scope.
16446
16447 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16448
16449         PR target/34587
16450         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
16451
16452 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
16453
16454         PR tree-optimization/36922
16455         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
16456         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
16457         Likewise.
16458
16459 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
16460
16461         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
16462         to 0 for EABI64.
16463
16464 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
16465
16466         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
16467
16468 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
16469
16470         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
16471         tree sharing.
16472
16473 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
16474             Richard Sandiford  <rdsandiford@googlemail.com>
16475
16476         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
16477         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
16478         (loongson_biadd): ...this.
16479
16480 2009-02-17  Richard Guenther  <rguenther@suse.de>
16481
16482         PR tree-optimization/39202
16483         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
16484         a var make sure to follow existing collapses.
16485
16486 2009-02-17  Richard Guenther  <rguenther@suse.de>
16487
16488         PR middle-end/39214
16489         * langhooks.c (lhd_print_error_function): Check for NULL block.
16490
16491 2009-02-17  Richard Guenther  <rguenther@suse.de>
16492
16493         PR tree-optimization/39204
16494         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
16495         of the PHI arg.
16496
16497 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
16498
16499         * config/soft-fp/double.h: Update from glibc CVS.
16500
16501 2009-02-17  Richard Guenther  <rguenther@suse.de>
16502
16503         PR tree-optimization/39207
16504         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
16505         strict-aliasing warnings for pointers pointing to NULL.
16506
16507 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
16508
16509         PR c/35446
16510         * c-parser.c (c_parser_braced_init): Call pop_init_level when
16511         skipping until next close brace.
16512
16513 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
16514
16515         PR target/37049
16516         * config/i386/i386.c (ix86_expand_push): Set memory alignment
16517         to function argument boundary.
16518
16519 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
16520
16521         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
16522         in the lea_add. Reload eventually constraints it properly.
16523         * config/picochip/constraints.md: Remove the target constraint
16524         "b", since it is not needed anymore.
16525
16526 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
16527
16528         * gthr-dce.h: Uglify function parameter and local variable names.
16529         * gthr-gnat.h: Likewise.
16530         * gthr-mipssde.h: Likewise.
16531         * gthr-nks.h: Likewise.
16532         * gthr-posix95.h: Likewise.
16533         * gthr-posix.h: Likewise.
16534         * gthr-rtems.h: Likewise.
16535         * gthr-single.h: Likewise.
16536         * gthr-solaris.h: Likewise.
16537         * gthr-tpf.h: Likewise.
16538         * gthr-vxworks.h: Likewise.
16539         * gthr-win32.h: Likewise.
16540
16541 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
16542
16543         PR target/39196
16544         * config/i386/i386.md: Restrict the new peephole2 to move
16545         between MMX/SSE registers.
16546
16547 2009-02-15  Richard Guenther  <rguenther@suse.de>
16548
16549         Revert
16550         2009-02-13  Richard Guenther  <rguenther@suse.de>
16551
16552         * configure.ac: Enable LFS.
16553         * configure: Re-generate.
16554         * config.in: Likewise.
16555
16556 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
16557
16558         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
16559         spu_srqwbyte, spu_srqwbytebc): Define.
16560         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
16561         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
16562         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
16563         "shrqby_<mode>"): New insn-and-split patterns.
16564         * config/spu/spu.c (expand_builtin_args): Determine and return
16565         number of operands using spu_builtin_description data.
16566         (spu_expand_builtin_1): Use it.
16567
16568 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
16569
16570         PR target/38056
16571         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
16572         TARGET_CONST_GP.
16573
16574 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
16575
16576         PR target/39149
16577         * config/i386/i386.c (override_options): Correct warning
16578         messages for -malign-loops, -malign-jumps and -malign-functions.
16579
16580 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
16581
16582         PR target/39152
16583         * config/i386/i386.md: Restrict the new peephole2 to move
16584         between the general purpose registers.
16585
16586 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
16587
16588         PR target/39162
16589         * config/i386/i386.c (type_natural_mode): Add a new argument.
16590         Return the original mode and warn ABI change if vector size is 32byte.
16591         (function_arg_advance): Updated.
16592         (function_arg): Likewise.
16593         (ix86_function_value): Likewise.
16594         (ix86_return_in_memory): Likewise.
16595         (ix86_sol10_return_in_memory): Likewise.
16596         (ix86_gimplify_va_arg): Likewise.
16597         (function_arg_32): Don't warn ABX ABI change here.
16598         (function_arg_64): Likewise.
16599
16600 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
16601
16602         * loop-iv.c (implies_p): In the final case, test that operands 0
16603         of the two comparisons match.
16604
16605         * config/bfin/bfin.c (find_prev_insn_start): New function.
16606         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
16607         (find_next_insn_start): Move.
16608
16609 2009-02-13  Richard Guenther  <rguenther@suse.de>
16610
16611         * configure.ac: Enable LFS.
16612         * configure: Re-generate.
16613         * config.in: Likewise.
16614
16615 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
16616
16617         PR c/35444
16618         * c-parser.c (c_parser_parms_list_declarator): Discard pending
16619         sizes on syntax error after some arguments have been parsed.
16620
16621 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
16622
16623         * doc/invoke.texi (-fira): Remove.
16624
16625 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
16626
16627         * caller-save.c: Replace regclass.c with reginfo.c in comments.
16628         * recog.c: Likewise.
16629         * rtl.h: Likewise.
16630
16631 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
16632
16633         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
16634         (umul_ppmm): Likewise.
16635         (count_leading_zeros): Likewise.
16636         (count_trailing_zeros): Likewise.
16637         (UMUL_TIME): Likewise.
16638
16639 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
16640
16641         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
16642         soft-fp/t-softfp to tmake_file.
16643
16644         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
16645         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
16646         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
16647         IA64_BUILTIN_INFQ]: New.
16648         (ia64_init_builtins): Initialize __builtin_infq,
16649         __builtin_fabsq and __builtin_copysignq if not HPUX.
16650         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
16651         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
16652
16653         * config/ia64/lib1funcs.asm (__divtf3): Define only if
16654         SHARED is defined.
16655         (__fixtfti): Likewise.
16656         (__fixunstfti): Likewise.
16657         (__floattitf): Likewise.
16658
16659         * config/ia64/libgcc-glibc.ver: New.
16660         * config/ia64/t-fprules-softfp: Likewise.
16661         * config/ia64/sfp-machine.h: Likewise.
16662
16663         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
16664         (LIBGCC2_TF_CEXT): Likewise.
16665         (TF_SIZE): Likewise.
16666         (TARGET_INIT_LIBFUNCS): Likewise.
16667
16668         * config/ia64/t-glibc (SHLINB_MAPFILES):
16669         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
16670
16671 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
16672
16673         * config/i386/i386.c (construct_container): Rewrite processing
16674         BLKmode with X86_64_SSE_CLASS.
16675
16676 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
16677
16678         PR target/39152
16679         * config/i386/i386.md: Replace simplify_replace_rtx with
16680         replace_rtx in the new peephole2.
16681
16682 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
16683
16684         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
16685         loop unrolling do not happen at -O2.
16686
16687 2009-02-12  Michael Matz  <matz@suse.de>
16688
16689         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
16690
16691 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
16692
16693         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
16694         for -g3.
16695
16696 2009-02-12  Ben Elliston  <bje@au.ibm.com>
16697
16698         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
16699         patterns when updating the back chain.  Missed in the 2009-02-10
16700         change.
16701
16702 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
16703
16704         * doc/extend.texi (Decimal Floating Types): Update identifier of
16705         draft TR and list of missing support.
16706
16707 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
16708
16709         PR middle-end/39154
16710         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
16711         bit to variable length decl's flags, add it also to its
16712         pointer replacement variable.
16713
16714 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
16715             Jakub Jelinek  <jakub@redhat.com>
16716
16717         PR target/39118
16718         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
16719         (memory_blockage): New expander.
16720         (*memory_blockage): New insn pattern.
16721         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
16722         instead of general blockage at the end of function prologue when
16723         frame pointer is used to access red zone area.  Do not emit blockage
16724         when profiling, it is emitted in generic code.
16725         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
16726         function epilogue when frame pointer is used to access red zone area.
16727
16728 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
16729
16730         PR target/38824
16731         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
16732         by arithmetic with memory operands.
16733         * config/i386/predicates.md (commutative_operator): New.
16734
16735 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
16736
16737         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
16738         bulleted lists.
16739
16740 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
16741
16742         * alias.h (record_alias_subset): Declare.
16743         * alias.c (record_alias_subset): Make global.
16744
16745 2009-02-10  Nick Clifton  <nickc@redhat.com>
16746
16747         * tree-parloops.c: Change license to GPLv3.
16748         * ipa-struct-reorg.c: Change license to GPLv3.
16749         * ipa-struct-reorg.h: Change license to GPLv3.
16750
16751 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
16752
16753         PR c/39084
16754         * c-decl.c (start_struct): Return NULL on error.
16755
16756 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
16757
16758         PR middle-end/39124
16759         * cfgloopmanip.c (remove_path): Call remove_bbs after
16760         cancel_loop_tree, not before it.
16761
16762         PR target/39139
16763         * function.h (struct function): Add has_local_explicit_reg_vars bit.
16764         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
16765         VAR_DECLs were seen.
16766         * tree-ssa-live.c (remove_unused_locals): Recompute
16767         cfun->has_local_explicit_reg_vars.
16768         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
16769         copies or clearings if cfun->has_local_explicit_reg_vars.
16770
16771 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
16772
16773         PR target/39118
16774         * config/i386/i386.c (expand_prologue): Emit blockage at the end
16775         of function prologue when frame pointer is used to access
16776         red zone area.
16777
16778 2009-02-10  Richard Guenther  <rguenther@suse.de>
16779
16780         PR middle-end/39127
16781         * gimplify.c (gimple_regimplify_operands): Always look if
16782         we need to create a temporary.
16783
16784 2009-02-10  Richard Guenther  <rguenther@suse.de>
16785
16786         PR tree-optimization/39132
16787         * tree-loop-distribution.c (todo): New global var.
16788         (generate_memset_zero): Trigger TODO_rebuild_alias.
16789         (tree_loop_distribution): Return todo.
16790
16791 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
16792
16793         PR target/39119
16794         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
16795         (x86_64_reg_class_name): Removed.
16796         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
16797         first one isn't X86_64_SSE_CLASS or any other ones aren't
16798         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
16799         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
16800         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
16801         and 3 X86_64_SSEUP_CLASS.
16802         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
16803         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
16804
16805 2009-02-10  Ben Elliston  <bje@au.ibm.com>
16806
16807         * config/rs6000/rs6000.md (allocate_stack): Always use an update
16808         form instruction to update the stack back chain word, even if the
16809         user has disabled the generation of update instructions.
16810         (movdi_<mode>_update_stack): New.
16811         (movsi_update_stack): Likewise.
16812         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
16813         always use an update form instruction to update the stack back
16814         chain word.
16815
16816 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
16817
16818         PR middle-end/38953
16819         * graphite.c (if_region_set_false_region): After moving a region in
16820         the false branch of a condition, remove the empty dummy basic block.
16821         (gloog): Remove wrong fix for PR38953.
16822
16823 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
16824
16825         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
16826         generation due to implicit sign extension.
16827
16828 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
16829
16830         PR middle-end/38981
16831         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
16832         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
16833
16834 2009-02-09  Richard Guenther  <rguenther@suse.de>
16835
16836         PR middle-end/35202
16837         * convert.c (convert_to_real): Disable (float)fn((double)x)
16838         to fnf(x) conversion if errno differences may occur and
16839         -fmath-errno is set.
16840
16841 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
16842
16843         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
16844         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
16845         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
16846
16847 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
16848
16849         PR c/35434
16850         * c-common.c (handle_alias_attribute): Disallow attribute for
16851         anything not a FUNCTION_DECL or VAR_DECL.
16852
16853 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
16854
16855         PR c/39035
16856         * real.c (do_compare): Special-case compare of zero against
16857         decimal float value.
16858
16859 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
16860
16861         PR c/36432
16862         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
16863         as indicating flexible array members unless the field itself is
16864         being declarared as the incomplete array.
16865
16866 2009-02-06  Jan Hubicka  <jh@suse.cz>
16867
16868         PR tree-optimization/38844
16869         * ipa-inline.c (try_inline): Stop inlining recursion when edge
16870         is already inlined.
16871
16872 2009-02-06  Richard Guenther  <rguenther@suse.de>
16873
16874         PR middle-end/38977
16875         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
16876         fork because we may expand it as __gcov_fork.
16877
16878 2009-02-06  Nick Clifton  <nickc@redhat.com>
16879
16880         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
16881
16882 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
16883
16884         PR tree-optimization/35659
16885         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
16886         vn_phi_eq): Shortcut if hashcode does not match.
16887         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
16888         NULL operands.
16889         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
16890         and avoid iterative_hash_expr.
16891         (FOR_EACH_VALUE_ID_IN_SET): New.
16892         (value_id_compare): Remove.
16893         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
16894         sort expressions by value id.
16895
16896 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
16897
16898         PR target/38991
16899         * config/sh/predicates.md (general_movsrc_operand): Don't check
16900         the subreg of system registers here.
16901
16902 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
16903
16904         PR c++/39106
16905         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
16906         on the copied decl.
16907
16908 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
16909
16910         PR rtl-optimization/39110
16911         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
16912         addresses, not aligned ones.
16913
16914 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
16915             Richard Guenther  <rguenther@suse.de>
16916
16917         PR tree-optimization/39100
16918         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
16919         comment says and add edges.
16920
16921 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
16922
16923         PR c/35435
16924         * c-common.c (handle_tls_model_attribute): Ignore attribute for
16925         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
16926
16927 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
16928
16929         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
16930         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
16931         register_bb_in_sese, new_sese, free_sese): Moved.
16932         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
16933         outermost_loop_in_scop, build_scop_iteration_domain,
16934         expand_scalar_variables_ssa_name, get_vdef_before_scop,
16935         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
16936         Use loop_in_sese_p instead of loop_in_scop_p.
16937         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
16938         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
16939         (scopdet_basic_block_info): Fix bug in scop detection.
16940         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
16941         eq_loop_to_cloog_loop): Remove.
16942         (nb_loops_around_loop_in_scop, nb_loop
16943         ref_nb_loops): Moved here...
16944         * graphite.h (ref_nb_loops): ... from here.
16945         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
16946         (loop_domain_dim, loop_iteration_vector_dim): Remove.
16947         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
16948         * testsuite/gcc.dg/graphite/scop-19.c: New
16949
16950 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
16951             Hans-Peter Nilsson  <hp@axis.com>
16952
16953         PR rtl-optimization/37889
16954         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
16955         Move offset handling from PLUS to before the switch.  Use new
16956         arguments when considering SYMBOL_REFs too.
16957         (rtx_addr_can_trap_p): Pass dummy offset and size.
16958         (enum may_trap_p_flags): Remove.
16959         (may_trap_p_1): Pass size from MEM_SIZE.
16960
16961         PR rtl-optimization/38921
16962         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
16963         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
16964         * rtlanal.c (may_trap_after_code_motion_p): Delete.
16965         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
16966
16967 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
16968
16969         AVX Programming Reference (January, 2009)
16970         * config/i386/sse.md (*vpclmulqdq): New.
16971
16972 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
16973
16974         PR tree-optimization/38977
16975         PR gcov-profile/38292
16976         * calls.c (special_function_p): Disregard __builtin_ prefix.
16977
16978 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
16979
16980         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
16981         non-indexable addresses even before reload.
16982
16983 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
16984
16985         PR c/29129
16986         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
16987         as having variable size.  Do not give an error for unnamed
16988         parameters with [*] declarators.  Give a warning for type names
16989         with [*] declarators and mark them as variable size.
16990         * c-parser.c (c_parser_sizeof_expression): Do not give an error
16991         for sizeof applied to [*] type names.
16992
16993 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16994
16995         PR C++/36607
16996         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
16997
16998 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
16999
17000         * gcc.c (process_command): Update copyright notice dates.
17001         * gcov.c (print_version): Likewise.
17002         * gcov-dump.c (print_version): Likewise.
17003         * mips-tfile.c (main): Likewise.
17004         * mips-tdump.c (main): Likewise.
17005
17006 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
17007
17008         PR c/35433
17009         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
17010         for composite type involving a zero-length array type.
17011
17012 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
17013
17014         PR target/35318
17015         * function.c (match_asm_constraints_1): Skip over
17016         initial optional % in the constraint.
17017
17018         PR inline-asm/39059
17019         * c-parser.c (c_parser_postfix_expression): If fixed point is not
17020         supported, don't accept FIXED_CSTs.
17021         * c-decl.c (finish_declspecs): Error if fixed point is not supported
17022         and _Sat is used without _Fract/_Accum.  Set specs->type to
17023         integer_type_node for cts_fract/cts_accum if fixed point is not
17024         supported.
17025
17026 2009-02-02  Catherine Moore  <clm@codesourcery.com>
17027
17028         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
17029
17030 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
17031
17032         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
17033         (ABI_HAS_64BIT_SYMBOLS): Use it.
17034         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
17035
17036 2009-02-02  Paul Brook  <paul@codesourcery.com>
17037
17038         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
17039
17040 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
17041
17042         PR inline-asm/39058
17043         * recog.h (asm_operand_ok): Add constraints argument.
17044         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
17045         recurse on matching constraint.
17046         (check_asm_operands): Pass constraints as 3rd argument to
17047         asm_operand_ok.  Don't look up matching constraint here.
17048         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
17049         to asm_operand_ok.
17050
17051 2009-02-02  Ben Elliston  <bje@au.ibm.com>
17052
17053         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
17054         TARGET_NARROW_VOLATILE_BITFIELD macro names.
17055
17056 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17057
17058         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
17059         information.  Remove some obsolete information.  Reorganize.
17060
17061         * config/pa/fptr.c: Revert license to GPL 2.
17062         * config/pa/milli64.S: Likewise.
17063
17064 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
17065
17066         PR target/38904
17067         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
17068         LIBRARY name in, instead of hard-coding it.
17069         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
17070         extra target make frag to tmake_files according to EH model.
17071         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
17072         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
17073         frags that define makefile variable EH_MODEL appropriately.
17074         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
17075         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
17076         to "-sjlj" according to type of EH configured.
17077         (LIBGCC_SONAME):  Concatenate it to shared library base name.
17078         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
17079         to "_sjlj" according to type of EH configured.
17080         (LIBGCC_SONAME):  Concatenate it to shared library base name.
17081         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
17082         (SHLIB_LINK):  Add missing semicolon to if-else construct.
17083         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
17084         string value of "pe_dll" command-line option.
17085         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
17086         (SHLIB_SONAME):  Use it when overriding t-cygming default.
17087         (SHLIB_IMPLIB):  Override t-cygming default.
17088         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
17089         string value of "pe_dll" command-line option.
17090
17091 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
17092
17093         PR target/38952
17094         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
17095         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
17096
17097 2009-01-31  Richard Guenther  <rguenther@suse.de>
17098
17099         PR tree-optimization/38937
17100         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
17101         computing the transitive closure.
17102
17103 2009-01-30  Richard Guenther  <rguenther@suse.de>
17104
17105         PR tree-optimization/39041
17106         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
17107         Propagate variable indices only if the types match for this stmt.
17108
17109 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
17110
17111         PR target/39013
17112         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
17113         inline but never defined.
17114
17115 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
17116
17117         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
17118         (*insv_h_di_reg_extimm): New insn.
17119         (*insv_l<mode>_reg_extimm): New insn.
17120
17121 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
17122
17123         * config/picochip/picochip.c (flag_conserve_stack): set
17124         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
17125         fconserve-stack. Reduce call-overhead used by inliner.
17126
17127 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
17128
17129         PR/38157
17130         * common.opt (flag_conserve_stack): Initialised to zero.
17131
17132 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
17133
17134         PR/39002
17135         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
17136         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
17137         method.
17138
17139 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
17140
17141         * ira-color.c (allocno_reload_assign): Update comments.
17142         * regmove.c (regmove_optimize): Likewise.
17143
17144         * ra.h: Removed.
17145
17146 2009-01-29  Robert Millan  <rmh@aybabtu.com>
17147
17148         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
17149         * config/i386/kopensolaris-gnu.h: New file.  Undefine
17150         `MD_UNWIND_SUPPORT'.
17151         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
17152
17153 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
17154
17155         PR tree-optimization/39007
17156         * tree-loop-distribution.c (generate_builtin): Use
17157         recompute_dominator to compute the immediate dominator of the
17158         basic block just after the loop.
17159
17160 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17161
17162         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
17163         (ASM_OUTPUT_DWARF_PCREL): Define.
17164
17165 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
17166
17167         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
17168         * doc/passes.texi: Remove entries about regclass, local-alloc, and
17169         global.  Modify entries about regmove and IRA.
17170
17171         * ra-conflict.c: Remove the file.
17172
17173         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
17174
17175         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
17176         (pass_regclass_init): Rename to pass_reginfo_init.
17177
17178         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
17179
17180         * toplev.h (flag_ira): Remove.
17181
17182         * caller-save.c (setup_save_areas): Remove flag_ira.
17183
17184         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
17185
17186         * global.c: Remove the file.
17187
17188         * opts.c (decode_options): Remove flag_ira.
17189
17190         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
17191
17192         * regmove.c: Modify file description.
17193         (find_use_as_address, try_auto_increment): Define them only if
17194         AUTO_INC_DEC is defined.
17195         (replacement_quality, replace_in_call_usage, fixup_match_1,
17196         stable_and_no_regs_but_for_p): Remove.
17197         (reg_set_in_bb): Make it static.
17198         (regmove_optimize): Remove flag_ira and code which worked for
17199         !flag_ira.
17200
17201         * local-alloc.c: Remove the file.
17202
17203         * common.opt (fira): Remove.
17204
17205         * ira.c: Include except.h.
17206         (eliminable_regset): Move from global.c.
17207         (mark_elimination): Ditto.  Remove flag_ira.
17208         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
17209         equiv_mem_modified, validate_equiv_mem_from_store,
17210         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
17211         contains_replace_regs, memref_referenced_p, memref_used_between_p,
17212         no_equiv, recorded_label_ref): Move from local-alloc.c.
17213         (update_equiv_regs): Ditto.  Make it static.
17214         (print_insn_chain, print_insn_chains): Move it from global.c.
17215         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
17216         (build_insn_chain): Ditto.  Make it static.
17217         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
17218         Rename to init_live_subregs.
17219         (gate_ira): Remove flag_ira.
17220
17221         * regclass.c: Rename reginfo.c.  Change file description.
17222         (FORBIDDEN_INC_DEC_CLASSES): Remove.
17223         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
17224         (init_reg_sets_1): Remove code for evaluation of
17225         reg_class_superclasses and losing_caller_save_reg_set.
17226         (init_regs): Remove init_reg_autoinc.
17227         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
17228         ok_for_base_p_nonstrict): Remove.
17229         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
17230         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
17231         corresponding entries.
17232         (dump_regclass, record_operand_costs, scan_one_insn,
17233         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
17234         record_address_regs, auto_inc_dec_reg_p): Remove.
17235         (gt-regclass.h): Rename to gt-reginfo.h.
17236
17237         * rtl.h (dump_global_regs, retry_global_alloc,
17238         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
17239
17240         * Makefile.in (RA_H): Remove.
17241         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
17242         Rename regclass.o to reginfo.o.
17243         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
17244         gt-reginfo.h.
17245         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
17246         (GTFILES): Rename regclass.c to reginfo.c.
17247
17248         * passes.c (init_optimization_passes): Remove pass_local_alloc and
17249         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
17250
17251         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
17252         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
17253         Remove flag_ira.
17254         (finish_spills): Ditto.  Remove code for !flag_ira.
17255
17256 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
17257
17258         PR middle-end/35854
17259         * doc/invoke.texi (rtl debug options): Complete rewrite.
17260         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
17261         to auto_inc_dec".
17262         * mode-switching.c (pass_mode_switching): Rename pass from
17263         "mode-sw" to "mode_sw".
17264         * except.c (pass_convert_to_eh_ranges): Rename pass from
17265         "eh-ranges" to "eh_ranges".
17266         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
17267         to "subreg1".
17268
17269
17270 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
17271             Alexander Monakov  <amonakov@ispras.ru>
17272
17273         PR middle-end/38857
17274         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
17275         register.
17276         (move_exprs_to_boundary): Change return type and pass through
17277         should_move from move_op.  Relax assert.  Update usage ...
17278         (schedule_expr_on_boundary): ... here.  Use should_move instead of
17279         cant_move.
17280         (move_op_orig_expr_found): Indicate that insn was disconnected from
17281         stream.
17282         (code_motion_process_successors): Do not call after_merge_succs
17283         callback if original expression was not found when traversing any of
17284         the branches.
17285         (code_motion_path_driver): Change return type.  Update prototype.
17286         (move_op): Update comment.  Add a new parameter (should_move).  Update
17287         prototype.  Set *should_move based on indication provided by
17288         move_op_orig_expr_found.
17289
17290 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
17291
17292         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
17293         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
17294         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
17295         * config/rs6000/rs6000.c (rs6000_override_options): Default
17296         avoid-indexed-addresses on for Power6, off for everything else.
17297         (avoiding_indexed_address_p): New function.
17298         (rs6000_legitimize_address): Use it.
17299         (rs6000_legitimate_address): Likewise.
17300         * config/rs6000/rs6000.md (movXX_updateX): Likewise
17301
17302 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
17303
17304         PR tree-optimization/38997
17305         * tree-loop-distribution.c (generate_memset_zero): Use
17306         POINTER_PLUS_EXPR for a pointer addition.
17307
17308 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17309
17310         * config/s390/s390.md (bswap<mode>2): New pattern added.
17311
17312 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
17313
17314         * config/s390/s390.md (*tls_load_31): Added type attribute.
17315
17316 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
17317
17318         * config/s390/s390.md: Fix a few comments.
17319
17320 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
17321
17322         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
17323         (*tm<mode>_full): Fixed z10prop attribute.
17324         (*tst<mode>_extimm): Fixed z10prop attribute.
17325         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
17326         (*tstqiCCT_cconly): Fixed z10prop attribute.
17327         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
17328         (*movsi_larl): Fixed z10prop attribute.
17329         (*movsi_zarch): Fixed z10prop attribute.
17330         (*movsi_eas): Fixed z10prop attribute.
17331         (*movhi): Fixed z10prop attribute.
17332         (*movqi): Fixed z10prop attribute.
17333         (*movstrictqi): Fixed z10prop attribute.
17334         (*mov<mode>): Fixed z10prop attribute.
17335         (*movcc): Fixed z10prop attribute.
17336         (*sethighpartdi_64): Fixed z10prop attribute.
17337         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
17338         (*negdi2_sign_cc): Fixed z10prop attribute.
17339         (*negdi2_sign): Fixed z10prop attribute.
17340         (*absdi2_sign_cc): Fixed z10prop attribute.
17341         (*absdi2_sign): Fixed z10prop attribute.
17342         (*negabsdi2_sign_cc): Fixed z10prop attribute.
17343         (*negabsdi2_sign): Fixed z10prop attribute.
17344         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
17345         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
17346         (doloop_si64): Fixed z10prop attribute.
17347         (doloop_si31): Fixed z10prop attribute.
17348         (doloop_long): Fixed z10prop attribute.
17349         (indirect_jump): Fixed z10prop attribute.
17350         (nop): Fixed z10prop attribute.
17351         (main_base_64): Fixed z10prop attribute.
17352         (reload_base_64): Fixed z10prop attribute.
17353
17354 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
17355
17356         PR rtl-optimization/38740
17357         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
17358         if !optimize.
17359         * config/mips/mips.c (mips_reorg): Likewise.
17360
17361 2009-01-28  Richard Guenther  <rguenther@suse.de>
17362
17363         PR tree-optimization/38926
17364         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
17365         with the correct value id to a value.
17366         (do_regular_insertion): Use the value number of edoubleprime
17367         for the value number of the expr.
17368
17369         Revert
17370         2008-08-21  Richard Guenther  <rguenther@suse.de>
17371
17372         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
17373         a PHI ask VN if it is already available.
17374         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
17375         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
17376
17377 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
17378
17379         PR middle-end/38934
17380         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
17381         set to varying whenever max has TREE_OVERFLOW set, similarly
17382         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
17383
17384 2009-01-28  Richard Guenther  <rguenther@suse.de>
17385
17386         PR middle-end/38908
17387         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
17388         uninitialized aggregate uses in call arguments.
17389
17390 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
17391
17392         PR tree-optimization/38984
17393         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
17394         the nothing_id variable if -fno-delete-null-pointer-checks.
17395
17396 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
17397
17398         PR target/38988
17399         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
17400         (set_got_offset_rex64): Ditto.
17401
17402 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
17403
17404         PR target/38941
17405         * doc/extend.texi: Improve local variable with asm reg.
17406
17407 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
17408
17409         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
17410         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
17411         was not supplied then set warn_packed_bitfield_compat to the
17412         default value of 1.
17413         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
17414         against 1.
17415
17416 2009-01-27  Richard Guenther  <rguenther@suse.de>
17417
17418         PR tree-optimization/38503
17419         * cfgexpand.c (expand_gimple_basic_block): Ignore
17420         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
17421         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
17422         variables that cannot have TBAA applied.
17423         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
17424         statements.
17425
17426 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
17427
17428         PR middle-end/38969
17429         * calls.c (initialize_argument_information): Do not wrap complex
17430         arguments in SAVE_EXPR.
17431
17432 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
17433
17434         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
17435         (INSTALL_LIBGCC): Revert typo commit.
17436
17437 2009-01-26  Richard Guenther  <rguenther@suse.de>
17438
17439         PR tree-optimization/38745
17440         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
17441         from special handling.
17442
17443 2009-01-26  Richard Guenther  <rguenther@suse.de>
17444
17445         PR tree-optimization/38745
17446         * tree-ssa.c (execute_update_addresses_taken): Do not include
17447         variables that cannot possibly be a register in not_reg_needs.
17448         Do not clear TREE_ADDRESSABLE on vars that may not become
17449         registers.
17450         * tree-ssa.c (update_alias_info_1): Include those in the set
17451         of addressable vars.
17452
17453 2009-01-26  Richard Guenther  <rguenther@suse.de>
17454
17455         PR middle-end/38851
17456         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
17457         * tree-ssa-dse.c: Include langhooks.h
17458         (execute_simple_dse): Remove stores with zero size.
17459
17460 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
17461
17462         PR c/38957
17463         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
17464         as PLUS_EXPR.
17465
17466 2009-01-24  Julian Brown  <julian@codesourcery.com>
17467
17468         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
17469         config/arm/linux-atomic.c.
17470         * config/arm/linux-atomic.c: New.
17471
17472 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
17473
17474         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
17475         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
17476         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
17477
17478 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
17479
17480         PR c/38938
17481         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
17482         properly.
17483
17484 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
17485
17486         PR tree-optimization/38953
17487         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
17488         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
17489         (gloog): Split the exit of the scop when the scop exit is a loop exit.
17490         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
17491         changed the CFG.
17492
17493 2009-01-24  Paul Brook  <paul@codesourcery.com>
17494
17495         * config/arm/neon.md (neon_type): Move to arm.md.
17496         (neon_mov<VSTRUCT>): Add neon_type attribute.
17497         * config/arm/arm.md (neon_type): Move to here.
17498         (conds): Add "unconditioal" and use as default for NEON insns.
17499
17500 2009-01-24  Ben Elliston  <bje@au.ibm.com>
17501
17502         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
17503         void *' warning from -Wc++-compat.
17504         * Makefile.in (dominance.o-warn): Remove.
17505
17506 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
17507
17508         PR tree-optimization/38932
17509         * fold-const.c (fold_unary_ignore_overflow): New.
17510         * tree.h (fold_unary_ignore_overflow): Declare.
17511         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
17512         * tree-ssa-sccvn.c (visit_reference_op_load,
17513         simplify_unary_expression): Likewise.
17514
17515 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
17516
17517         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
17518         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
17519         regardless of their type.
17520         * c-common.c (handle_packed_attribute): Don't ignore packed on
17521         bitfields.
17522         * c.opt (Wpacked-bitfield-compat): New warning option.
17523         * stor-layout.c (place_field): Warn if offset of a field changed.
17524         * doc/extend.texi (packed): Mention the ABI change.
17525         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
17526         (Warning Options): Add it to the list.
17527
17528 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
17529
17530         * c-opts.c (c_common_post_options): Fix a typo in comments.
17531
17532 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
17533
17534         PR middle-end/38615
17535         * gimplify.c (gimplify_init_constructor): Fix promotion of const
17536         variables to static.
17537         * doc/invoke.texi (-fmerge-all-constants): Update description.
17538
17539 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
17540
17541         PR target/38931
17542         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
17543         (*movdi_1_rex64): Use type "mmx" for alternative 5.
17544
17545 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
17546
17547         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
17548         a word boundary.
17549         (LOCAL_ALIGNMENT): Similarly.
17550
17551 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
17552             Joseph Myers  <joseph@codesourcery.com>
17553
17554         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
17555         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
17556         * config/arm/arm-tune.md: Regenerate.
17557         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
17558         -march=iwmmxt2.
17559
17560 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
17561
17562         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
17563         version number to five.
17564
17565 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
17566
17567         PR c++/38930
17568         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
17569         * c-common.c (set_underlying_type): Likewise.
17570         (is_typedef_decl ): Likewise
17571         * tree.h: Likewise
17572         (set_underlying_type): Likewise.
17573         (is_typedef_type): Likewise.
17574
17575 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
17576
17577         PR middle-end/38587
17578         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
17579         crossing setjmps.
17580
17581 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
17582
17583         PR bootstrap/37660
17584         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
17585         (LIBGCC_SPEC):  Don't define.
17586         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
17587
17588 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
17589
17590         PR rtl-optimization/38879
17591         * alias.c (base_alias_check): Unaligned access via AND address can
17592         alias all surrounding object types except those with sizes equal
17593         or wider than the size of unaligned access.
17594
17595 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
17596
17597         PR c++/26693
17598         * c-decl.c (clone_underlying_type): Move this ...
17599         * c-common.c (set_underlying_type): ... here.
17600         Also, make sure the function properly sets TYPE_STUB_DECL() on
17601         the newly created typedef variant type.
17602         (is_typedef_decl ): New entry point.
17603         * tree.h: Added a new member member_types_needing_access_check to
17604         struct tree_decl_non_common.
17605         (set_underlying_type): New entry point.
17606         (is_typedef_type): Likewise.
17607
17608 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
17609
17610         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
17611         Check whether two instructions have memory references that
17612         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
17613         are helper functions for traversing.
17614         * alias.h (insn_alias_sets_confilict_p): New prototypes.
17615         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
17616         not to draw dependency edge for instructions with non-conflicting
17617         alias sets.
17618
17619 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
17620
17621         PR other/38758
17622         * longlong.h: Update copyright years.  Use soft-fp license notice.
17623         Sync __clz_tab declaration with glibc.
17624
17625 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
17626
17627         PR target/30687
17628         * doc/extend.texi (syscall_linkage): New.
17629         (version_id): Modify.
17630
17631 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17632             Richard Guenther  <rguenther@suse.de>
17633
17634         PR tree-optimization/38747
17635         PR tree-optimization/38748
17636         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
17637         conversion if the base address is an indirect reference and the
17638         aliasing sets could cause issues.
17639
17640 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
17641
17642         * common.opt (fgraphite, fgraphite-identity): Add comment for
17643         explaining why these options are not documented.
17644
17645 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
17646
17647         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
17648         gimple_call_lhs is NULL.
17649
17650 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
17651
17652         PR target/38868
17653         * emit-rtl.c (adjust_address_1): Make sure memref is never
17654         overwritten.
17655
17656 2009-01-20  Ben Elliston  <bje@au.ibm.com>
17657
17658         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
17659         const qualifier from arg parameter. Remove unnecessary cast to char *.
17660         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
17661         const qualifier from arg 2.
17662
17663 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
17664
17665         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
17666
17667 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
17668
17669         PR c/38869
17670         * rtl.h (reinit_regs): New prototype.
17671         * regclass.c: Include ira.h.
17672         (reinit_regs): New.
17673         * Makefile.in (regclass.o): Add ira.h.
17674         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
17675
17676 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
17677
17678         PR target/38736
17679         * c-common.c (handle_aligned_attribute): Use
17680         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
17681         default alignment value.
17682
17683         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
17684
17685         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
17686         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
17687
17688         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
17689         __BIGGEST_ALIGNMENT__.
17690
17691         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
17692
17693 2009-01-18  Richard Guenther  <rguenther@suse.de>
17694
17695         PR tree-optimization/38819
17696         * tree-flow.h (operation_could_trap_helper_p): Declare.
17697         * tree-eh.c (operation_could_trap_helper_p): Export.
17698         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
17699         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
17700         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
17701         are about to insert a possibly trapping instruction and fail
17702         in this case.
17703
17704 2009-01-18  Andreas Schwab  <schwab@suse.de>
17705
17706         * doc/install.texi (Configuration): Remove obsolete paragraph
17707         about use of --with-gnu-ld with --with-gnu-as.
17708
17709 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
17710
17711         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
17712         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
17713         Follow spelling conventions.
17714
17715 2009-01-18  Ben Elliston  <bje@au.ibm.com>
17716
17717         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
17718         C++ warning about implicit conversion from void * to struct
17719         bitmap_head_def *.
17720         (bitmap_obstack_free): Likewise for bitmap_element *.
17721         * Makefile.in (bitmap.o-warn): Remove.
17722
17723 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
17724
17725         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
17726
17727 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
17728             Tobias Grosser  <tobi.grosser@amd.com>
17729
17730         * graphite.c (graphite_trans_scop_block): Do not block single
17731         nested loops.
17732
17733 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
17734
17735         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
17736         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
17737         test with assertion.
17738
17739 2009-01-16  Richard Guenther  <rguenther@suse.de>
17740
17741         PR tree-optimization/38835
17742         PR middle-end/36227
17743         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
17744         and INT + PTR -> (INT)(PTR p+ INT) folding.
17745         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
17746
17747 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
17748
17749         PR target/38554
17750         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
17751         the subreg from a lowpart subreg if it is also casting the value.
17752
17753 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
17754             Tobias Grosser  <tobi.grosser@amd.com>
17755
17756         * graphite.c (compare_prefix_loops): New.
17757         (build_scop_canonical_schedules): Rewritten.
17758         (graphite_transform_loops): Move build_scop_canonical_schedules
17759         after build_scop_iteration_domain.
17760
17761 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
17762             Tobias Grosser  <tobi.grosser@amd.com>
17763
17764         * graphite.c (add_conditions_to_domain): Add the loops to
17765         the dimension of the iteration domain.  Do copy the domain
17766         only when it exists.
17767         (build_scop_conditions_1): Do not call add_conditions_to_domain.
17768         (add_conditions_to_constraints): New.
17769         (can_generate_code_stmt, can_generate_code): Removed.
17770         (gloog): Do not call can_generate_code.
17771         (graphite_transform_loops): Call add_conditions_to_constraints
17772         after building the iteration domain.
17773
17774 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
17775
17776         PR tree-optimization/38789
17777         * tree-ssa-threadedge.c
17778         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
17779         __builtin_constant_p.
17780
17781 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
17782
17783         * dce.c (delete_unmarked_insns): Reversed the order that insns are
17784         examined before deleting them.
17785
17786 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
17787
17788         * function.c (aggregate_value_p): Correctly extract the function
17789         type from CALL_EXPR_FN lookup.
17790
17791 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
17792
17793         * config/picochip/picochip.c (picochip_override_options): Revert
17794         CFI asm flag disable commited previously.
17795
17796 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
17797             Tobias Grosser  <tobi.grosser@amd.com>
17798             Jan Sjodin  <jan.sjodin@amd.com>
17799
17800         * graphite.c (scan_tree_for_params): On substractions negate
17801         all the coefficients of the term.
17802         (clast_to_gcc_expression_red): New.  Handle reduction expressions
17803         of more than two operands.
17804         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
17805         (get_vdef_before_scop): Handle also the case of default definitions.
17806
17807 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
17808
17809         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
17810         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
17811         Also use them when walking CALL_INSN_FUNCTION_USAGE.
17812
17813 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
17814             Joey Ye  <joey.ye@intel.com>
17815
17816         PR middle-end/37843
17817         * cfgexpand.c (expand_stack_alignment): Don't update stack
17818         boundary nor check incoming stack boundary here.
17819         (gimple_expand_cfg): Update stack boundary and check incoming
17820         stack boundary here.
17821
17822 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
17823
17824         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
17825
17826 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
17827
17828         PR rtl-optimization/38245
17829         * calls.c (expand_call): Add stack arguments to
17830         CALL_INSN_FUNCTION_USAGE even for pure calls (when
17831         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
17832         in regs and partially in memory or BLKmode arguments.
17833         (emit_library_call_value_1): Add stack arguments to
17834         CALL_INSN_FUNCTION_USAGE even for pure calls (when
17835         ACCUMULATE_OUTGOING_ARGS).
17836         * dce.c: Include tm_p.h.
17837         (find_call_stack_args): New function.
17838         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
17839         argument.
17840         (mark_insn): Call find_call_stack_args for CALL_Ps.
17841         (prescan_insns_for_dce): Walk insns backwards in bb rather than
17842         forwards.  Allocate and free arg_stores bitmap if needed, pass it
17843         down to deletable_insn_p, don't mark stores set in arg_stores
17844         bitmap, clear the bitmap at the beginning of each bb.
17845         * Makefile.in (dce.o): Depend on $(TM_P_H).
17846
17847 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
17848
17849         PR target/22599
17850         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
17851         to make sure the insn is a conditional test (bug 22599).  Reformat a
17852         few long lines.
17853
17854 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
17855
17856         PR middle-end/38431
17857         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
17858         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
17859         (gloog): Do not call cleanup_tree_cfg.
17860         (graphite_transform_loops): Call cleanup_tree_cfg after all
17861         scops have been code generated.
17862
17863 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
17864         * doc/gty.texi (Invoking the garbage collector): Added new node
17865         and section documenting ggc_collect.
17866
17867 2009-01-14  Richard Guenther  <rguenther@suse.de>
17868
17869         PR tree-optimization/38826
17870         PR middle-end/38477
17871         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
17872         initialization notes only if we actually emitted a warning.
17873         (intra_create_variable_infos): Add constraints for a result decl
17874         that is passed by hidden reference.
17875         (build_pred_graph): Mark all related variables non-direct on
17876         address-taking.
17877
17878 2009-01-14  Nick Clifton  <nickc@redhat.com>
17879
17880         * ira-conflicts.c: Include addresses.h for the definition of
17881         base_reg_class.
17882         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
17883         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
17884
17885 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
17886
17887         PR target/38811
17888         * Makefile.in (ira-lives.o): Add except.h.
17889
17890         * ira-lives.c: Include except.h.
17891         (process_bb_node_lives): Process can_throw_internal.
17892
17893 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
17894
17895         PR rtl-optimization/38774
17896         * combine.c (simplify_set): When undoing cc_use change, don't do
17897         PUT_CODE on the newly created comparison, but instead put back the
17898         old comparison.
17899
17900 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
17901
17902         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
17903         values.  Remove duplicate arm8 entry.
17904
17905 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
17906
17907         PR tree-optimization/38786
17908         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
17909         the SSA_NAME case of expand_scalar_variables_expr.
17910         Set the type of an expression to the type of its assign statement.
17911         (expand_scalar_variables_expr): Also gather the scalar computation
17912         used to index the memory access.  Do not pass loop_p.
17913         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
17914         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
17915         the gimple_stmt_iterator where it inserts new code.
17916         Do not pass loop_p.
17917         (copy_bb_and_scalar_dependences): Do not pass loop_p.
17918         (translate_clast): Update call to copy_bb_and_scalar_dependences.
17919
17920 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
17921
17922         * graphite.h (debug_value): Removed.
17923         * graphite.c (debug_value): Removed.
17924
17925 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
17926
17927         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
17928         ldrd/strd with two 32-bit instructions.
17929
17930 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
17931
17932         * config/arm/arm.c (struct processors): Pass for speed down into
17933         cost helper functions.
17934         (const_ok_for_op): Handle COMPARE and inequality nodes.
17935         (arm_rtx_costs_1): Rewrite.
17936         (arm_size_rtx_costs): Update prototype.
17937         (arm_rtx_costs): Pass speed down to helper functions.
17938         (arm_slowmul_rtx_costs): Rework cost calculations.
17939         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
17940         (arm_9e_rtx_costs): Likewise.
17941
17942 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
17943
17944         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
17945         relocations of local symbols wider than UNITS_PER_WORD are not valid.
17946         (alpha_legitimize_address): Do not split local symbols wider than
17947         UNITS_PER_WORD into HIGH/LO_SUM parts.
17948
17949 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
17950
17951         PR bootstrap/38580
17952         * gcc.c (process_command): Replace call to execvp with calls
17953         to pex_one and exit.
17954
17955 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
17956
17957         PR target/29141
17958         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
17959         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
17960         variant for devices with 3-byte PC.
17961         (__tablejump_elpm__): New.
17962
17963 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
17964
17965         PR c/32041
17966         * c-parser.c (c_parser_postfix_expression): Allow `->' in
17967         offsetof member-designator, handle it as `[0].'.
17968
17969 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17970
17971         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
17972         function when not using named sections on targets with named sections
17973         if branch distance is less than 262132.
17974
17975 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
17976
17977         * combine.c (combine_instructions):  Recompute
17978         optimize_this_for_speed_p  for each BB in the main combine loop.
17979
17980 2009-01-12  Tomas Bily  <tbily@suse.cz>
17981
17982         PR middlend/38385
17983         * tree-loop-distribution.c (prop_phis): New function.
17984         (generate_builtin): Call prop_phis.
17985         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
17986
17987 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
17988
17989         PR tree-optimization/38807
17990         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
17991         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
17992
17993 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
17994
17995         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
17996         subreg of op0 to the original op0.
17997
17998 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
17999
18000         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
18001
18002 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
18003
18004         PR debug/7055
18005         * mips-tfile.c (parse_def): Fix parsing of def strings
18006         starting with digits.
18007
18008 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
18009
18010         PR target/38695
18011         * config/arm/arm.c (arm_is_long_call_p): Don't call
18012         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
18013
18014 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
18015
18016         * regrename.c (regrename_optimize): Fix dumping.
18017         (find_oldest_value_reg): Preserve REG_POINTER.
18018         (copy_hardreg_forward_1): Likewise.
18019
18020 2009-01-09  Diego Novillo  <dnovillo@google.com>
18021
18022         * gimple.h (struct gimple_statement_base) <uid>: Document
18023         the restrictions on its use.
18024         (gimple_uid): Tidy.
18025         (gimple_set_uid): Tidy.
18026
18027 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
18028
18029         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
18030         zero guard even if align_bytes != 0 and count is smaller than
18031         size_needed.
18032
18033 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
18034
18035         PR rtl-optimization/38495
18036         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
18037         (add_range_and_copies_from_move_list): Print all added ranges.
18038         Add ranges to memory optimized destination.
18039
18040 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
18041
18042         PR target/38686
18043         PR target/38708
18044         * config/i386/i386.c (override_options): Reject
18045         -mstringop-strategy=rep_8byte with -m32.
18046         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
18047         to 1.  Do count comparison against epilogue_size_needed at compile
18048         time even when count_exp was constant forced into register.  For
18049         size_needed don't jump to epilogue, instead just avoid aligning
18050         and invoke the body algorithm.  If need_zero_guard, add zero guard
18051         even if count is non-zero, but smaller than size_needed + number of
18052         bytes that could be stored for alignment.
18053         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
18054         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
18055         but smaller than size_needed + number of bytes that could be stored
18056         for alignment.  Compare size_needed with epilogue_size_needed instead
18057         of desired_align - align, don't adjust size_needed, pass
18058         epilogue_size_needed to the epilogue expanders.
18059
18060         PR c/35742
18061         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
18062
18063 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18064
18065         * pa.c (last_address): Change to unsigned.
18066         (update_total_code_bytes): Change argument to unsigned.  Don't
18067         check if insn addresses are set.
18068         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
18069         addresses are not set.
18070         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
18071
18072 2009-01-09  Nick Clifton  <nickc@redhat.com>
18073
18074         * config/sh/symbian.c: Replace uses of DECL_INLINE with
18075         DECL_DECLARED_INLINE_P.
18076
18077 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
18078
18079         PR middle-end/38347
18080         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
18081         GET_MODE (op0) in operand_subword_force calls.
18082
18083         PR middle-end/38771
18084         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
18085         fold_convert arg0 operands to TREE_TYPE (op0) first.
18086
18087 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
18088
18089         * params.def (ira-max-conflict-table-size): Decrease default value
18090         to 1000.
18091
18092 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
18093
18094         PR tree-optimization/37031
18095         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
18096         on parameter_set.
18097         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
18098         allocate it using gc instead of heap, use VEC_quick_push instead of
18099         VEC_safe_push.
18100         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
18101         instead of heap, use VEC_quick_push instead of VEC_safe_push.
18102         * tree-data-ref.h (struct access_matrix): Change matrix to gc
18103         allocated vector from heap allocated.
18104         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
18105         * tree-loop-linear.c (linear_transform_loops): Allocate nest
18106         vector only after perfect_loop_nest_depth call.
18107
18108 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
18109             Jan Sjodin  <jan.sjodin@amd.com>
18110
18111         PR tree-optimization/38559
18112         * graphite.c (debug_value, copy_constraint,
18113         swap_constraint_variables, scale_constraint_variable, ): New.
18114         (get_lower_bound, get_upper_bound): Removed.
18115         (graphite_trans_bb_strip_mine): Clean up this code that works
18116         only for constant number of iterations.  Fully copy upper and
18117         lower bound constraints, not only the constant part of them.
18118         * graphite.h (debug_value): Declared.
18119
18120 2009-01-08  Ira Rosen  <irar@il.ibm.com>
18121
18122         PR tree-optimization/37194
18123         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
18124         Don't add the cost of cost model guard in prologue to scalar
18125         outside cost in case of known number of iterations.
18126
18127 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
18128             Alan Modra  <amodra@bigpond.net.au>
18129
18130         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
18131         non-word-aligned REG+CONST addressing.
18132
18133 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
18134
18135         PR target/38706
18136         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
18137         free_after_compilation when outputting a thunk.
18138         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
18139         Do not call free_after_compilation here.
18140
18141 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
18142
18143         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
18144         (ix86_valid_target_attribute_inner_p): Ditto.
18145
18146 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
18147
18148         PR tree-optimization/38492
18149         PR tree-optimization/38498
18150         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
18151         * tree-chrec.h (scev_is_linear_expression): Declared.
18152         * graphite.c (graphite_cannot_represent_loop_niter): New.
18153         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
18154         (graphite_loop_normal_form): Use gcc_assert.
18155         (scan_tree_for_params): Use CASE_CONVERT.
18156         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
18157         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
18158         Use gcc_assert.  Discard scops that contain unhandled cases.
18159         (build_scop_conditions): Return a boolean status for unhandled cases.
18160         (strip_mine_profitable_p): Print the loop number, not its depth.
18161         (is_interchange_valid): Pass the depth of the loop nest, don't
18162         recompute it wrongly.
18163         (graphite_trans_bb_block): Same.
18164         (graphite_trans_bb_block): Print tentative of loop blocking.
18165         (graphite_trans_scop_block): Do not print that the loop has been
18166         blocked.
18167         (graphite_transform_loops): Do not handle scops that contain condition
18168         scalar phi nodes.
18169
18170 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
18171
18172         AVX Programming Reference (December, 2008)
18173         * config/i386/avxintrin.h (_mm256_stream_si256): New.
18174         (_mm256_stream_pd): Likewise.
18175         (_mm256_stream_ps): Likewise.
18176
18177         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
18178         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
18179         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
18180         (bdesc_special_args): Add __builtin_ia32_movntdq256,
18181         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
18182         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
18183         (ix86_expand_special_args_builtin): Likewise.
18184
18185         * config/i386/sse.md (AVXMODEDI): New.
18186         (avx_movnt<mode>): Likewise.
18187         (avx_movnt<mode>): Likewise.
18188         (<sse>_movnt<mode>): Remove AVX support.
18189         (sse2_movntv2di): Likewise.
18190
18191 2009-01-07  Richard Guenther  <rguenther@suse.de>
18192
18193         PR middle-end/38751
18194         * fold-const.c (extract_muldiv): Remove obsolete comment.
18195         (fold_plusminus_mult_expr): Undo MINUS_EXPR
18196         to PLUS_EXPR canonicalization for the canonicalization.
18197
18198 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
18199
18200         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
18201         hosted cross-compilers generating less efficient code.
18202
18203 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
18204
18205         * function.h (rtl_data): Add a dbr_scheduled_p field.
18206         * reorg.c (dbr_schedule): Set it.
18207         (gate_handle_delay_slots): Check it.
18208         * config/mips/mips.c (mips_base_delayed_branch): Delete.
18209         (mips_reorg): Check flag_delayed_branch instead of
18210         mips_base_delayed_branch.
18211         (mips_override_options): Don't set mips_base_delayed_branch
18212         or flag_delayed_branch.
18213
18214 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
18215
18216         PR rtl-optimization/38426.
18217         * ira.c (ira): Set current_function_is_leaf earlier.
18218
18219 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
18220
18221         PR rtl-optimization/38722
18222         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
18223         too early, only set a flag and modify after last possible
18224         undo_all point.
18225
18226 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
18227
18228         PR c/34252
18229         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
18230         * real.c (decimal_single_format): Correct values of emin and emax.
18231         (decimal_double_format): Ditto.
18232         (decimal_quad_format): Ditto.
18233         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
18234         computation of DECnn_MIN and DECnn_MAX for corrected values of
18235         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
18236         __DECnn_MIN__, and adjust its computation for the corrected value
18237         of emin.
18238
18239 2009-01-06  Jan Hubicka  <jh@suse.cz>
18240
18241         PR target/38744
18242         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
18243
18244 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
18245
18246         * doc/contrib.texi (Contributors): Slightly adjust the end note.
18247         Add Robert Clark to the list of testers.
18248
18249 2009-01-06  Jan Hubicka  <jh@suse.cz>
18250             Kai Tietz  <kai.tietz@onevision.com>
18251
18252         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
18253         * config/i386/i386.c (ix86_expand_call): Add clobbers.
18254
18255 2009-01-06  Jan Hubicka  <jh@suse.cz>
18256             Kai Tietz  <kai.tietz@onevision.com>
18257
18258         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
18259         for w64 ABI.
18260         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
18261         (ix86_nsaved_regs): Count only general purpose regs.
18262         (ix86_nsaved_sseregs): New.
18263         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
18264         to 16 for w64; compute padding and size of sse reg save area.
18265         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
18266         general purpose regs.
18267         (ix86_emit_save_sse_regs_using_mov): New.
18268         (ix86_expand_prologue): Save SSE regs if needed.
18269         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
18270         (ix86_emit_restore_sse_regs_using_mov): New.
18271         (ix86_expand_epilogue): Save SSE regs if needed.
18272
18273 2009-01-06  Jan Hubicka  <jh@suse.cz>
18274             Kai Tietz  <kai.tietz@onevision.com>
18275
18276         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
18277         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
18278         functions when accumulate outgoing args is off.
18279
18280 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
18281
18282         PR bootstrap/38742
18283         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
18284         before using pseudos_have_intersected_live_ranges_p.
18285
18286         * ira-int.h (ira_assert): Always define.
18287
18288 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
18289
18290         AVX Programming Reference (December, 2008)
18291         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
18292         (_mm256_permute2_pd): Likewise.
18293         (_mm_permute2_ps): Likewise.
18294         (_mm256_permute2_ps): Likewise.
18295         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
18296         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
18297
18298         * config/i386/i386.c (ix86_builtins): Remove
18299         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
18300         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
18301         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
18302         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
18303         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
18304         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
18305         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
18306         __builtin_ia32_vpermil2ps256.
18307         (ix86_init_mmx_sse_builtins): Updated.
18308         (ix86_expand_args_builtin): Likewise.
18309
18310 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18311
18312         * pa.c (output_call): Relocate non-jump insns in the delay slot of
18313         long absolute calls when generating PA 2.0 code.
18314
18315 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
18316
18317         PR rtl-optimization/38583
18318         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
18319
18320         * params.def (ira-max-conflict-table-size): New.
18321
18322         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
18323
18324         * ira.h (ira_conflicts_p): New external definition.
18325
18326         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
18327         table.  Report this.  Return result of building.
18328         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
18329         building conflict table.
18330
18331         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
18332         (ira_color): Use ira_conflicts_p.
18333
18334         * global.c: Include ira.h.
18335         (pseudo_for_reload_consideration_p, build_insn_chain): Use
18336         ira_conflicts_p.
18337
18338         * Makefile.in (global.o): Add ira.h.
18339
18340         * ira-build.c (mark_all_loops_for_removal,
18341         propagate_some_info_from_allocno): New.
18342         (remove_unnecessary_allocnos): Call
18343         propagate_some_info_from_allocno.
18344         (remove_low_level_allocnos): New.
18345         (remove_unnecessary_regions): Add parameter.  Call
18346         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
18347         parameter to remove_unnecessary_regions.
18348         (ira_build): Remove all regions but root if the conflict table was
18349         not built.  Update conflict hard regs for allocnos crossing calls.
18350
18351         * ira.c (ira_conflicts_p): New global.
18352         (ira): Define and use ira_conflicts_p.
18353
18354         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
18355         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
18356         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
18357
18358 2009-01-06  Ben Elliston  <bje@au.ibm.com>
18359
18360         * gengtype-lex.l (YY_NO_INPUT): Define.
18361
18362 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18363
18364         PR c/34911
18365         * c-common.c (handle_vector_size_attribute): Also reject
18366         BOOLEAN_TYPE types.
18367
18368 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
18369
18370         PR tree-optimization/38492
18371         * graphite.c (rename_map_elt, debug_rename_elt,
18372         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
18373         rename_map_elt_info, eq_rename_map_elts,
18374         get_new_name_from_old_name, bb_in_sese_p): Moved around.
18375         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
18376         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
18377         (sese_build_livein_liveouts): New.
18378         (new_sese, free_sese): New.
18379         (new_scop): Call new_sese.
18380         (free_scop): Call free_sese.
18381         (rename_variables_from_edge, rename_phis_end_scop): Removed.
18382         (register_old_new_names): Renamed register_old_and_new_names.
18383         (register_scop_liveout_renames, add_loop_exit_phis,
18384         insert_loop_close_phis, struct igp,
18385         default_liveout_before_guard, add_guard_exit_phis,
18386         insert_guard_phis, copy_renames): New.
18387         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
18388         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
18389         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
18390         (scop_adjust_phis_for_liveouts): New.
18391         (gloog): Call scop_adjust_phis_for_liveouts.
18392
18393         * graphite.h (struct sese): Documented.  Added fields liveout,
18394         num_ver and livein.
18395         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
18396         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
18397         (struct scop): Added field liveout_renames.
18398         (SCOP_LIVEOUT_RENAMES): New.
18399
18400 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18401
18402         PR tree-optimization/38510
18403         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
18404         (translate_clast): Call recompute_all_dominators before
18405         graphite_verify.
18406         (gloog): Call recompute_all_dominators before graphite_verify.
18407
18408 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18409             Jan Sjodin  <jan.sjodin@amd.com>
18410
18411         PR tree-optimization/38500
18412         * graphite.c (create_sese_edges): Call fix_loop_structure after
18413         splitting blocks.
18414
18415 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
18416
18417         * config.gcc: Add m32r*-*-rtems*.
18418         * config/m32r/rtems.h: New file.
18419
18420 2009-01-05  Ben Elliston  <bje@au.ibm.com>
18421
18422         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
18423         (.po.pox): Likewise.
18424         (po/gcc.pot): Likewise.
18425
18426 2009-01-04  David S. Miller  <davem@davemloft.net>
18427
18428         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
18429         (STARTING_FRAME_OFFSET): Always set to zero.
18430
18431 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
18432
18433         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
18434         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
18435         fixed-point types, and vectors of the same.
18436
18437 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
18438
18439         * config/mips/sync.md (*mb_barrier): Rename to...
18440         (*memory_barrier): ...this.
18441
18442 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
18443
18444         * doc/extend.texi (Function Attributes): Move @cindex after @item
18445         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
18446         and put in alphabetical order. Fix 'target' name and put in order.
18447         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
18448         typos.
18449
18450 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
18451
18452         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
18453         (memory_barrier): Expand as unspec instead of unspec_volatile.
18454         Remove mem:BLK from insn operands.  Use Pmode scratch register.
18455         (*memory_barrier): Define as unspec instead of unspec_volatile.
18456         Use (match_dup 0) as input operand.
18457
18458         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
18459         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
18460         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
18461         scratch register.  Remove operand 1.
18462         (*stbar): Define as unspec instead of unspec_volatile.
18463         Use (match_dup 0) as input operand, remove (const_int 8).
18464         (*membar): Define as unspec instead of unspec_volatile.
18465         Use (match_dup 0) as input operand, remove input operand 2.
18466
18467         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
18468         (memory_barrier): Expand as unspec instead of unspec_volatile.
18469         Remove mem:BLK from insn operands.  Use Pmode scratch register.
18470         (*memory_barrier): Define as unspec instead of unspec_volatile.
18471         Use (match_dup 0) as input operand.
18472
18473         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
18474         Remove mem:BLK from insn operands.  Use Pmode scratch register.
18475         Set volatile flag on operand 0.
18476         (*memory_barrier): New insn pattern.
18477
18478         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
18479         insn operands.
18480         (*memory_barrier): Use (match_dup 0) as input operand.
18481
18482         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
18483         Remove mem:BLK from insn operands.  Use Pmode scratch register.
18484         Set volatile flag on operand 0.
18485         (*mb_internal): New insn pattern.
18486
18487         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
18488
18489 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
18490
18491         PR middle-end/38586
18492         * function.c (struct temp_slot): Move to the section of the file
18493         that deals with temp slots.  Remove field 'address'.
18494         (temp_slot_address_table): New hash table of address -> temp slot.
18495         (struct temp_slot_address_entry): New struct, items for the table.
18496         (temp_slot_address_compute_hash, temp_slot_address_hash,
18497         temp_slot_address_eq, insert_temp_slot_address): Support functions
18498         for the new table.
18499         (find_temp_slot_from_address): Rewrite to use the new hash table.
18500         (remove_unused_temp_slot_addresses): Remove addresses of temp
18501         slots that have been made available.
18502         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
18503         worker function for remove_unused_temp_slot_addresses.
18504         (assign_stack_temp_for_type): Don't clear the temp slot address list.
18505         Add the temp slot address to the address -> temp slot map.
18506         (update_temp_slot_address): Update via insert_temp_slot_address.
18507         (free_temp_slots): Call remove_unused_temp_slot_addresses.
18508         (pop_temp_slots): Likewise.
18509         (init_temp_slots): Allocate the address -> temp slot map, or empty
18510         the map if it is already allocated.
18511         (prepare_function_start): Initialize temp slot processing.
18512
18513 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
18514
18515         PR middle-end/38584
18516         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
18517         Calculate the size of all stack vars assuming no packing of stack
18518         vars will happen, replacing a quadratic algorithm with a linear one.
18519
18520 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
18521
18522         PR target/38707
18523         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
18524         can't be used.
18525
18526 2009-01-03  Diego Novillo  <dnovillo@google.com>
18527
18528         * doc/contrib.texi: Update contributions.
18529
18530 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
18531
18532         PR c++/38705
18533         * builtins.c (fold_builtin_memory_op): Give up if either operand
18534         is volatile.  Set srctype or desttype to non-qualified version
18535         of the other type.
18536
18537         PR c/38700
18538         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
18539         and FUNCTION_DECLs.
18540
18541 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
18542
18543         PR rtl-optimization/35805
18544         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
18545         problem if fast dce is able to remove any instructions.
18546         * dce.c (dce_process_block): Fix dump message.
18547
18548 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
18549
18550         PR 33649
18551         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
18552
18553 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
18554
18555         PR middle-end/38690
18556         * tree-flow.h (op_code_prio, op_prio): New prototypes.
18557         * tree-pretty-print.c (op_code_prio): New function.
18558         (op_prio): No longer static.  Use op_code_prio.
18559         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
18560         Use op_prio and op_code_prio to determine if () should be
18561         printed around operand(s) or not.
18562
18563         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
18564         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
18565         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
18566         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
18567         pp_character instead of pp_string for single letter printing.
18568
18569 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
18570
18571         * doc/extend.texi: Fix '#pragma GCC option' typo.
18572
18573 2009-01-02  Richard Guenther  <rguenther@suse.de>
18574
18575         * doc/install.texi (--enable-checking): Mention different
18576         default for stage1.
18577         (--enable-stage1-checking): Document.
18578
18579 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
18580
18581         PR middle-end/30142
18582         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
18583         case to be an error.
18584
18585 2009-01-02  Ben Elliston  <bje@au.ibm.com>
18586
18587         * config/fp-bit.h (pack_d): Constify argument.
18588         * config/fp-bit.c (makenan): Constify return type. Remove casts.
18589         (isnan): Constify argument.
18590         (isinf): Likewise.
18591         (iszero): Likewise.
18592         (pack_d): Likewise.
18593         (_fpadd_parts): Constify return type.
18594         (_fpmul_parts): Likewise.
18595         (_fpdiv_parts): Likewise.
18596
18597 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
18598
18599         PR c/36489
18600         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
18601         warn about overwriting initializer with side-effects or
18602         -Woverride-init if !IMPLICIT.
18603         (output_init_element): Likewise.  Pass IMPLICIT down to
18604         add_pending_init.
18605         (process_init_element): Add IMPLICIT argument.  Pass it down
18606         to output_init_element.
18607         (push_init_element, pop_init_level, set_designator): Adjust
18608         process_init_element callers.
18609         (set_nonincremental_init, set_nonincremental_init_from_string):
18610         Adjust add_pending_init callers.
18611         (output_pending_init_elements): Adjust output_init_element callers.
18612         * c-tree.h (process_init_element): Adjust prototype.
18613         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
18614         process_init_element callers.
18615
18616 \f
18617 Copyright (C) 2009 Free Software Foundation, Inc.
18618
18619 Copying and distribution of this file, with or without modification,
18620 are permitted in any medium without royalty provided the copyright
18621 notice and this notice are preserved.