OSDN Git Service

* config/i386/sse.md (copysign<mode>3): New expander.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
2
3         * config/i386/sse.md (copysign<mode>3): New expander.
4         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
5         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
6         Use ix86_build_const_vector.
7         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
8         IX86_BUILTIN_CPYSGNPD.
9         (builtin_description): Add __builtin_ia32_copysignps and
10         __builtin_ia32_copysignpd.
11         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
12         and BUILT_IN_COPYSIGNF.
13
14 2009-07-13  Jason Merrill  <jason@redhat.com>
15
16         * builtins.c (can_trust_pointer_alignment): New fn.
17         (get_pointer_alignment): Factor it out from here.
18         * tree.h: Declare it.
19
20 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
21
22         * config/rs6000/predicates.md (offsettable_mem_operand): Test
23         RTX_AUTOINC class.
24
25 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
26
27         PR debug/40705
28         PR c++/403057
29         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
30
31 2009-07-14  Richard Guenther  <rguenther@suse.de>
32             Andrey Belevantsev <abel@ispras.ru>
33
34         PR middle-end/40745
35         * cfgexpand.c (partition_stack_vars): Do not bother to update
36         alias information when not optimizing.
37
38 2009-07-14  Richard Guenther  <rguenther@suse.de>
39         Andrey Belevantsev <abel@ispras.ru>
40
41         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
42         (pt_solution_set): Likewise.
43         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
44         * tree-ssa-structalias.c (pt_solution_set): New function.
45         * final.c (rest_of_clean_state): Free SSA data structures.
46         * print-rtl.c (print_decl_name): Remove.
47         (print_mem_expr): Implement in terms of print_generic_expr.
48         * alias.c (ao_ref_from_mem): New function.
49         (rtx_refs_may_alias_p): Likewise.
50         (true_dependence): Query alias-export info.
51         (canon_true_dependence): Likewise.
52         (write_dependence_p): Likewise.
53         * tree-dfa.c (get_ref_base_and_extent): For void types leave
54         size unknown.
55         * emit-rtl.c (component_ref_for_mem_expr): Remove.
56         (mem_expr_equal_p): Use operand_equal_p.
57         (set_mem_attributes_minus_bitpos): Do not use
58         component_ref_for_mem_expr.
59         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
60         (update_alias_info_with_stack_vars): Likewise.
61         (partition_stack_vars): Call update_alias_info_with_stack_vars.
62         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
63         explicitly nor clear stmt operands.
64         Free the decl-to-pointer map.
65         * tree-optimize.c (execute_free_datastructures): Do not free
66         SSA data structures here.
67         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
68         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
69         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
70         dependencies.
71         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
72
73 2009-07-13  DJ Delorie  <dj@redhat.com>
74
75         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
76         unrolling at the right iteration count.
77
78         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
79         calculations.
80
81 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
82         
83         * haifa-sched.c (rank_for_schedule): Introduced flags to
84         enable/disable individual scheduling heuristics.
85         * common.opt: Introduced flags to enable/disable individual
86         heuristics in the scheduler.    
87         * doc/invoke.texi: Introduced flags to enable/disable individual
88         heuristics in the scheduler.
89         
90 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
91
92         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
93         config/i386/mingw-tls.c.
94         * config/i386/mingw-tls.c: Removed.
95
96 2009-07-13  Ira Rosen  <irar@il.ibm.com>
97
98         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the 
99         checks access only relevant statements.
100         (vectorizable_reduction): Likewise.
101
102 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
103
104         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
105         just for 32-bit case.
106
107 2009-07-12  Jan Hubicka  <jh@suse.cz>
108
109         PR tree-optimization/40585
110         * except.c (expand_resx_expr): When there already is resume
111         instruction, produce linked list.
112         (build_post_landing_pads): Assert that resume is empty.
113         (connect_post_landing_pads): Handle resume lists.
114         (dump_eh_tree): Dump resume list.
115
116 2009-07-12  Ira Rosen  <irar@il.ibm.com>
117
118         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
119         with additional argument.
120         * tree-vectorizer.h (enum vect_def_type): Add
121         vect_double_reduction_def.
122         (vect_is_simple_reduction): Add argument.
123         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
124         indentation.
125         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
126         vect_is_simple_reduction with additional argument.
127         (vect_analyze_loop_operations): Handle exit phi nodes in case of
128         double reduction.
129         (reduction_code_for_scalar_code): Handle additional codes by
130         returning ERROR_MARK for them. Fix comment and indentation.
131         (vect_is_simple_reduction): Fix comment, add argument to specify
132         double reduction. Detect double reduction.
133         (get_initial_def_for_induction): Fix indentation.
134         (get_initial_def_for_reduction): Fix comment and indentation.
135         Handle double reduction. Create initial definitions that do not
136         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
137         (vect_create_epilog_for_reduction): Fix comment, add argument to
138         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
139         epilogue result extraction. Create double reduction phi node and
140         replace relevant uses.
141         (vectorizable_reduction): Call vect_is_simple_reduction with
142         additional argument. Fix indentation. Update epilogue code treatment
143         according to the changes in reduction_code_for_scalar_code. Check
144         for double reduction. Call vect_create_epilog_for_reduction with
145         additional argument.
146         * tree-vect-stmts.c (process_use): Handle double reduction, update
147         documentation.
148         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
149         (vect_get_vec_def_for_operand): Likewise.
150
151 2009-07-12  Danny Smith  <dansmister@gmail.com>
152
153         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
154         dllexport if !TREE_PUBLIC.
155         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
156
157 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
158
159         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
160         (avr_extra_arch_macro) Remove declatation.
161         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
162         (avr_extra_arch_macro) Declare as static.
163         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
164
165 2009-07-11  Jan Hubicka  <jh@suse.cz>
166
167         PR middle-end/48388
168         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
169
170 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
171
172         PR debug/40713
173         * dwarf2out.c (dw_fde_struct): Add in_std_section and
174         cold_in_std_section bits.
175         (dwarf2out_begin_prologue): Initialize them.
176         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
177         if already covered by text_section or cold_text_section range.
178
179         PR rtl-optimization/40667
180         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
181         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
182         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
183         * config/i386/i386.c (ix86_minimum_alignment): New function.
184         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
185         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
186         * emit-rtl.c (gen_reg_rtx): Likewise.
187         * function.c (assign_parms): Likewise.  If nominal_type needs
188         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
189         rather than passed_type's alignment.
190
191         PR target/40668
192         * function.c (assign_parm_setup_stack): Adjust
193         MEM_OFFSET (data->stack_parm) if promoted_mode is different
194         from nominal_mode on big endian.
195
196 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
197
198         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
199
200 2009-07-10  DJ Delorie  <dj@redhat.com>
201
202         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
203
204 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
205
206         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
207         attribute.
208         (thumb2_cbnz): Likewise.
209
210 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
211
212         PR target/39079
213         * config.gcc (supported_defaults): Add synci.
214         (with_synci): Add validation.
215         (all_defaults): Add synci.
216         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
217         ISA_HAS_SYNCI.
218         (synci): Same.
219         * config/mips/mips.opt (msynci): New option.
220         * config/mips/mips.c (mips_override_options): Warn on use of
221         -msynci for targets that do now support it.
222         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
223         msynci.
224         * gcc/doc/invoke.texi (-msynci): Document the new option.
225         * doc/install.texi (--with-synci): Document the new option.
226
227 2009-07-10  Richard Guenther  <rguenther@suse.de>
228
229         PR tree-optimization/40496
230         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
231         the PHI result with a compatible type.
232
233 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
234
235         PR 25509
236         PR 40614
237         * c.opt (Wunused-result): New.
238         * doc/invoke.texi: Document it.
239         * c-common.c (c_warn_unused_result): Use it.
240
241 2009-07-09  DJ Delorie  <dj@redhat.com>
242
243         * targhooks.c (default_target_can_inline_p): Rename from
244         default_target_option_can_inline_p.
245         * targhooks.h (default_target_can_inline_p): Likewise.
246         * target-def.h (TARGET_CAN_INLINE_P): Rename from
247         TARGET_OPTION_CAN_INLINE_P.
248         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
249         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
250         (mep_target_can_inline_p): Rename from
251         mep_target_option_can_inline_p.
252
253         PR target/40626
254         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
255         registers used to pass vectors.
256
257         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
258
259 2009-07-09  Tom Tromey  <tromey@redhat.com>
260
261         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
262         * config/mmix/mmix.c: Include dwarf2.h.
263         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
264         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
265         * config/sh/sh.c: Include dwarf2.h.
266         * config/i386/i386.c: Include dwarf2.h.
267         * Makefile.in (DWARF2_H): Remove 'elf'.
268         * except.c: Include dwarf2.h.
269         * unwind-dw2.c: Include dwarf2.h.
270         * dwarf2out.c: Include dwarf2.h.
271         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
272         * unwind-dw2-fde.c: Include dwarf2.h.
273         * dwarf2asm.c: Include dwarf2.h.
274
275 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
276
277         * haifa-sched.c (insn_finishes_cycle_p): New static function.
278         (max_issue): Use it.
279         * sched-int.h (struct sched_info: insn_finishes_block_p): New
280         scheduler hook.
281         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
282         (region_sched_info): Update.
283         * sched-ebb.c (ebb_sched_info): Update.
284         * modulo-sched.c (sms_sched_info): Update.
285         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
286
287 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
288
289         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
290
291 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
292
293         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen. 
294
295 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
296
297         PR middle-end/40692
298         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
299         arg1 with arg01 if arg1 is already INTEGER_CST.
300
301 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
302
303         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
304         Transform (and (truncate)) into (truncate (and)).
305
306 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
307
308         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
309         creating LHS paradoxical subregs.  Fix surrounding returns to
310         use NULL_RTX rather than 0.
311
312 2009-07-08  DJ Delorie  <dj@redhat.com>
313
314         * config/mep/mep.c: (mep_option_can_inline_p): New.
315         (TARGET_OPTION_CAN_INLINE_P): Define.
316
317 2009-07-08  Mark Wielaard  <mjw@redhat.com>
318
319         PR debug/40659
320         * dwarf2out.c (add_data_member_location_attribute): When we have
321         only a constant offset don't emit a new location description using
322         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
323         dwarf_version > 2.
324
325 2009-07-08  Richard Henderson  <rth@redhat.com>
326
327         PR target/38900
328         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
329         (enum reg_class): Add CLOBBERED_REGS.
330         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
331         * config/i386/i386.c (ix86_conditional_register_usage): Moved
332         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
333         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
334         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
335         force 64-bit sibcalls into R11.
336         * config/i386/constraints.md (U): New constraint.
337         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
338         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
339         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
340
341 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
342
343         * basic-block.h (dump_regset, debug_regset): Remove duplicate
344         prototypes.
345         * c-objc-common.h (c_initialize_diagnostics): Ditto.
346         * ebitmap.h (dump_ebitmap): Ditto.
347         * optabs.h (optab_libfunc): Ditto.
348         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
349         * tree-flow.h (vect_can_force_dr_alignment_p,
350         get_vectype_for_scalar_type): Ditto.
351         (vectorize_loops): Move prototype to ...
352         * tree-vectorizer.h: ... here. Also, adjust comment.
353         (vect_set_verbosity_level): Remove duplicate prototype.
354         * tree-ssa-loop.c: Include tree-vectorizer.h.
355         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
356
357 2009-07-08  Nick Clifton  <nickc@redhat.com>
358
359         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
360         forward slash.
361
362 2009-07-08  DJ Delorie  <dj@redhat.com>
363
364         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
365         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
366         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
367         written to.
368         * config/mep/intrinsics.md: Regenerated.
369         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
370         registers when asm() or calls are detected.
371
372 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
373
374         PR c++/31246
375         * gimplify.c (gimplify_expr): Propagate no_warning flag when
376         gimplifying.
377         * gimple (gimple_build_call_from_tree): Likewise.
378         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
379         no_warning flag before warning.
380
381 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
382
383         * tree.c (set_expr_locus): Remove.
384         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
385         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
386         EXPR_LOCATION.
387         * gimplify.c (internal_get_tmp_var): Likewise.
388         (gimplify_call_expr): Likewise.
389         (gimplify_one_sizepos): Likewise.
390
391 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
392
393         PR debug/40666
394         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
395         to variables for debugging purposes.
396
397 2009-06-23  Mark Loeser  <mark@halcy0n.com>
398
399         PR build/40010
400         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
401
402 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
403
404         * pretty-print.c (pp_base_format): Remove %J.
405         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
406         gcc_cxxdiag_char_table): Likewise.
407         (init_dynamic_diag_info): Likewise.
408
409 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
410
411         * pretty-print.c (pp_base_format): Remove %H.
412         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
413         gcc_cxxdiag_char_table): Likewise.
414         (init_dynamic_diag_info): Likewise.
415         * config/mep/mep.c (mep_select_section): Likewise.
416
417 2009-07-07  Duncan Sands  <baldrick@free.fr>
418
419         * final.c (pass_clean_state): Give the pass a name.
420         * passes.c (pass_rest_of_compilation): Likewise.
421         * tree-optimize.c (pass_all_optimizations): Likewise.
422
423 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
424
425         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
426         an extra 'decl' for error_at.
427
428 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
429
430         PR middle-end/40669
431         * tree-tailcall.c (adjust_return_value_with_ops,
432         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
433         if it has complex or vector type.
434
435 2009-07-07  Olivier Hainque  <hainque@adacore.com>
436
437         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
438         pthread symbols.
439
440 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
441
442         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
443
444 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
445
446         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
447         * c-decl.c: Likewise.
448         * function.c: Likewise.
449         * varasm.c: Likewise.
450         * tree-ssa.c: Likewise.
451         * c-common.c: Likewise.
452         * tree-cfg.c: Likewise.
453         * config/spu/spu.c: Likewise.
454         * config/ia64/ia64.c: Likewise.
455         * config/v850/v850.c: Likewise.
456
457 2009-07-06  DJ Delorie  <dj@redhat.com>
458
459         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
460         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
461         unspecified accesses to control registers.
462         * config/mep/intrinsics.md: Regenerate.
463         * config/mep/intrinsics.h: Regenerate.
464         * config/mep/mep-intrin.h: Regenerate.
465
466 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
467
468         * c-lex.c: Replace %H by an explicit location. Update all calls.
469         * c-common.c: Likewise.
470         * c-decl.c: Likewise.
471         * c-typeck.c: Likewise.
472         * fold-const.c: Likewise.
473         * gimplify.c: Likewise.
474         * stmt.c: Likewise.
475         * tree-cfg.c: Likewise.
476         * tree-ssa-loop-niter.c: Likewise.
477         * tree-vrp.c: Likewise.
478         * value-prof.c: Likewise.
479
480 2009-07-06  Diego Novillo  <dnovillo@google.com>
481
482         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
483         if it has one.  Handle cases where VAR does not have an
484         annotation or cfun is NULL.
485
486 2009-07-06  Diego Novillo  <dnovillo@google.com>
487
488         * tree.c: Include debug.h.
489         (initialize_tree_contains_struct): New.
490         (init_ttree): Call it.
491         (tree_node_structure_for_code): Factor out of ...
492         (tree_node_structure): ... here.
493         * treestruct.def (TS_PHI_NODE): Remove.
494         (TS_GIMPLE_STATEMENT): Remove.
495
496 2009-07-06  Diego Novillo  <dnovillo@google.com>
497
498         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
499         (debug_tree_chain): Handle cycles.
500
501 2009-07-06  Nick Clifton  <nickc@redhat.com>
502             DJ Delorie  <dj@redhat.com>
503
504         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
505         __FMOVD_ENABLED__ is defined.
506         * config/sh/sh.h
507         (TARGET_FMOVD): Provide a default definition.
508         (MASK_FMOVD): Likewise.
509         (TARGET_CPU_CPP_BUILTINS): Define
510         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
511         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
512         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
513         (split for DF load from memory into register): Also handle
514         MEMs which consist of REG+DISP addressing.
515         (split for DF store from register to memory): Likewise.
516         (movsf_ie): Always use single fp_mode.
517         * config/sh/sh.c (sh_override_options): Do not automatically
518         enable TARGET_MOVD for the SH2A when supporting doubles - leave
519         that to the -mfmovd command line switch.
520         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
521         (fldi_ok): Always allow.
522         * config/sh/sh.opt (mfmovd): Remove this switch.
523         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
524
525 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
526             Kaz Kojima  <kkojima@gcc.gnu.org>
527
528         PR rtl-optimization/30807
529         * postreload.c (reload_combine): For every new use of REG_SUM,
530         record the use of BASE.
531
532 2009-07-06  Jan Hubicka  <jh@suse.cz>
533
534         * params.def: Revert my accidental commit at 2009-06-30.
535
536 2009-07-04  Ian Lance Taylor  <iant@google.com>
537
538         PR target/40636
539         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
540         EXPORTED_CONST.
541         (mingw_format_attribute_overrides): Likewise.
542
543 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
544
545         PR debug/40596
546         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
547         don't check cfa.reg.  Instead of cfa.indirect use
548         fde && fde->drap_reg != INVALID_REGNUM test.
549
550 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
551
552         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
553
554 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
555
556         PR target/40587
557         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
558
559 2009-07-03  Richard Guenther  <rguenther@suse.de>
560
561         PR tree-optimization/40640
562         * tree-switch-conversion.c (build_arrays): Perform arithmetic
563         in original type.
564
565 2009-07-03  Jan Hubicka  <jh@suse.cz>
566
567         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
568         for size, reduce amount of inlining.
569
570 2009-07-03  Richard Guenther  <rguenther@suse.de>
571
572         PR middle-end/34163
573         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
574         if t +- x is known to not overflow and the conversion widens the
575         operation.
576         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
577
578 2009-07-03  Jan Hubicka  <jh@suse.cz>
579
580         * ipa-pure-const.c (analyze): Update loop optimizer init.
581         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
582         try_remove_empty_loop, remove_empty_loops): Remove.
583         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
584         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
585         to mark regular loops as neccesary.
586         (degenerate_phi_p): New function.
587         (propagate_necessity, remove_dead_phis): Use it.
588         (forward_edge_to_pdom): Likewise.
589         (eliminate_unnecessary_stmts): Take care to remove uses of results of
590         virtual PHI nodes that became unreachable.
591         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
592         * tree-flow.h (remove_empty_loops): Remove.
593         * passes.c (init_optimization_passes): Remove.
594
595 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
596
597         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
598         can_create_pseudo_p.
599         (*fix_trunc<mode>_i387_1): Ditto.
600         (*floathi<mode>2_1): Ditto.
601         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
602         (*fistdi2_1): Ditto.
603         (*fist<mode>2_1): Ditto.
604         (frndintxf2_floor): Ditto.
605         (*fist<mode>2_floor_1): Ditto.
606         (frndintxf2_ceil): Ditto.
607         (*fist<mode>2_ceil_1): Ditto.
608         (frndintxf2_trunc): Ditto.
609         (frndintxf2_mask_pm): Ditto.
610         (fxam<mode>2_i387_with_temp): Ditto.
611         * config/i386/sse.md (mulv16qi3): Ditto.
612         (*sse2_mulv4si3): Ditto.
613         (mulv2di3): Ditto.
614         (sse4_2_pcmpestr): Ditto.
615         (sse4_2_pcmpistr): Ditto.
616
617 2009-07-03  Jan Hubicka  <jh@suse.cz>
618
619         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
620         (mark_stmt_necessary): Set it.
621         (mark_operand_necessary): Set it.
622         (mark_control_dependent_edges_necessary): Set it.
623         (mark_virtual_phi_result_for_renaming): New function.
624         (get_live_post_dom): New function.
625         (forward_edge_to_pdom): New function.
626         (remove_dead_stmt): Fix handling of control dependences.
627         (tree_dce_init): Init new bitmap.
628         (tree_dce_done): Free it.
629
630 2009-07-02  Richard Guenther  <rguenther@suse.de>
631
632         PR bootstrap/40617
633         * tree-ssa-structalias.c (new_var_info): Initialize
634         is_restrict_var.
635
636 2009-07-02  Jan Hubicka  <jh@suse.cz>
637
638         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
639         local.
640
641 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
642
643         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
644         instead of recomputing it.  Adjust calls.
645         (emit_store_flag): Adjust recursive calls.
646
647 2009-07-02  Richard Guenther  <rguenther@suse.de>
648
649         * tree-ssa-live.c (remove_unused_locals): Do not remove
650         heap variables.
651         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
652         of DECL_EXTERNAL for HEAP variables.
653         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
654         HEAP variables.  Do not adjust RESTRICT vars.
655         (find_what_var_points_to): Nobody cares if something
656         points to READONLY.
657
658 2009-07-02  Ben Elliston  <bje@au.ibm.com>
659
660         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
661         pc_low and pc_high declarations to the top of the function.
662
663 2009-07-01  DJ Delorie  <dj@redhat.com>
664
665         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
666         registers as fixed.
667         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
668         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
669         unspecified accesses to control registers.
670         * config/mep/intrinsics.md: Regenerate.
671         * config/mep/intrinsics.h: Regenerate.
672         * config/mep/mep-intrin.h: Regenerate.
673
674 2009-07-01  Anthony Green  <green@moxielogic.com>
675
676         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
677         instruction when possible.
678         (moxie_expand_prologue): Ditto.  Also, save an instruction and
679         some complexity by popping off of $r12 instead of $sp.
680         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
681         operands.
682
683 2009-07-01  Richard Henderson  <rth@redhat.com>
684
685         PR bootstrap/40347
686         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
687         contained no insns, reposition note before last insn.
688
689 2009-07-01  Richard Henderson  <rth@redhat.com>
690
691         PR debug/40431
692         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
693         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
694
695 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
696
697         PR bootstrap/40558
698         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
699         darwin9 for printing reg addresses with %y.
700
701 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
702
703         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
704         truncation from operands in binary operations.
705
706 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
707
708         Revert:
709         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
710         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
711         subreg of op0 to the original op0.
712
713         * expmed.c (store_bit_field_1): Use a temporary as the destination
714         instead of a paradoxical subreg when we need to truncate the result.
715
716 2009-07-01  DJ Delorie  <dj@redhat.com>
717
718         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
719         names to VLIW variants.
720         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
721         * config/mep/intrinsics.md: Regenerate.
722         * config/mep/intrinsics.h: Regenerate.
723         * config/mep/mep-intrin.h: Regenerate.
724
725 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
726
727         PR debug/40462
728         * jump.c (returnjump_p): Revert last patch.
729         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
730
731 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
732
733         PR target/40575
734         * pa.md (casesi32p): Use jump table label to determine the offset
735         of the jump table.
736         (casesi64p): Likewise.
737
738         * pa.c (forward_branch_p): Return bool type.  Use instruction
739         addresses when available.  Assert that INSN has a jump label.
740         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
741         have a jump label.
742
743 2009-07-01  Richard Guenther  <rguenther@suse.de>
744
745         PR tree-optimization/19831
746         * tree-ssa-dce.c (propagate_necessity): Calls to functions
747         that only act as barriers do not make any previous stores necessary.
748         * tree-ssa-structalias.c (handle_lhs_call): Delay making
749         HEAP variables global, do not add a constraint from nonlocal.
750         (find_func_aliases): Handle escapes through return statements.
751         (compute_points_to_sets): Make escaped HEAP variables global.
752
753 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
754
755         PR bootstrap/40597
756         * expmed.c (emit_store_flag): Perform a conversion if necessary,
757         after reducing a DImode cstore to SImode.
758
759 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
760
761         * expr.c (expand_expr_real_1): Reinstate fallthrough to
762         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
763
764 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
765
766         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
767         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
768         to 0.
769         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
770         and umod_optab if TARGET_BSD_DIVMOD.
771         * config/vax/lib1funcs.asm: New file.
772         * config/vax/t-linux: New file.
773         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
774
775 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
776
777         PR c++/40566
778         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
779         to type arguments that have void type.
780
781         PR debug/40573
782         * dwarf2out.c (gen_formal_parameter_die): Call
783         equate_decl_number_to_die if node is different from origin.
784
785 2009-06-30  Anthony Green  <green@moxielogic.com>
786
787         Clean up moxie port for --enable-build-with-cxx.
788         * config/moxie/moxie.c (moxie_function_value): First two
789         parameters are const_tree, not tree.
790         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
791         (REG_CLASS_NAMES): Ditto.
792         (REGNO_REG_CLASS): Ditto.
793         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
794         (moxie_function_value): Fix constyness of arguments.
795
796 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
797
798         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
799         finalize_size_functions before further processing.
800         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
801         (variable_size): Call self_referential_size on size expressions
802         that contain a PLACEHOLDER_EXPR.
803         (size_functions): New static variable.
804         (copy_self_referential_tree_r): New static function.
805         (self_referential_size): Likewise.
806         (finalize_size_functions): New global function.
807         * tree.c: Include tree-inline.h.
808         (push_without_duplicates): New static function.
809         (find_placeholder_in_expr): New global function.
810         (substitute_in_expr) <tcc_declaration>: Return the replacement object
811         on equality.
812         <tcc_expression>: Likewise.
813         <tcc_vl_exp>: If the replacement object is a constant, try to inline
814         the call in the expression.
815         * tree.h (finalize_size_functions): Declare.
816         (find_placeholder_in_expr): Likewise.
817         (FIND_PLACEHOLDER_IN_EXPR): New macro.
818         (substitute_placeholder_in_expr): Update comment.
819         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
820         is true.
821         (copy_tree_body_r): Likewise.
822         (copy_tree_body): New static function.
823         (maybe_inline_call_in_expr): New global function.
824         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
825         (maybe_inline_call_in_expr): Declare.
826         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
827         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
828         GIMPLE_H.
829
830 2009-06-30  Richard Guenther  <rguenther@suse.de>
831
832         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
833         continue walking.
834         (propagate_necessity): Do not mark reaching defs of stores
835         as necessary.
836
837 2009-06-30  Jan Hubicka  <jh@suse.cz>
838
839         * cfgloopanal.c (check_irred): Move into ...
840         (mark_irreducible_loops): ... here; return true if ireducible
841         loops was found.
842         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
843         (analyze_function): Try to prove loop finiteness.
844         * cfgloop.h (mark_irreducible_loops): Update prototype.
845         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
846
847 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
848
849         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
850
851 2009-06-30  Ira Rosen  <irar@il.ibm.com>
852
853         PR tree-optimization/40542
854         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile 
855         types.
856
857 2009-06-30  Martin Jambor  <mjambor@suse.cz>
858
859         PR tree-optimization/40582
860         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
861         than useless_type_conversion_p.
862         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
863         proper place.
864
865 2009-06-30  Martin Jambor  <mjambor@suse.cz>
866
867         PR middle-end/40554
868         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
869
870 2009-06-30  Richard Guenther  <rguenther@suse.de>
871
872         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
873         use ao_ref references.
874         (walk_aliased_vdefs): Likewise.
875         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
876         * tree-ssa-dce.c (struct ref_data): Remove.
877         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
878         (mark_aliased_reaching_defs_necessary): Adjust.
879         (mark_all_reaching_defs_necessary_1): Likewise.
880
881 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
882
883         PR boostrap/40597
884         * expmed.c (emit_cstore): New name of emit_store_flag_1.
885         (emit_store_flag_1): Extract from emit_store_flag, adjust
886         calls to (what now is) emit_cstore.
887         (emit_store_flag): Call emit_store_flag_1 and also use it
888         for what used to be recursive calls.
889
890 2009-06-30  Wei Guozhi  <carrot@google.com>
891
892         PR/40416
893         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
894         if the target bb post dominates from bb.
895         * config/i386/i386.c (memory_address_length): Check existence of base
896         register before using it.
897
898 2009-06-30  Nick Clifton  <nickc@redhat.com>
899             DJ Delorie  <dj@redhat.com>
900
901         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
902         __FMOVD_ENABLED__ is defined.
903         * config/sh/sh.h
904         (TARGET_FMOVD): Provide a default definition.
905         (MASK_FMOVD): Likewise.
906         (TARGET_CPU_CPP_BUILTINS): Define
907         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
908         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
909         two fmov instructions depending upon whether TARGET_FMOVD is
910         enabled.
911         (split for DF load from memory into register): Also handle
912         MEMs which consist of REG+DISP addressing.
913         (split for DF store from register to memory): Likewise.
914         * config/sh/sh.opt (mfmovd): Remove this switch.
915         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
916         * config/sh/sh.c (sh_override_options): Do not automatically
917         enable TARGET_MOVD for the SH2A when supporting doubles - leave
918         that to the -mfmovd command line switch.
919
920         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
921         the SH4 and SH4A.
922         (fldi_ok): Always allow.
923         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
924
925 2009-06-29  DJ Delorie  <dj@redhat.com>
926
927         * doc/install.texi (mep-x-elf): Correct chip's full name.
928
929 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
930
931         * doc/extend.texi: Fix typo.
932
933 2009-06-29  Tom Tromey  <tromey@redhat.com>
934
935         * dwarf2.h: Remove.
936         * Makefile.in (DWARF2_H): New variable.
937         (except.o): Use it.
938         (dwarf2out.o): Likewise.
939         (dwarf2asm.o): Likewise.
940         * config/i386/t-i386: Use DWARF2_H.
941         * except.c: Include elf/dwarf2.h.
942         * unwind-dw2.c: Include elf/dwarf2.h.
943         * dwarf2out.c: Include elf/dwarf2.h.
944         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
945         <dtprel>: New field.
946         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
947         (size_of_loc_descr): Likewise.
948         (output_loc_operands_raw): Likewise.
949         (output_loc_operands): Handle new dtprel field.
950         (loc_checksum): Update.
951         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
952         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
953         * unwind-dw2-fde.c: Include elf/dwarf2.h.
954         * dwarf2asm.c: Include elf/dwarf2.h.
955         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
956         * config/mmix/mmix.c: Include elf/dwarf2.h.
957         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
958         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
959         * config/sh/sh.c: Include elf/dwarf2.h.
960         * config/i386/i386.c: Include elf/dwarf2.h.
961
962 2009-06-29  DJ Delorie  <dj@redhat.com>
963
964         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
965
966         * doc/extend.texi: Add MeP attributes and pragmas.
967         * doc/invoke.text: Add MeP Options.
968         * doc/contrib.texi: Add MeP contribution.
969         * doc/md.texi: Add MeP constraints.
970         * doc/install.texi: Add MeP target.
971
972 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
973
974         * target.h (struct gcc_target): Add frame_pointer_required field.
975         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
976         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
977         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
978         hook.
979         * reload1.c (update_eliminables): (Ditto.).
980         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
981         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
982         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
983
984         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
985
986         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
987         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
988         (arm_frame_pointer_required): New function.
989
990         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
991         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
992         (avr_frame_pointer_required_p): Declare as static.
993         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
994
995         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
996         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
997         (bfin_frame_pointer_required): Make as static, change return type
998         to bool.
999         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
1000
1001         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
1002         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1003         (cris_frame_pointer_required): New function.
1004         
1005         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
1006
1007         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
1008         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1009         (fr30_frame_pointer_required): New function.
1010         
1011         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
1012         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1013         (frv_frame_pointer_required): Make as static, change return type
1014         to bool.
1015         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
1016
1017         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
1018         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1019         (ix86_frame_pointer_required): Make as static, change return type to
1020         bool.
1021         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
1022
1023         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
1024         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1025
1026         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
1027
1028         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
1029         
1030         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
1031
1032         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
1033         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1034         (mips_frame_pointer_required): Make as static.
1035         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
1036         
1037         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
1038         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1039         (mmix_frame_pointer_required): Mew function.
1040
1041         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
1042         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1043
1044         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
1045
1046         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
1047
1048         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
1049
1050         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
1051         (CAN_ELIMINATE): Redefine.
1052         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
1053         (sparc_frame_pointer_required): New function.
1054         (sparc_can_eliminate): New function.
1055         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
1056
1057         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
1058         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1059
1060         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
1061         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
1062         (xtensa_frame_pointer_required): Make as static, change return type
1063         to bool.
1064         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
1065         Remove.
1066
1067 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
1068
1069         * doc/plugins.texi: Document PLUGIN_START_UNIT.
1070         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
1071         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
1072         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
1073         (register_callback): Handle PLUGIN_START_UNIT.
1074         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
1075
1076 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
1077
1078         * tree.c (process_call_operands): Propagate TREE_READONLY from the
1079         operands.
1080         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
1081         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
1082
1083 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
1084
1085         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
1086         move cost.
1087
1088 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
1089
1090         * doc/extend.texi (Additional Floating Types): __float128 is also
1091         supported on i386 targets.
1092
1093 2009-06-29  Richard Guenther  <rguenther@suse.de>
1094
1095         PR middle-end/14187
1096         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
1097         flag.
1098         (pt_solutions_same_restrict_base): Declare.
1099         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
1100         flag.
1101         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
1102         (make_constraint_from, make_copy_constraint): Move earlier.
1103         (make_constraint_from_heapvar): New function.
1104         (make_constraint_from_restrict): Likewise.
1105         (handle_lhs_call): Use it.
1106         (find_func_aliases): Use it to track conversions to restrict
1107         qualified pointers.
1108         (struct fieldoff): Add only_restrict_pointers flag.
1109         (push_fields_onto_fieldstack): Initialize it.
1110         (create_variable_info_for): Track global restrict qualified pointers.
1111         (intra_create_variable_infos): Use make_constraint_from_heapvar.
1112         Track restrict qualified pointer arguments.
1113         (set_uids_in_ptset): Use varinfo is_global_var flag.
1114         (find_what_var_points_to): Set the vars_contains_restrict flag.
1115         Always create the points-to solution for sets including restrict tags.
1116         (pt_solutions_same_restrict_base): New function.
1117         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
1118         qualified pointers use pt_solutions_same_restrict_base as
1119         additional source for disambiguation.
1120
1121 2009-06-29  Richard Guenther  <rguenther@suse.de>
1122
1123         PR middle-end/38212
1124         * alias.c (find_base_decl): Remove.
1125         (get_deref_alias_set_1): Remove restrict handling.
1126         * c-common.c (c_apply_type_quals_to_decl): Do not set
1127         DECL_POINTER_ALIAS_SET.
1128         * gimplify.c (find_single_pointer_decl_1): Remove.
1129         (find_single_pointer_decl): Likewise.
1130         (internal_get_tmp_var): Remove restrict handling.
1131         (gimple_regimplify_operands): Likewise.
1132         * omp-low.c (expand_omp_atomic_pipeline): Do not set
1133         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
1134         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
1135         * tree.c (restrict_base_for_decl): Remove.
1136         (init_ttree): Do not allocate it.
1137         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
1138         LABEL_DECL_UID for label decls.
1139         (copy_node_stat): Do not copy restrict information.
1140         (decl_restrict_base_lookup): Remove.
1141         (decl_restrict_base_insert): Likewise.
1142         (print_restrict_base_statistics): Likewise.
1143         (dump_tree_statistics): Do not call print_restrict_base_statistics.
1144         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
1145         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
1146         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
1147         (LABEL_DECL_UID): Adjust.
1148         (DECL_BASED_ON_RESTRICT_P): Remove.
1149         (DECL_GET_RESTRICT_BASE): Likewise.
1150         (SET_DECL_RESTRICT_BASE): Likewise.
1151         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
1152
1153         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
1154         instead of DECL_POINTER_ALIAS_SET.
1155         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
1156         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
1157         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
1158
1159 2009-06-29  Richard Guenther  <rguenther@suse.de>
1160
1161         PR tree-optimization/40579
1162         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
1163         the IL to simplify has constants that overflowed.
1164
1165 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
1166
1167         PR tree-optimization/40550
1168         * tree-vect-generic.c (expand_vector_operations_1): Compute in
1169         vector_compute_type only when the size of vector_compute_type is
1170         less than the size of type.
1171
1172 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
1173
1174         * fold-const.c (contains_label_1): Fix comments.
1175         (contains_label_p): Do not walk trees multiple time.
1176
1177 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1178
1179         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
1180         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
1181         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
1182         ix86_fp_comparison_operator.
1183         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
1184         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
1185         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
1186         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
1187         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
1188         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
1189         (related splits): Change predicate to ix86_fp_comparison_operator.
1190         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
1191         instead of ix86_fp_comparison_codes.
1192         (ix86_trivial_fp_comparison_operator,
1193         ix86_fp_comparison_operator): New.
1194         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
1195         (ix86_expand_compare): Eliminate last two parameters.
1196         (ix86_fp_jump_nontrivial_p): Kill.
1197         * config/i386/i386.c (put_condition_code): Eliminate call to
1198         ix86_fp_comparison_codes and subsequent assertion.
1199         (ix86_fp_comparison_codes): Eliminate.
1200         (ix86_fp_swap_condition): New.
1201         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
1202         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
1203         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
1204         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
1205         and ix86_fp_swap_condition.
1206         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
1207         Use ix86_fp_comparison_strategy.
1208         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
1209         (ix86_fp_jump_nontrivial_p): Eliminate.
1210         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
1211         call to ix86_expand_compare.
1212         (ix86_split_fp_branch, ix86_expand_setcc,
1213         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
1214         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
1215
1216 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1217
1218         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
1219         related to jump_clobbers.
1220         * config/arm/arm.md (conds): Remove jump_clob case.
1221         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
1222         splits): Change comparison_operator to arm_comparison_operator.
1223         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
1224         Eliminate.
1225
1226 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1227
1228         * dojump.c (do_compare_rtx_and_jump): Try swapping the
1229         condition for floating point modes.
1230         * expmed.c (emit_store_flag_1): Move here a bigger part
1231         of emit_store_flag.
1232         (emit_store_flag): Try swapping the condition for floating point
1233         modes.
1234         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
1235
1236 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1237
1238         * expr.c (expand_expr_real_1): Just use do_store_flag.
1239         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
1240         emit_store_flag_force.
1241         * expmed.c (emit_store_flag_force): Copy here trick
1242         previously in expand_expr_real_1.  Try reversing the comparison.
1243         (emit_store_flag_1): Work if target is NULL.
1244         (emit_store_flag): Work if target is NULL, using the result mode
1245         from the comparison.  Use split_comparison, restructure final part
1246         to simplify conditionals.
1247
1248 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
1249
1250         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
1251         * dojump.c (do_jump): Change handling of floating-point
1252         ops to use just do_compare_and_jump.
1253         (split_comparison): New.
1254         (do_compare_rtx_and_jump): Add here logic coming previously
1255         in do_jump, using split_comparison.
1256
1257 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
1258
1259         PR target/40489
1260         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
1261
1262 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1263
1264         * tree-ssa-alias.c: Fix unintentional commit.
1265
1266 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1267
1268         * passes.c (execute_one_pass): Fix unintentional commit.
1269
1270 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1271
1272         * df-problems.c (df_set_seen, df_unset_seen): Delete.
1273         (df_rd_local_compute, df_md_local_compute): Inline them.
1274
1275         (df_md_scratch): New.
1276         (df_md_alloc, df_md_free): Allocate/free it.
1277         (df_md_local_compute): Only include live registers in init.
1278         (df_md_transfer_function): Prune the in-set computed by
1279         the confluence function, and the gen-set too.
1280
1281 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1282
1283         PR rtl-optimization/26854
1284         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
1285         * df-problems.c (df_rd_add_problem): Fix comment.
1286         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
1287         df_md_simulate_artificial_defs_at_top,
1288         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
1289         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
1290         df_md_transfer_function, df_md_init, df_md_confluence_0,
1291         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
1292         problem_MD, df_md_add_problem): New.
1293         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
1294         df_md_get_bb_info): New.
1295         (DF_LAST_PROBLEM_PLUS1): Adjust.
1296
1297         * Makefile.in (fwprop.o): Include domwalk.h.
1298         * fwprop.c: Include domwalk.h.
1299         (reg_defs, reg_defs_stack): New.
1300         (bitmap_only_bit_between): Remove.
1301         (process_defs): New.
1302         (process_uses): Use reg_defs and local_md instead of
1303         bitmap_only_bit_between and local_rd.
1304         (single_def_use_enter_block): New, from build_single_def_use_links.
1305         (single_def_use_leave_block): New.
1306         (build_single_def_use_links): Remove code moved to
1307         single_def_use_enter_block, invoke domwalk.
1308         (use_killed_between): Adjust comment.
1309
1310 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1311
1312         * bitmap.h (bitmap_ior_and_into): New.
1313         * bitmap.c (bitmap_ior_and_into): New.
1314
1315 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1316
1317         * domwalk.h (struct dom_walk_data): Remove all callbacks except
1318         before_dom_children_before_stmts and after_dom_children_after_stmts.
1319         Rename the two remaining callbacks to just before_dom_children and 
1320         after_dom_children. Remove other GIMPLE statement walking bits.
1321         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
1322         * graphite.c: Do not include domwalk.h.
1323         * tree-into-ssa.c (interesting_blocks): New global.
1324         (struct mark_def_sites_global_data): Remove it and names_to_rename.
1325         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
1326         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
1327         now that they're not domwalk callbacks.
1328         (rewrite_initialize_block): Rename to...
1329         (rewrite_enter_block): ... this, place after called functions.  Test
1330         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
1331         (rewrite_finalize_block): Rename to...
1332         (rewrite_leave_block): ... this, place after called functions.
1333         (rewrite_update_init_block): Rename to...
1334         (rewrite_update_enter_block): ... this, place after called functions.
1335         Test interesting_blocks, call rewrite_update_stmt and 
1336         rewrite_update_phi_arguments.
1337         (rewrite_update_fini_block): Rename to...
1338         (rewrite_leave_block): ... this, place after called functions.
1339         (rewrite_blocks): Remove last argument, simplify initialization of
1340         walk_data.
1341         (mark_def_sites_initialize_block): Rename to...
1342         (mark_def_sites_block): ... this, call mark_def_sites.
1343         (mark_def_sites_blocks): Remove argument, simplify initialization of
1344         walk_data.
1345         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
1346         (update_ssa): Likewise.
1347         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
1348         callback.
1349         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
1350         (dom_opt_initialize_block): Rename to...
1351         (dom_opt_enter_block): ... this, place after called functions.  Walk
1352         statements here, inline propagate_to_outgoing_edges.
1353         (dom_opt_finalize_block): Rename to...
1354         (dom_opt_leave_block): ... this, place after called functions.
1355         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
1356         domwalk callback.
1357         (dse_enter_block, dse_record_phi): New.
1358         (dse_record_phis): Delete.
1359         (dse_finalize_block): Rename to...
1360         (dse_leave_block): ... this.
1361         (tree_ssa_dse): Simplify initialization of walk_data.
1362         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
1363         Adjust initialization of walk_data.
1364         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
1365         * tree-ssa-loop-phiopt.c (get_non_trapping):
1366         Adjust initialization of walk_data.
1367         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
1368         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
1369         it's not a domwalk callback.
1370         (uncprop_initialize_block): Rename to...
1371         (dse_enter_block): ... this, call uncprop_into_successor_phis.
1372         (dse_finalize_block): Rename to...
1373         (dse_leave_block): ... this.
1374         (tree_ssa_uncprop): Simplify initialization of walk_data.
1375         * Makefile.in: Adjust dependencies.
1376
1377 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
1378
1379         * arm.md (casesi): Fix test for Thumb1.
1380         (thumb1_casesi_internal_pic): Likewise.
1381         (thumb1_casesi_dispatch): Likewise.
1382
1383 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
1384
1385         * config/arm/arm-cores.def: Added core cortex-m0.
1386         * config/arm/arm-tune.md: Regenerated.
1387         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
1388
1389 2009-06-26  DJ Delorie  <dj@redhat.com>
1390
1391         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
1392
1393         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
1394         the scheduler doesn't tag jump insns.
1395
1396 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
1397
1398         * c-decl.c (merge_decls): Re-indent.
1399
1400 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
1401
1402         PR c/39902
1403         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
1404         Special-case decimal float constants.
1405
1406 2009-06-26  Richard Henderson  <rth@redhat.com>
1407
1408         * function.h (struct function): Add cannot_be_copied_reason,
1409         and cannot_be_copied_set.
1410         * tree-inline.c (has_label_address_in_static_1): Rename from
1411         inline_forbidden_p_2; don't set inline_forbidden_reason here.
1412         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
1413         don't set inline_forbidden_reason.
1414         (copy_forbidden): New function, split out of inline_forbidden_p.
1415         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
1416         (inline_forbidden_p): Use copy_forbidden.
1417         (tree_versionable_function_p): Likewise.
1418         (inlinable_function_p): Merge into tree_inlinable_function_p.
1419         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
1420         * ipa-cp.c (ipcp_versionable_function_p): New function.
1421         (ipcp_cloning_candidate_p): Use it.
1422         (ipcp_node_modifiable_p): Likewise.
1423
1424 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
1425
1426         * builtins.c (expand_builtin_alloca): Handle builtin alloca
1427         that is marked not to be inlined. Remove flag_mudflap use.
1428         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
1429         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
1430
1431 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
1432
1433         PR bootstrap/40338
1434         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
1435         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
1436
1437 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
1438
1439         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
1440         shared libgcc.
1441         (__mingwthr_remove_key_dtor): Likewise.
1442
1443 2009-06-26  Richard Guenther  <rguenther@suse.de>
1444
1445         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
1446
1447 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
1448
1449         PR middle-end/40525
1450         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
1451         try the non-cond_exec path also.
1452
1453 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1454
1455         PR target/40468
1456         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
1457         (output_cbranch): Use new functions.
1458         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
1459         Likewise.
1460
1461 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
1462             Pat Haugen  <pthaugen@us.ibm.com>
1463             Revital Eres <ERES@il.ibm.com>
1464
1465         * config/rs6000/rs6000.c (print_operand): Correct lossage message
1466         for %c error.  Add %x support to print VSX registers as a unified
1467         register set, instead of separate float and altivec registers.
1468         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
1469         %y case, and add support for VSX pre-modify addresses.
1470         (output_toc): Add assert for CONST containing an integer constant
1471         in the PLUS case.
1472         (rs6000_adjust_cost): Add POWER7 support.
1473         (insn_must_be_first_in_group): Ditto.
1474         (insn_must_be_last_in_group): Ditto.
1475         (rs6000_emit_popcount): Ditto.
1476         (rs6000_vector_mode_supported_p): Ditto.
1477
1478         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
1479         Change some of the functions called by macros to being called
1480         through a pointer, so debug functions can be inserted if
1481         -mdebug=addr or -mdebug=cost. 
1482         (rs6000_preferred_reload_class_ptr): Ditto.
1483         (rs6000_secondary_reload_class_ptr): Ditto.
1484         (rs6000_secondary_memory_needed_ptr): Ditto.
1485         (rs6000_cannot_change_mode_class_ptr): Ditto.
1486         (rs6000_secondary_reload_inner): Ditto.
1487         (rs6000_legitimize_reload_address): Ditto.
1488         (rs6000_legitimize_reload_address_ptr): Ditto.
1489         (rs6000_mode_dependent_address): Ditto.
1490         (rs6000_mode_dependent_address_ptr): Ditto.
1491
1492         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
1493         function to return true if the mode allows reg + integer
1494         addresses.
1495         (virtual_stack_registers_memory_p): New function to return true if
1496         the address refers to a virtual stack register.
1497         (rs6000_legitimate_offset_address_p): Move code to say whether a
1498         mode supports reg+int addressing to reg_offset_addressing_ok_p and
1499         call it.
1500         (rs6000_legitimate_address_p): Add checks for modes that only can
1501         do reg+reg addressing.  Start adding VSX support.
1502         (rs6000_legitimize_reload_address): Ditto.
1503         (rs6000_legitimize_address): Ditto.
1504         (rs6000_debug_legitimate_address_p): New debug functions for
1505         -mdebug=addr and -mdebug=cost.
1506         (rs6000_debug_rtx_costs): Ditto.
1507         (rs6000_debug_address_costs): Ditto.
1508         (rs6000_debug_adjust_cost): Ditto.
1509         (rs6000_debug_legitimize_address): Ditto.
1510         (rs6000_legitimize_reload_address_ptr): Point to call normal
1511         function or debug function.  Make functions called via pointer
1512         static.
1513         (rs6000_mode_dependent_address_ptr): Ditto.
1514         (rs6000_secondary_reload_class_ptr): Ditto.
1515         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
1516         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
1517         into a friendlier error.
1518         (rs6000_init_builtins): Add initial VSX support.
1519         (rs6000_adjust_cost): Fix some spacing issues.
1520
1521         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
1522         (REG_CLASS_NAMES): Ditto.
1523         (REG_CLASS_CONTENTS): Ditto.
1524         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
1525         pointer, to add -mdebug=addr support.
1526         (CANNOT_CHANGE_MODE_CLASS): Ditto.
1527         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
1528         -mdebug=addr support.
1529         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
1530         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
1531         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
1532
1533         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
1534         16-bit values.
1535         (bswapsi*): Set attribute types for load/store.  Add combiner
1536         patterns to eliminate zero extend on 64-bit.
1537         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
1538         stdbrx if the hardware supports those instructions.
1539
1540 2009-06-25  Ian Lance Taylor  <iant@google.com>
1541
1542         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
1543         (Link Options): Document -static-libstdc++.
1544
1545 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1546
1547         PR target/38731
1548         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
1549         DATA_ALIGNMENT instead.
1550
1551 2009-06-25  Richard Guenther  <rguenther@suse.de>
1552
1553         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
1554         indirect references against the callused/escaped solutions.
1555         (call_may_clobber_ref_p_1): Likewise.
1556
1557 2009-06-25  Martin Jambor  <mjambor@suse.cz>
1558
1559         PR tree-optimization/40493
1560         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
1561         (enum unscalarized_data_handling): New type.
1562         (handle_unscalarized_data_in_subtree): Return what has been done.
1563         (load_assign_lhs_subreplacements): Handle left flushes differently.
1564         (sra_modify_assign): Use unscalarized_data_handling, simplified
1565         condition determining whether to remove the statement.
1566
1567 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
1568
1569         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
1570         excerpt - @ should be doubled for texinfo.
1571
1572 2009-06-24  Ian Lance Taylor  <iant@google.com>
1573
1574         * config/arc/arc.c: Include "df.h".
1575         (arc_attribute_table): Make static.  Move higher in file.
1576         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
1577         (output_shift): Initialize n later to avoid warning.
1578         * config/arm/arm.c (arm_attribute_table): Make static.  Move
1579         higher in file.
1580         * config/avr/avr.c (avr_attribute_table): Make static.  Move
1581         higher in file.
1582         (reg_class_tab): Change array type from int to enum reg_class.
1583         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
1584         LABEL_REF.
1585         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
1586         (lshrhi3_out): Likewise.
1587         (class_likely_spilled_p): Change return type to bool.
1588         (avr_rtx_costs): Use local code variable with enum type.
1589         * config/avr/avr.md (movmemhi): Use add_reg_note.
1590         (andhi3, andsi3): Don't use AS2 with "and".
1591         (iorhi3, iorsi3): Don't use AS2 with "or".
1592         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
1593         * config/crx/crx.c: Include "df.h".
1594         (crx_attribute_table): Make static.
1595         * config/m32r/m32r.c: Include "df.h".
1596         (m32r_attribute_table): Make static.  Move higher in file.
1597         (pop): Use add_reg_note.
1598         (block_move_call): Change 0 to LCT_NORMAL in function call.
1599         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
1600         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
1601         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
1602         declare, not just when TREE_CODE is defined.
1603         * config/m68hc11/m68hc11.c: Include "expr.h".
1604         (m68hc11_attribute_table): Make static.  Move higher in file.
1605         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
1606         function call.
1607         (m68hc11_register_indirect_p): Likewise.
1608         (m68hc11_function_arg_padding): Change return type to enum
1609         direction.
1610         (emit_move_after_reload): Use add_reg_note.
1611         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
1612         (m68hc11_split_logical): Likewise.
1613         (m68hc11_rtx_costs): Add local code_and outer_code variables with
1614         enum type.
1615         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
1616         to VOIDmode in function call.
1617         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
1618         tree is defined.
1619         (m68hc11_split_logical): Update declaration.
1620         (m68hc11_function_arg_padding): Update declaration.
1621         * config/mcore/mcore.c (regno_reg_class): Change form array of int
1622         to array of enum reg_class.
1623         (mcore_attribute_table): Make static.  Move higher in file.
1624         (mcore_rtx_costs): Add cast to enum type.
1625         * config/mcore/mcore.h (regno_reg_class): Update declaration.
1626         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
1627         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
1628         in file.
1629         * config/sh/predicates.md (trapping_target_operand): Rename and to
1630         and_expr.
1631         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
1632         higher in file.
1633         * config/spu/spu.c (spu_attribute_table): Make static.  Move
1634         higher in file.
1635         * config/v850/v850.c (v850_attribute_table): Make static.  Move
1636         higher in file.
1637         (v850_rtx_costs): Use local code with enum type.
1638         (expand_epilogue): Add cast.
1639         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
1640
1641 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
1642
1643         PR target/40515
1644         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
1645         -m2a-single-only and -m2a-nofpu.
1646         * config/sh/sh.opt: Document m2a generates FPU code.  
1647
1648 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
1649
1650         * defaults.h (CAN_ELIMINATE): Provide default.
1651         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
1652         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
1653         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
1654         * config/spu/spu.h (CAN_ELIMINATE): Delete.
1655         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
1656         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
1657         * config/cris/cris.h (CAN_ELIMINATE): Delete.
1658         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
1659         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
1660         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
1661
1662 2009-06-24  DJ Delorie  <dj@redhat.com>
1663
1664         * mep-ext-cop.cpu: Fix copyright notice.
1665         * mep-default: Fix copyright notice.
1666         * mep-core: Fix copyright notice.
1667         * mep: Fix copyright notice.
1668         * mep-ivc2: Fix copyright notice.
1669         * mep-c5: Fix copyright notice.
1670
1671 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
1672
1673         * doc/contrib.texi (Contributors): 
1674
1675 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
1676         
1677         PR middle-end/40501
1678         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
1679         src and dst operands if necessary.
1680
1681 2009-06-23  DJ Delorie  <dj@redhat.com>
1682
1683         Add MeP port.
1684         * config.gcc: Add mep support.
1685         * recog.c: Resurrect validate_replace_rtx_subexp().
1686         * recog.h: Likewise.
1687         * config/mep/: Add new port:
1688         * config/mep/constraints.md: New file.
1689         * config/mep/default.h: New file.
1690         * config/mep/intrinsics.h: New file.
1691         * config/mep/intrinsics.md: New file.
1692         * config/mep/ivc2-template.h: New file.
1693         * config/mep/mep-c5.cpu: New file.
1694         * config/mep/mep-core.cpu: New file.
1695         * config/mep/mep-default.cpu: New file.
1696         * config/mep/mep-ext-cop.cpu: New file.
1697         * config/mep/mep-intrin.h: New file.
1698         * config/mep/mep-ivc2.cpu: New file.
1699         * config/mep/mep-lib1.asm: New file.
1700         * config/mep/mep-lib2.c: New file.
1701         * config/mep/mep-pragma.c: New file.
1702         * config/mep/mep-protos.h: New file.
1703         * config/mep/mep-tramp.c: New file.
1704         * config/mep/mep.c: New file.
1705         * config/mep/mep.cpu: New file.
1706         * config/mep/mep.h: New file.
1707         * config/mep/mep.md: New file.
1708         * config/mep/mep.opt: New file.
1709         * config/mep/predicates.md: New file.
1710         * config/mep/t-mep: New file.
1711
1712 2009-06-23  Ian Lance Taylor  <iant@google.com>
1713
1714         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
1715         from loose_warn into c_loose_warn and from strict_warn into
1716         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
1717         --enable-build-with-cxx.  Set and substitute
1718         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
1719         * Makefile.in (CXXFLAGS): New variable.
1720         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
1721         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
1722         the default is the same as $(STRICT_WARN).
1723         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
1724         (CXX): New variable.
1725         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
1726         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
1727         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
1728         (HOST_LIBS): New variable.
1729         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
1730         (ALL_CXXFLAGS): New variable.
1731         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
1732         * doc/install.texi (Configuration): Document
1733         --enable-build-with-cxx, --with-stage1-ldflags,
1734         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
1735         * configure: Rebuild.
1736
1737 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1738
1739         * config/arm/arm.c (arm_override_options): Fix braces and formatting
1740         from previous commit.
1741
1742 2009-06-23  Ian Lance Taylor  <iant@google.com>
1743
1744         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
1745
1746 2009-06-23  Ian Lance Taylor  <iant@google.com>
1747
1748         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
1749         with ATTRIBUTE_UNUSED.
1750
1751 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
1752             Pat Haugen  <pthaugen@us.ibm.com>
1753             Revital Eres  <eres@il.ibm.com>
1754
1755         * config.in (HAVE_AS_POPCNTD): Add default definition.
1756         (HAVE_AS_LWSYNC): Ditto.
1757
1758         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
1759         release number.
1760         (gcc_cv_as_powerpc_cmpb): Ditto.
1761         (gcc_cv_as_powerpc_dfp): Ditto.
1762         (gcc_cv_as_powerpc_vsx): Ditto.
1763         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
1764         supporting the popcntd/lwsync instructions.
1765         (gcc_cv_as_powerpc_lwsync): Ditto.
1766         * configure: Regenerate.
1767
1768         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
1769         -mcpu=native and -mcpu=power7.
1770         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
1771
1772         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
1773         a variable instead of a mask to reduce the number of mask bits.
1774         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
1775         (-mbit-word): Ditto.
1776         (-mregnames): Ditto.
1777         * config/rs6000/rs6000.opt (-mupdate): Ditto.
1778         (-mfused-madd): Ditto.
1779
1780         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
1781         2.06 instructions.
1782         (-mvsx): New switch for VSX instructions.
1783         (-misel): Move from a variable to a mask to allow it to be set by
1784         -mcpu=.
1785
1786         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
1787         function declaration to an array declaration.
1788         (rs6000_hard_regno_nregs): New external array declaration.
1789
1790         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
1791         files included by rs6000.md.
1792
1793         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
1794         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
1795
1796         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
1797         a target mask.
1798         (rs6000_debug_reg): New -mdebug= variables.
1799         (rs6000_debug_addr): Ditto.
1800         (rs6000_debug_cost): Ditto.
1801         (rs6000_pmode): New variable to hold Pmode.
1802         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
1803         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
1804         calculated at compiler start.
1805         (rs6000_hard_regno_nregs): Change function to an array which holds
1806         HARD_REGNO_NREGS calculated at compiler start.
1807         (rs6000_explicit_options): Delete isel field.
1808         (rs6000_vector_unit): New array to hold which vector unit
1809         supports arithmetic options for a given type.
1810         (rs6000_vector_mem): New array to hold which vector unit supports
1811         memory reference operations for a given type.
1812         (rs6000_vector_align): New array to given the alignment of each
1813         vector type.
1814         (power7_cost): New basic costs for power7.
1815         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
1816         (rs6000_hard_regno_nregs_internal): New function, moved from
1817         HARD_REGNO_NREGS, to calculate the number of registers each hard
1818         register takes for each type.
1819         (rs6000_debug_reg_print): New function for -mdebug=reg support.
1820         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
1821         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
1822         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
1823         unit information here so it is calculated once at compiler startup
1824         time.
1825         (rs6000_override_options): Make -misel a target mask.  Add more
1826         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
1827         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
1828         -mdebug=cost.
1829         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
1830         (rs6000_handle_option): Move -misel from variable to target mask.
1831         (rs6000_builtin_mask_for_load): Add VSX support.
1832         (rs6000_conditional_register_usage): Ditto.
1833         (USE_ALTIVEC_FOR_ARG_P): Ditto.
1834         (function_arg_boundary): Ditto.
1835         (rs6000_expand_builtin): Ditto.
1836         (def_builtin): Make abort message a little friendlier.
1837         (rs6000_emit_int_cmove): Add support for 64-bit isel.
1838
1839         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
1840         assembler support the popcntd instruction instead of a vsx
1841         instruction to enable power7 support.
1842         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
1843         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
1844         option to the assembler if -mcpu=native.
1845         (ASM_CPU_NATIVE_SPEC): Ditto.
1846         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
1847         ISA 2.06 features.
1848         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
1849         the lwsync instruction.
1850         (enum processor_type): Add PROCESSOR_POWER7.
1851         (rs6000_debug_reg): New -mdebug= options.
1852         (rs6000_debug_addr): Ditto.
1853         (rs6000_debug_cost): Ditto.
1854         (rs6000_isel): Delete.
1855         (enum rs6000_vector): New enum to say what vector unit we have.
1856         (VECTOR_UNIT_*): New macros to say which vector unit has
1857         arithmetic operations for a given type.
1858         (VECTOR_MEM_*): New macros to say which vector unit has memory
1859         operations for a given type.
1860         (TARGET_LDBRX): Whether the machine supports the ldbrx
1861         instruction.
1862         (TARGET_ISEL): Delete, -misel moved to be a mask.
1863         (TARGET_ISEL64): New macro for 64-bit isel support.
1864         (UNITS_PER_VSX_WORD): New macro.
1865         (POINTER_SIZE): Move to be an external variable, rather than
1866         calculating whether we are generating 32 ot 64-bit code.
1867         (Pmode): Ditto.
1868         (STACK_BOUNDARY): Add VSX support.
1869         (LOCAL_ALIGNMENT): Ditto.
1870         (SLOW_UNALIGNED_ACCESS): Ditto.
1871         (VSX_REGNO_P): New macro for VSX support.
1872         (VFLOAT_REGNO_P): Ditto.
1873         (VINT_REGNO_P): Ditto.
1874         (VLOGICAL_REGNO_P): Ditto.
1875         (VSX_VECTOR_MODE): Ditto.
1876         (VSX_SCALAR_MODE): Ditto.
1877         (VSX_MODE): Ditto.
1878         (VSX_MOVE_MODE): Ditto.
1879         (VSX_REG_CLASS_P): Ditto.
1880         (HARD_REGNO_NREGS): Instead of calling a function, use an array
1881         lookup.
1882         (UNITS_PER_SIMD_WORD): Add VSX support.
1883         (MODES_TIEABLE_P): Ditto.
1884         (STARTING_FRAME_OFFSET): Ditto.
1885         (STACK_DYNAMIC_OFFSET): Ditto.
1886         (EPILOGUE_USES): Ditto.
1887         (REGNO_REG_CLASS): Move to array lookup.
1888         (CLASS_MAX_NREGS): Ditto.
1889         (rs6000_vector_reg_class): Add declaration.
1890         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
1891         overlap with the floating point and Altivec registers.
1892
1893         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
1894
1895         * config/rs6000/driver-rs6000.c (asm_names): New static array to
1896         give the appropriate asm switches if -mcpu=native.
1897         (host_detect_local_cpu): Add support for "asm".
1898         (host_detect_local_cpu): Follow GNU code guidelines for name.
1899
1900         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
1901         -mbit-word to a variable instead of being a target mask.
1902
1903         * config/rs6000/sync.md (lwsync): If the assembler supports it,
1904         emit the lwsync instruction instead of emitting the instruction as
1905         an integer constant.
1906
1907         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
1908         fixuns_trundfsi2, move expander into rs6000.md.
1909
1910         * config/rs6000/rs6000.md (cpu): Add power7.
1911         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
1912         (logical predicate patterns): Change the single instruction
1913         primitives that set CR0 to be fast_compare instead of compare.
1914         (norsi*): Ditto.
1915         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
1916         (popcntddi2): Ditto.
1917         (popcount<mode>): Ditto.
1918         (floating multiply/add insns): Name the floating point
1919         multiply/add insns.
1920         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
1921         (isel_unsigned_<mode>): Ditto.
1922         (fixuns_trundfsi2): Move expander here from spe.md.
1923         (smindi3): Define if we have -misel on 64-bit systems.
1924         (smaxdi3): Ditto.
1925         (umindi3): Ditto.
1926         (umaxdi3): Ditto.
1927
1928 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
1929
1930         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
1931         extra_objs.
1932         * config/avr/avr.c (avr_current_device): New variable.
1933         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
1934         (avr_arch, mcu_type_s): Move to avr.h.
1935         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
1936         default_data_section_start fields.
1937         (avr_arch): Moved from avr.c.
1938         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
1939         library_name fields.
1940         (avr_current_device, avr_mcu_types, avr_arch_types,
1941         avr_device_to_arch, avr_device_to_data_start,
1942         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
1943         (EXTRA_SPEC_FUNCTIONS): Define.
1944         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
1945         options mapping. Use device_to_arch and device_to_data_start insted.
1946         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
1947         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
1948         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
1949         * config/avr/driver-avr.c: New file.
1950         * config/avr/avr-devices.c: New file.
1951
1952 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
1953
1954         * var-tracking.c (unshare_variable): Force initialized to
1955         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
1956         (set_variable_part): Likewise.
1957         (struct variable_union_info): Remove pos_src field.
1958         (vui_vec, vui_allocated): New variables.
1959         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
1960         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
1961         == 1 use a simpler sorting algorithm.  Compute pos field right
1962         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
1963         Avoid quadratic comparison if !flag_var_tracking_uninit.
1964         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
1965         unshare_variable unconditionally.   
1966         (dataflow_set_different_2): Removed.
1967         (dataflow_set_different): Don't traverse second hash table.
1968         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
1969         unconditionally to var_reg_set or var_mem_set.
1970         (emit_notes_in_bb): Likewise.
1971         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
1972         unshare_variable.
1973         (emit_note_insn_var_location): Don't set initialized to
1974         VAR_INIT_STATUS_INITIALIZED early.
1975         (vt_finalize): Free vui_vec if needed, clear vui_vec and
1976         vui_allocated.
1977         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
1978
1979         * tree-object-size.c (addr_object_size): Instead of checking
1980         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
1981         are no FIELD_DECLs following it.
1982
1983 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
1984
1985         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
1986         order to match bswaps with signed source operands.
1987
1988 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1989
1990         * sdbout.c (sdbout_one_type): Fix braces in switch.
1991
1992 2009-06-23  Richard Guenther  <rguenther@suse.de>
1993
1994         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
1995         member.
1996         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
1997         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
1998         var_callused, callused_tree, var_storedanything, storedanything_tree,
1999         var_integer, integer_tree): Remove global variables.
2000         (new_var_info): Do not pass new id, append the new var to the
2001         global variable vector.
2002         (do_ds_constraint): Use is_global_var member of the variable-info.
2003         (new_scalar_tmp_constraint_exp): Adjust.
2004         (create_function_info_for): Likewise.
2005         (create_variable_info_for): Likewise.
2006         (find_what_var_points_to): Remove dead code.
2007         (init_base_vars): Simplify.
2008         (compute_points_to_sets): Adjust.
2009
2010 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
2011
2012         * combine.c (try_combine): Dump information about the insns we're
2013         combining.
2014
2015 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
2016
2017         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
2018         check when calling force_to_mode on TRUNCATE's operand.
2019
2020 2009-06-22  Ian Lance Taylor  <iant@google.com>
2021
2022         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
2023
2024 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
2025
2026         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
2027
2028 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2029
2030         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
2031         override library linkage flags such as -static-libgcc or
2032         -shared-libgcc.
2033
2034 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2035
2036         * config/m68k/m68k-devices.def: Add line for MCF5221x.
2037
2038 2009-06-22  Ian Lance Taylor  <iant@google.com>
2039
2040         * config/linux.opt: Put mglibc ahead of muclibc.
2041
2042         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
2043         for duplicate decls.
2044
2045 2009-06-22  Matthias Klose  <doko@ubuntu.com>
2046
2047         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
2048
2049 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
2050
2051         PR objc/28050
2052         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
2053         instead of NULL if a parser error occurs.
2054
2055 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2056
2057         * dwarf2out.c (dwarf2_debug_hooks): Initialize
2058         non-DWARF2_DEBUGGING_INFO version.
2059
2060 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
2061
2062         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
2063         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
2064
2065         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
2066         (LIBGCC2_TF_CEXT): Define.
2067         (TF_SIZE): Define.
2068
2069 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2070
2071         PR target/40463
2072         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
2073
2074 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2075
2076         * config/arm/arm.c (arm_override_options): Disable
2077         -mcaller-super-interworking and -mcallee-super-interworking.
2078         * doc/invoke.texi (ARM Options): Document this.
2079
2080 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
2081
2082         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
2083         * config/arm/constraints.md (j): New constraint for movw operands.
2084         (N): Remove thumb2 meaning.
2085         * config/arm/arm.md (*arm_movw): Delete.
2086         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
2087         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
2088         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
2089
2090 2009-06-22  Martin Jambor  <mjambor@suse.cz>
2091
2092         PR tree-optimization/40492
2093         * tree-sra.c (sra_modify_assign): Pass zero offsets to
2094         build_ref_for_offset.
2095
2096 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
2097
2098         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
2099         JUMP_TABLE_DATA_P predicates where applicable.
2100         * auto-inc-dec.c: Ditto.
2101         * builtins.c: Ditto.
2102         * caller-save.c: Ditto.
2103         * calls.c: Ditto.
2104         * cfgcleanup.c: Ditto.
2105         * cfglayout.c: Ditto.
2106         * cfgrtl.c: Ditto.
2107         * combine.c: Ditto.
2108         * combine-stack-adj.c: Ditto.
2109         * cse.c: Ditto.
2110         * cselib.c: Ditto.
2111         * dbxout.c: Ditto.
2112         * df-scan.c: Ditto.
2113         * dse.c: Ditto.
2114         * dwarf2asm.c: Ditto.
2115         * dwarf2out.c: Ditto.
2116         * emit-rtl.c: Ditto.
2117         * except.c: Ditto.
2118         * explow.c: Ditto.
2119         * expmed.c: Ditto.
2120         * expr.c: Ditto.
2121         * final.c: Ditto.
2122         * function.c: Ditto.
2123         * fwprop.c: Ditto.
2124         * gcse.c: Ditto.
2125         * genpreds.c: Ditto.
2126         * genrecog.c: Ditto.
2127         * ifcvt.c: Ditto.
2128         * ira-costs.c: Ditto.
2129         * ira-lives.c: Ditto.
2130         * jump.c: Ditto.
2131         * loop-iv.c: Ditto.
2132         * lower-subreg.c: Ditto.
2133         * modulo-sched.c: Ditto.
2134         * optabs.c: Ditto.
2135         * postreload.c: Ditto.
2136         * print-rtl.c: Ditto.
2137         * recog.c: Ditto.
2138         * reginfo.c: Ditto.
2139         * regmove.c: Ditto.
2140         * reload1.c: Ditto.
2141         * reload.c: Ditto.
2142         * reorg.c: Ditto.
2143         * rtlanal.c: Ditto.
2144         * rtl.c: Ditto.
2145         * sched-vis.c: Ditto.
2146         * sdbout.c: Ditto.
2147         * sel-sched-ir.c: Ditto.
2148         * simplify-rtx.c: Ditto.
2149         * targhooks.c: Ditto.
2150         * var-tracking.c: Ditto.
2151         * vmsdbgout.c: Ditto.
2152
2153 2009-06-22  Matthias Klose  <doko@ubuntu.com>
2154
2155         * Makefile.in (install-plugin): Always use DESTDIR.
2156
2157 2009-06-22  Olivier Hainque  <hainque@adacore.com>
2158         
2159         * config/pa/pa.c (output_call): Don't optimize post call jumps
2160         into return address adjustments if the call may throw.
2161
2162 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
2163
2164         * arm.c (thumb1_output_casesi): New function.
2165         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
2166         optimizing for size or PIC.
2167         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
2168         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
2169         (casesi): Handle Thumb-1 when optimizing for size or PIC.
2170         (thumb1_casesi_internal_pic): New expand rule.
2171         (thumb1_casesi_dispatch): New pattern.
2172         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
2173         thumb-1 mode.
2174         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
2175         in the text seciton when PIC or optimizing for size.
2176         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
2177         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
2178         preservation properties of code.
2179         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
2180         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
2181         (__gnu_thumb1_case_si): New function.
2182         * t-arm (LIB1ASMSRC): Define here.
2183         (LIB1ASMFUNCS): Add some common functions.
2184         * t-arm-elf (LIB1ASMSRC): Delete.
2185         (LIB1ASMFUNCS): Append to existing set.
2186         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2187         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2188         * t-symbian (LIB1ASMFUNCS): Likewise.
2189         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2190         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
2191
2192 2009-06-21  Richard Guenther  <rguenther@suse.de>
2193
2194         PR tree-optimization/38729
2195         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
2196         to loops with a single exit if -fno-expensive-optimizations.
2197
2198 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
2199
2200         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
2201         (dataflow_set): Change vars type from htab_t to shared_hash.
2202         (shared_hash_pool, empty_shared_hash): New variables.
2203         (vars_clear): Removed.
2204         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
2205         shared_hash_find_slot_unshare, shared_hash_find_slot,
2206         shared_hash_find_slot_noinsert, shared_hash_find): New
2207         static inlines.
2208         (shared_hash_unshare, shared_hash_destroy): New functions.
2209         (unshare_variable): Unshare set->vars if shared, use
2210         shared_hash_htab.
2211         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
2212         (get_init_value, find_src_set_src, dump_dataflow_set,
2213         clobber_variable_part, emit_notes_for_differences): Use
2214         shared_hash_htab.
2215         (dataflow_set_init): Remove second argument, set vars to
2216         empty_shared_hash instead of creating a new htab.
2217         (dataflow_set_clear): Call shared_hash_destroy and set vars
2218         to empty_shared_hash instead of calling vars_clear.
2219         (dataflow_set_copy): Don't call vars_copy, instead just share
2220         the src htab with dst.
2221         (variable_union): Use shared_hash_*, use initially NO_INSERT
2222         lookup if set->vars is shared.  Don't keep slot cleared before
2223         calling unshare_variable.  Unshare set->vars if needed.
2224         Even ->refcount == 1 vars must be unshared if set->vars is shared
2225         and var needs to be modified.
2226         (variable_canonicalize): New function.
2227         (dataflow_set_union): If dst->vars is empty, just share src->vars
2228         with dst->vars and traverse with variable_canonicalize to canonicalize
2229         and unshare what is needed.
2230         (dataflow_set_different): If old_set and new_set use the same shared
2231         htab, they aren't different.  If number of htab elements is different,
2232         htabs are different.  Use shared_hash_*.
2233         (dataflow_set_destroy): Call shared_hash_destroy instead of
2234         htab_delete.
2235         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
2236         second argument to dataflow_set_init.
2237         (vt_initialize): Likewise.  Initialize shared_hash_pool and
2238         empty_shared_hash, move bb in/out initialization afterwards.
2239         Use variable_htab_free instead of NULL as changed_variables del hook.
2240         (variable_was_changed): Change type of second argument to pointer to
2241         dataflow_set.  When inserting var into changed_variables, bump
2242         refcount.  Unshare set->vars if set is shared htab and slot needs to
2243         be cleared.
2244         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
2245         lookup if set->vars is shared.  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.  Adjust variable_was_changed caller.
2248         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
2249         vars must be unshared if set->vars is shared and var needs to be
2250         modified.  Adjust variable_was_changed caller.
2251         (emit_note_insn_var_location): Don't pool_free var.
2252         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
2253         instead of 1.
2254         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
2255         free_alloc_pool on shared_hash_pool.
2256
2257 2009-06-20  Anthony Green  <green@moxielogic.com>
2258
2259         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
2260         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
2261
2262 2009-06-20  Richard Guenther  <rguenther@suse.de>
2263
2264         * tree-ssa-structalias.c (find_func_aliases): For memset use
2265         a constraint from NULL if we memset to zero.
2266         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
2267         we explicitly handle that do not read from memory.
2268         (call_may_clobber_ref_p_1): Properly handle builtins that may
2269         set errno.
2270
2271 2009-06-20  Richard Guenther  <rguenther@suse.de>
2272
2273         PR tree-optimization/40495
2274         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
2275         (new_scalar_tmp_constraint_exp): New function.
2276         (process_constraint): Do not create temporary decls.
2277         (process_all_all_constraints): Likewise.
2278         (handle_const_call): Likewise.
2279         (create_function_info_for): Do not set decl.
2280
2281 2009-06-19  Ian Lance Taylor  <iant@google.com>
2282
2283         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
2284         (rs6000_attribute_table): Make static; move before use.
2285
2286 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
2287
2288         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
2289         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
2290         Propagate the TREE_READONLY flag without overwriting it.
2291         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
2292         Propagate the TREE_READONLY flag onto the result.
2293         (process_call_operands): Move around.  Use correct constant value.
2294
2295 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2296
2297         PR target/40482
2298         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
2299         * config/arm/arm.md: Likewise.
2300
2301 2009-06-19  Ian Lance Taylor  <iant@google.com>
2302
2303         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
2304         to GIMPLE_ERROR_MARK.
2305
2306         * c-typeck.c (build_conditional_expr): Add op1_original_type and
2307         op2_original_type parameters.  Warn about using different enum types.
2308         * c-parser.c (c_parser_conditional_expression): Pass original
2309         types to build_conditional_expr.
2310         * c-tree.h (build_conditional_expr): Update declaration.
2311
2312 2009-06-19  Ian Lance Taylor  <iant@google.com>
2313
2314         * config/i386/i386.c (ix86_function_specific_save): Test that
2315         fields match values, rather than testing the values are in a
2316         certain range.
2317
2318 2009-06-19  Richard Guenther  <rguenther@suse.de>
2319
2320         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
2321         ADDR_EXPR pointers.
2322         (ptr_derefs_may_alias_p): Likewise.
2323         (ptr_deref_may_alias_ref_p_1): New function.
2324         (ptr_deref_may_alias_ref_p): Likewise.
2325         (ref_maybe_used_by_call_p_1): Handle builtins that are not
2326         covered by looking at the ESCAPED solution.
2327         (call_may_clobber_ref_p_1): Likewise.
2328         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
2329         Handle NULL_TREE offset.  Do not produce redundant constraints.
2330         (process_all_all_constraints): New helper function.
2331         (do_structure_copy): Use it.
2332         (handle_lhs_call): Likewise.
2333         (find_func_aliases): Handle some builtins with pointer arguments
2334         and/or return values explicitly.
2335
2336 2009-06-19  Ian Lance Taylor  <iant@google.com>
2337
2338         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
2339
2340 2009-06-19  Ian Lance Taylor  <iant@google.com>
2341
2342         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
2343
2344 2009-06-19  Ian Lance Taylor  <iant@google.com>
2345
2346         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
2347         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
2348         version.
2349
2350         * c-decl.c (finish_decl): If -Wc++-compat, warn about
2351         uninitialized const.
2352
2353 2009-06-19  Ian Lance Taylor  <iant@google.com>
2354
2355         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
2356         all uses.
2357
2358         * c-decl.c (in_struct, struct_types): Remove.
2359         (struct c_binding): Add in_struct field.
2360         (c_binding_ptr): Define type, along with VEC.
2361         (struct c_struct_parse_info): Define.
2362         (struct_parse_info): New static variable.
2363         (bind): Initialize in_struct field.
2364         (start_struct): Remove enclosing_in_struct and
2365         enclosing_struct_types parameters.  Add
2366         enclosing_struct_parse_info parameter.  Change all callers.  Set
2367         struct_parse_info rather than in_struct and struct_types.
2368         (grokfield): If -Wc++-compat and there is a symbol binding for the
2369         field name, set the in_struct flag and push it on the
2370         struct_parse_info->fields vector.
2371         (warn_cxx_compat_finish_struct): New static function.
2372         (finish_struct): Remove enclosing_in_struct and
2373         enclosing_struct_types parameters.  Add
2374         enclosing_struct_parse_info parameter.  Change all callers.  Don't
2375         set C_TYPE_DEFINED_IN_STRUCT here.  Call
2376         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
2377         parameter.  Only push on struct_types if warn_cxx_compat.
2378         (finish_enum): Only push on struct_types if warn_cxx_compat.
2379         (declspecs_add_type): Add loc parameter.  Change all callers.
2380         Change all error calls to error_at.  Pass loc, not input_location,
2381         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
2382         defined in a struct.  If -Wc++-compat and parsing a struct, record
2383         that a typedef name was used.
2384         * c-parser.c (c_parser_declspecs): Get location to pass to
2385         declspecs_add_type.
2386         (c_parser_struct_or_union_specifier): Update calls to start_struct
2387         and finish_struct.
2388         * c-tree.h (struct c_struct_parse_info): Declare.
2389         (finish_struct, start_struct): Update declarations.
2390         (declspecs_add_type): Update declaration.
2391
2392 2009-06-19  Ian Lance Taylor  <iant@google.com>
2393
2394         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
2395         variable with an anonymous type.
2396
2397 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
2398
2399         * see.c: Remove for real.
2400
2401 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
2402
2403         * optabs.h (enum optab_index): Add new OTI_significand.
2404         (significand_optab): Define corresponding macro.
2405         * optabs.c (init_optabs): Initialize significand_optab.
2406         * genopinit.c (optabs): Implement significand_optab using
2407         significand?f2 patterns.
2408         * builtins.c (expand_builtin_mathfn): Handle
2409         BUILT_IN_SIGNIFICAND{,F,L}.
2410         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
2411         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
2412
2413         * config/i386/i386.md (significandxf2, significand<mode>2): New
2414         expanders to implement significandf, significand and significandl
2415         built-ins as inline x87 intrinsics.
2416
2417 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
2418
2419         * config/avr/avr.c (avr_override_options): Remove setting value of
2420         PARAM_INLINE_CALL_COST.
2421
2422 2009-06-18  Richard Henderson  <rth@redhat.com>
2423
2424         PR 40488
2425         * tree-pass.h (TDF_ASMNAME): New.
2426         * tree-dump.c (dump_options): Add asmname.
2427         * doc/invoke.texi: Document it.
2428
2429         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
2430         (dump_decl_name): ...here.
2431         (dump_function_name): New flags arg; mind TDF_ASMNAME.
2432         (dump_generic_node): Update dump_function_name calls.
2433         (print_call_name): New flags arg; update all dump calls.
2434         * diagnostic.h (print_call_name): Update.
2435         * gimple-pretty-print.c (dump_gimple_call): Update.
2436
2437 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
2438
2439         PR target/40470
2440         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
2441
2442 2009-06-18  Diego Novillo  <dnovillo@google.com>
2443
2444         * doc/plugins.texi: Document plugin_is_GPL_compatible.
2445         * plugin.c (str_license): Declare.
2446         (try_init_one_plugin): Assert that the symbol
2447         'plugin_is_GPL_compatible' exists.
2448
2449 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
2450
2451         * see.c: Remove.
2452         * Makefile.in (OBJS-common): Remove see.o.
2453         (see.o): Remove.
2454         * common.opt (fsee): Mark as preserved for backward compatibility.
2455         * opts.c (common_handle_option): Add OPT_fsee to the backward 
2456         compatibility section.
2457         * passes.c (init_optimization_passes, pass_see): Remove pass.
2458         * timevar.def (TV_SEE): Remove.
2459         * tree-pass.h (pass_see): Remove declaration.
2460         * doc/invoke.texi (-fsee): Remove documentation.
2461         
2462 2009-06-18  Martin Jambor  <mjambor@suse.cz>
2463
2464         * tree-sra.c: Include statistics.h
2465         (sra_stats): New variable.
2466         (sra_initialize): Clear sra_stats.
2467         (create_access_replacement): Increment sra_stats.replacements.
2468         (get_access_replacement): Do not return twice.
2469         (analyze_all_variable_accesses): Increment statistics counter by the
2470         number of scalarized aggregates.
2471         (generate_subtree_copies): Increment sra_stats.subtree_copies.
2472         (sra_modify_expr): Increment sra_stats.exprs.
2473         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
2474         (sra_modify_assign): Increment sra_stats.exprs,
2475         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
2476         (perform_intra_sra): Update statistics counters.
2477         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
2478
2479 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
2480
2481         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
2482         (arm_scalar_mode_supported_p): New function.
2483
2484 2009-06-18  Paul Brook  <paul@codesourcery.com>
2485             Sandra Loosemore  <sandra@codesourcery.com>
2486
2487         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
2488         (__extendhfsf2, __truncsfhf2): Define.
2489         * config/arm/fp16.c: New file.
2490         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
2491         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
2492
2493 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
2494
2495         * doc/extend.texi (Half-Precision): New section.
2496         * doc/invoke.texi (Option Summary): List -mfp16-format.
2497         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
2498         * config/arm/arm.opt (mfp16-format=): New.
2499         * config/arm/arm.c: Include intl.h.
2500         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
2501         (TARGET_INVALID_RETURN_TYPE): Redefine.
2502         (TARGET_PROMOTED_TYPE): Redefine.
2503         (TARGET_CONVERT_TO_TYPE): Redefine.
2504         (arm_fp16_format): Define.
2505         (all_fpus): Add entry for neon-fp16.
2506         (fp_model_for_fpu): Likewise.
2507         (struct fp16_format): Declare.
2508         (all_fp16_formats): Define.
2509         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
2510         functions.
2511         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
2512         and no ldrh.
2513         (arm_legitimate_index_p): Treat HFmode like HImode.
2514         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
2515         (coproc_secondary_reload_class): Special-case HFmode.
2516         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
2517         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
2518         (arm_init_fp16_builtins): New.
2519         (arm_init_builtins): Call it.
2520         (arm_invalid_parameter_type): New.
2521         (arm_invalid_return_type): New.
2522         (arm_promoted_type): New.
2523         (arm_convert_to_type).
2524         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
2525         format.
2526         (arm_emit_fp16_const): New function.
2527         (arm_mangle_type): Mangle __fp16 as "Dh".
2528         * config/arm/arm.h (TARGET_VFPD32): Make it know about
2529         FPUTYPE_NEON_FP16.
2530         (TARGET_NEON_FP16): New.
2531         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
2532         (enum fputype): Add FPUTYPE_NEON_FP16.
2533         (enum arm_fp16_format_type): Declare.
2534         (arm_fp16_format): Declare.
2535         (LARGEST_EXPONENT_IS_NORMAL): Define.
2536         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
2537         * config/arm/arm-modes.def (HFmode): Define.
2538         * config/arm/vfp.md: (*movhf_vfp): New.
2539         (extendhfsf2): New.
2540         (truncsfhf2): New.
2541         * config/arm/arm.md: (fpu): Add neon_fp16.
2542         (floatsihf2, floatdihf2): New.
2543         (fix_trunchfsi2, fix_trunchfdi2): New.
2544         (truncdfhf2): New.
2545         (extendhfdf2): New.
2546         (movhf): New.
2547         (*arm32_movhf): New.
2548         (*thumb1_movhf): New.
2549         (consttable_2): Add check for HFmode constants.
2550         (consttable_4): Handle HFmode constants.
2551
2552 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
2553
2554         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
2555
2556 2009-06-17  Olivier Hainque  <hainque@adacore.com>
2557
2558         * collect2.c (main): Use CONST_CAST2 to perform char ** to
2559         const char ** conversion in AIX specific section.
2560         
2561 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
2562
2563         * config/i386/i386.c (ix86_special_builtin_type): Remove
2564         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
2565         (bdesc_special_args): Updated.
2566         (ix86_init_mmx_sse_builtins): Likewise.
2567         (ix86_expand_special_args_builtin): Likewise.
2568
2569 2009-06-17  Richard Henderson  <rth@redhat.com>
2570
2571         * tree-pretty-print.c (maybe_dump_asm_name): New.
2572         (dump_decl_name): Use it.
2573         (PRINT_FUNCTION_NAME): Merge into...
2574         (dump_function_name): ... here.  Use maybe_dump_asm_name.
2575
2576 2009-06-17  Cary Coutant  <ccoutant@google.com>
2577
2578         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
2579         Change caller.
2580         * debug.c (struct gcc_debug_hooks): Change placeholder for
2581         source_line hook.
2582         (debug_nothing_int_charstar_int): Replaced by...
2583         (debug_nothing_int_charstar_int_bool): ...this.
2584         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
2585         source_line prototype.
2586         (debug_nothing_int_charstar_int): Replaced by...
2587         (debug_nothing_int_charstar_int_bool): ...this.
2588         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
2589         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
2590         Output is_stmt operand when necessary.
2591         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
2592         (notice_source_line): Add is_stmt parameter.
2593         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
2594         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
2595         Change callers.
2596         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
2597         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
2598
2599 2009-06-17  Ian Lance Taylor  <iant@google.com>
2600
2601         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
2602         Change all uses.
2603         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
2604         call uses.
2605
2606 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
2607
2608         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
2609         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
2610         tree_strip_sign_nop_conversions and
2611         tree_ssa_strip_useless_type_conversions rather than stripping
2612         the operations here.
2613         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
2614         Declare them.
2615         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
2616         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
2617         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
2618         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
2619         functions.
2620
2621 2009-06-17  Michael Eager  <eager@eagercon.com>
2622
2623         * config/rs6000/constraints.md (register_constraint "d"): New.
2624         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
2625         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
2626         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
2627         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
2628         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
2629         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
2630         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
2631         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
2632         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
2633         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
2634         __fctiwz): Same.
2635         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
2636         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
2637         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
2638         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
2639         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2640         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
2641         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
2642         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
2643         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
2644         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
2645         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
2646         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
2647         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
2648         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
2649
2650 2009-06-16  Ian Lance Taylor  <iant@google.com>
2651
2652         * profile.c (total_num_never_executed): Don't define.
2653         (compute_branch_probabilities): Don't count or print
2654         num_never_executed.
2655         (init_branch_prob): Don't set total_num_never_executed.
2656         (end_branch_prob): Don't print total_num_never_executed.
2657
2658 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
2659
2660         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
2661
2662 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
2663
2664         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
2665         (nabstd2_fpr): Same.
2666
2667 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
2668
2669         * expr.c (expand_assignment): Change complex type check.
2670
2671 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
2672
2673         * doc/plugins.texi (Building GCC plugins): Added new section. 
2674
2675 2009-06-17  Ian Lance Taylor  <iant@google.com>
2676
2677         * c-pch.c (get_ident): Don't set size of templ array.
2678         (pch_init): Don't set size of partial_pch array.
2679
2680         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
2681         string constant to intialize an array whose size is the length of
2682         the string.
2683
2684 2009-06-17  Richard Guenther  <rguenther@suse.de>
2685
2686         PR tree-optimization/40389
2687         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
2688         to addressable types.
2689         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
2690
2691 2009-06-17  Richard Guenther  <rguenther@suse.de>
2692
2693         PR middle-end/40460
2694         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
2695         if there is no evolution of left in the loop bail out.
2696         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
2697         chrec_fold_multiply.
2698
2699 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
2700             Janis Johnson  <janis187@us.ibm.com>
2701
2702         PR target/39254
2703         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
2704         for the symbol ref of a constant that is the source of a move
2705         - nor for any other not-obvious-label-ref constants.
2706
2707 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
2708
2709         * plugin.c (position_pass): Skip newly inserted pass during list
2710         traversal to avoid repeated insertion.
2711
2712 2009-06-16  Ian Lance Taylor  <iant@google.com>
2713
2714         * vec.h (VEC_stack_alloc): Define different version if
2715         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
2716         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
2717         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
2718         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
2719
2720 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
2721
2722         * config.gcc (extra_headers): Add ia32intrin.h for x86.
2723
2724         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
2725         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
2726         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
2727         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
2728         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
2729         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
2730         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
2731         (bdesc_special_args): Add __builtin_ia32_rdtsc and
2732         __builtin_ia32_rdtscp.
2733         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
2734         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
2735         and __builtin_ia32_rorhi.
2736         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
2737         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
2738         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
2739         (ix86_expand_args_builtin): Likewise.
2740         (ix86_expand_special_args_builtin): Likewise.
2741
2742         * config/i386/i386.md (UNSPECV_RDTSCP): New.
2743         (UNSPECV_RDTSC): Likewise.
2744         (UNSPECV_RDPMC): Likewise.
2745         (*bsr): Renamed to ...
2746         (bsr): This
2747         (*bsr_rex64): Renamed to ...
2748         (bsr_rex64): This.
2749         (rdpmc): New.
2750         (*rdpmc): Likewise.
2751         (*rdpmc_rex64): Likewise.
2752         (rdtsc): Likewise.
2753         (*rdtsc): Likewise.
2754         (*rdtsc_rex64): Likewise.
2755         (rdtscp): Likewise.
2756         (*rdtscp): Likewise.
2757         (*rdtscp_rex64): Likewise.
2758
2759         * config/i386/ia32intrin.h: New.
2760
2761         * config/i386/x86intrin.h: Include <ia32intrin.h>.
2762
2763 2009-06-16  Ian Lance Taylor  <iant@google.com>
2764
2765         * ira-build.c (copy_info_to_removed_store_destinations):
2766         Initialize parent_a.
2767
2768 2009-06-16  Ian Lance Taylor  <iant@google.com>
2769
2770         * c-decl.c (grokdeclarator): Change size_varies to bool.
2771
2772 2009-06-16  Ian Lance Taylor  <iant@google.com>
2773
2774         * sel-sched.c: Make forward declarations of move_op_hooks and
2775         fur_hooks explicitly extern.
2776
2777 2009-06-16  Ian Lance Taylor  <iant@google.com>
2778
2779         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
2780         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
2781
2782 2009-06-16  Ian Lance Taylor  <iant@google.com>
2783
2784         * resource.c (mark_referenced_resources): Change
2785         include_delayed_effects parameter to bool.  Change all callers.
2786         (mark_end_of_function_resources): Likewise.
2787         * reorg.c (insn_references_resource_p): Likewise.
2788         (insn_sets_resource_p): Likewise.
2789         * resource.h (mark_referenced_resources): Update declaration.
2790         (mark_end_of_function_resources): Update declaration.
2791
2792 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
2793
2794         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
2795
2796 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
2797
2798         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
2799         GCC can bootstrap on AIX with GNU Binutils 2.20.
2800
2801 2009-06-16  Ian Lance Taylor  <iant@google.com>
2802
2803         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
2804
2805 2009-06-16  Ian Lance Taylor  <iant@google.com>
2806
2807         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
2808         inline, not extern inline.
2809         (exact_log2): Likewise.
2810         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
2811         test CLZ_HWI.
2812         (exact_log2): Likewise, but don't test CTZ_HWI.
2813
2814 2009-06-16  Ian Lance Taylor  <iant@google.com>
2815
2816         * bitmap.c (bitmap_clear): Don't declare as inline.
2817         * gimple.c (gimplify_assign): Likewise.
2818         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
2819         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
2820         (sched_scan_info): Remove duplicate definition.
2821
2822 2009-06-16  Ian Lance Taylor  <iant@google.com>
2823
2824         * c-common.c (skip_evaluation): Don't define.
2825         (c_inhibit_evaluation_warnings): Define global variable.
2826         (overflow_warning): Check c_inhibit_evaluation_warnings rather
2827         than skip_evaluation.
2828         (convert_and_check, warn_for_div_by_zero): Likewise.
2829         * c-common.h (skip_evaluation): Don't declare.
2830         (c_inhibit_evaluation_warnings): Declare.
2831         * c-parser.c (c_parser_typeof_specifier): Set
2832         c_inhibit_evaluation_warnings rather than skip_evaluation.
2833         (c_parser_conditional_expression): Likewise.
2834         (c_parser_binary_expression): Likewise.
2835         (c_parser_sizeof_expression): Likewise.
2836         (c_parser_alignof_expression): Likewise.
2837         * c-typeck.c (build_indirect_ref): Check
2838         c_inhibit_evaluation_warnings rather than skip_evaluation.
2839         (build_conditional_expr, build_binary_op): Likewise.
2840
2841 2009-06-16  Richard Guenther  <rguenther@suse.de>
2842
2843         * tree-ssa-alias.c (is_escape_site): Remove.
2844         * tree-ssa-alias.h (enum escape_type): Remove.
2845         (is_escape_site): Likewise.
2846         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
2847         via casts and asms without deferring to is_escape_site.
2848
2849 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
2850
2851         PR middle-end/40446
2852         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
2853         use gen_lowpart if op0 has complex mode.
2854
2855 2009-06-16  Richard Guenther  <rguenther@suse.de>
2856
2857         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
2858         variables add them to ESCAPED.
2859         (find_func_aliases): Do not make all indirectly stored values escaped.
2860
2861 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
2862
2863         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
2864         make_decl_one_only.
2865
2866 2009-06-16  Martin Jambor  <mjambor@suse.cz>
2867
2868         PR tree-optimization/40432
2869         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
2870         check whether we need to force gimple register operand.
2871
2872 2009-06-16  Martin Jambor  <mjambor@suse.cz>
2873
2874         PR tree-optimization/40413
2875         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
2876         build_ref_for_offset.
2877         (propagate_subacesses_accross_link): Fix a typo in a comment.
2878
2879 2009-06-16  Ira Rosen  <irar@il.ibm.com>
2880
2881         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
2882         with additional parameter.
2883         * tree-vectorizer.h (enum vect_def_type): Add new value
2884         vect_nested_cycle.
2885         (enum vect_relevant): Add comments.
2886         (vect_is_simple_reduction): Add new argument.
2887         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
2888         Detect nested cycles.
2889         (vect_is_simple_reduction): Update documentation, add an argument to
2890         distinguish inner-loop reduction from nested cycle, detect nested
2891         cycles, fix printings and indentation, don't swap operands in case
2892         of nested cycle.
2893         (get_initial_def_for_reduction): Handle subtraction.
2894         (vect_create_epilog_for_reduction): Add new argument to specify
2895         reduction variable.
2896         (vect_finalize_reduction): Handle subtraction, fix comments.
2897         (vectorizable_reduction): Handle nested cycles. In case of nested
2898         cycle keep track of the reduction variable position. Call 
2899         vect_is_simple_reduction with additional parameter. Use original
2900         statement code in reduction epilogue for nested cycle. Call
2901         vect_create_epilog_for_reduction with additional parameter.
2902         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
2903         inner-loop vectorization.
2904         (vect_recog_widen_sum_pattern): Likewise.
2905         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
2906         and reductions.
2907         (vect_mark_stmts_to_be_vectorized): Likewise.
2908         (vect_get_vec_def_for_operand): Handle nested cycles.
2909
2910 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2911
2912         * doc/invoke.texi (Debugging Options): Fix option index entries
2913         for -fdump-statistics, -frandom-seed add entries for
2914         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
2915         (FRV Options): Fix entries for -mTLS, -mtls.
2916         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
2917         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
2918         (M68hc1x Options): Fix @itemx for -mnominmax.
2919         (MCore Options): Fix entry for -mno-lsim.
2920         (MMIX Options): Fix entry for -mabi=mmixware.
2921         (PDP-11 Options): Fix entry for -mbcopy-builtin.
2922
2923 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
2924
2925         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
2926         Mention the plugin mode of gengtype.
2927         * doc/gty.texi (Source Files Containing Type Information): Likewise.
2928         * gengtype.c: Updated copyright.
2929         (plugin_files, nb_plugin_files) Added new static variables.
2930         (measure_input_list) Care about plugin_files.
2931         (write_rtx_next): Added early return in plugin mode.
2932         (create_file): Updated copyright year in generated file. Added
2933         asserts.
2934         (oprintf): Added early return if NULL outf.
2935         (get_output_file_with_visibility): Care of plugin_files.
2936         (get_output_file_name): May return null.
2937         (write_local): Added early return.
2938         (put_mangled_filename): Ditto.
2939         (finish_root_table): Added check for base_files.
2940         (write_roots): Care about null when plugins.
2941         (main): Added plugin mode.
2942
2943 2009-06-15  Ian Lance Taylor  <iant@google.com>
2944
2945         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
2946         * gcov.c (read_count_file): Add braces around variables declared
2947         before label.
2948
2949         * c.opt (Wjump-misses-init): New warning.
2950         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
2951         -Wall and -Wc++-compat if not already set.
2952         (c_common_post_options): Clear warn_jump_misses_init if it was not
2953         set.
2954         * c-decl.c (struct c_binding): Change type field to a union with
2955         new label field.  Make it the first field in the struct.  Update
2956         references to type to use u.type instead.
2957         (struct c_spot_bindings): Define.
2958         (struct c_goto_bindings): Define.
2959         (c_goto_bindings_p): Define, along with VECs.
2960         (struct c_label_vars): Define.
2961         (struct c_scope): Add has_label_bindings field.
2962         (bind_label, set_spot_bindings): New static functions.
2963         (decl_jump_unsafe, update_spot_bindings): New static functions.
2964         (update_label_decls): New static function.
2965         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
2966         Update binding u.label field to shadowed field.
2967         (c_binding_start_stmt_expr): New function.
2968         (c_binding_end_stmt_expr): New function.
2969         (pushdecl): Don't call c_begin_vm_scope.
2970         (make_label): Add defining and p_label_vars parameters.  Change
2971         all callers.
2972         (lookup_label): Correct test for whether a label has not yet been
2973         defined.  Call bind_label rather than bind.
2974         (warn_about_goto): New static function.
2975         (lookup_label_for_goto): New function.
2976         (declare_label): Call bind_label rather than bind.
2977         (check_earlier_gotos): New static function.
2978         (define_label): Don't give errors about jumping into statement
2979         expressions or scopes of variably modified types.  Call
2980         set_spot_bindings and check_earlier_gotos.  Call bind_label
2981         instead of bind.  Don't set label_context_stack_se or
2982         label_context_stack_vm.
2983         (c_get_switch_bindings): New function.
2984         (c_release_switch_bindings): New function.
2985         (c_check_switch_jump_warnings): New function.
2986         (start_function): Don't set label_context_stack_se or
2987         label_context_stack_vm.
2988         (finish_function): Likewise.
2989         * c-typeck.c (label_context_stack_se): Don't define.
2990         (label_context_stack_vm): Don't define.
2991         (c_finish_goto_label): Call lookup_label_for_goto rather than
2992         lookup_label.  Don't give errors about jumping into a statement
2993         expression or the scope of a variably modified type.  Don't set
2994         label_context_stack_se or label_context_stack_vm.
2995         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
2996         fields.  Add bindings field.
2997         (c_start_case): Don't set deleted fields.  Set bindings field.
2998         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
2999         or blocked_vm.  Call c_check_switch_jump_warnings.
3000         (c_finish_case): Don't test blocked_stmt_expr field.  Call
3001         c_release_switch_bindings.
3002         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
3003         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
3004         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
3005         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
3006         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
3007         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
3008         (c_begin_vm_scope, c_end_vm_scope): Don't define.
3009         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
3010         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
3011         (C_DECL_UNJUMPABLE_VM): Don't define.
3012         (C_DECL_UNDEFINABLE_VM): Don't define.
3013         (struct c_label_list): Don't define.
3014         (struct c_label_context_se): Don't define.
3015         (struct c_label_context_vm): Don't define.
3016         (struct c_spot_bindings): Declare.
3017         (c_bindings_start_stmt_expr): Declare.
3018         (c_bindings_end_stmt_expr): Declare.
3019         (lookup_label_for_goto): Declare.
3020         (c_get_switch_bindings, c_release_switch_bindings): Declare.
3021         (c_check_switch_jump_warnings): Declare.
3022         (label_context_stack_se, label_context_stack_vm): Don't declare.
3023         (c_finish_goto_label): Update declaration.
3024         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
3025         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
3026         (Warning Options): Document -Wjump-misses-init.
3027
3028 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
3029
3030         * tree-object-size.c (addr_object_size): Fix a pasto in the last
3031         change.
3032
3033 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
3034
3035         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
3036
3037 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
3038
3039         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
3040
3041 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
3042
3043         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
3044
3045 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
3046
3047         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
3048         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
3049         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
3050         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
3051         * dwarf2asm.c (dw2_force_const_mem): Update call to
3052         make_decl_one_only.
3053         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
3054         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
3055         * langhooks.c (lhd_comdat_group): Remove.
3056         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
3057         * tree.h (DECL_COMDAT_GROUP): New.
3058         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
3059         (tree_decl_with_vis): Add comdat_group. Remove one_only.
3060         (make_decl_one_only): Change signature.
3061         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
3062         make_decl_one_only.
3063         (make_decl_one_only): Change signature.
3064         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
3065
3066 2009-06-15  Richard Guenther  <rguenther@suse.de>
3067
3068         PR middle-end/40439
3069         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
3070
3071 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3072
3073         * tree-ssa-math-opts.c: Remove extra divide.
3074
3075 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3076
3077         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
3078
3079 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3080
3081         * passes.c: Add bswap pass.
3082         * tree-pass.h: Add pass_optimize_bswap declaration.
3083         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
3084         Include rtl.h, expr.h and optabs.h for optab_handler check.
3085         (struct symbolic_number, pass_optimize_bswap): New definition.
3086         (do_shift_rotate, verify_symbolic_number_p): New functions.
3087         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
3088         (gate_optimize_bswap): New function.
3089         * tree.c (widest_int_cst_value): New function.
3090         * tree.h (widest_int_cst_value): Prototype added.
3091
3092 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
3093
3094         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
3095         REG_EQUAL/REG_EQUIV notes.
3096
3097 2009-06-14  Richard Guenther  <rguenther@suse.de>
3098
3099         PR middle-end/40389
3100         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
3101         has its address taken if NRV was applied and it is addressable.
3102         * tree-ssa-structalias.c (get_constraint_for_address_of): New
3103         function split out from ...
3104         (get_constraint_for_1): ... here.
3105         (handle_rhs_call): Use it to mark the return slot escaped if
3106         it is addressable and NRV was applied.
3107
3108 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
3109
3110         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
3111         Change first argument type to location_t.
3112         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
3113         Do not set input_location.
3114         Use loc instead of input_location throughout.
3115
3116 2009-06-13  Richard Guenther  <rguenther@suse.de>
3117
3118         PR tree-optimization/40421
3119         * tree-predcom.c (should_unroll_loop_p): Remove.
3120         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
3121
3122 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
3123
3124         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3125         Add location argument.
3126
3127 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
3128
3129         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
3130         build_decl.
3131         * config/s390/s390.c (s390_build_builtin_va_list): Same.
3132         (s390_gimplify_va_arg): Pass location to create_artificial_label.
3133         * config/spu/spu-protos.h: Add location to
3134         spu_resolve_overloaded_builtin.
3135         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
3136         spu_build_builtin_va_list.
3137         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
3138         argument.  Pass location to build_function_call_vec.
3139         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
3140         build_decl.
3141         (emit_fpu_switch): Same.
3142         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
3143         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
3144         to build_decl and create_artificial_label.
3145         (xtensa_gimplify_va_arg_expr): Same.
3146         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
3147         (xstormy16_gimplify_va_arg_expr): Same.
3148         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
3149         * config/arm/arm.c (arm_build_builtin_va_list): Same.
3150         * config/mips/mips.c (mips_build_builtin_va_list): Same.
3151         (mips16_build_function_stub): Same.
3152         (mips16_build_call_stub): Same.
3153
3154 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
3155
3156         PR target/40327
3157         * arm/constraints.md (Pa, Pb): New constraints.
3158         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a 
3159         split pattern to deal with them.
3160
3161 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
3162
3163         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
3164         fix index entry for -Xpreprocessor.
3165
3166 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
3167
3168         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
3169         Add location argument to build_decl call.
3170         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
3171         (rs6000_init_builtins): Same.
3172         (spe_init_builtins): Same.
3173         (rs6000_gimplify_va_arg): Add location argument to
3174         create_artificial_label call.
3175
3176 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
3177
3178         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
3179         * combine-stack-adj.c (pass_stack_adjustments): Use it.
3180         * Makefile.in: Fix GGC dependency for gcse.o.
3181
3182 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
3183
3184         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
3185         * gimple-pretty-print.c (dump_gimple_stmt): Same.
3186         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
3187         created.
3188         * c-parser.c (c_parser_binary_expression): Use current column while
3189         building binary operations.
3190         * common.opt (fshow-column): Enable by default.
3191         * tree-vrp.c (check_array_ref): Use warning_at.
3192         (check_array_bounds): Use location from call back if expr has no
3193         location.
3194         * tree.h: Add location argument to maybe_fold_*.
3195         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
3196         (maybe_fold_offset_to_array_ref): Add location argument and use it.
3197         (maybe_fold_offset_to_component_ref): Same.
3198         (maybe_fold_offset_to_reference): Same.
3199         (maybe_fold_offset_to_address): Same.
3200         (maybe_fold_stmt_indirect): Same.
3201         (maybe_fold_stmt_addition): Same.
3202         (fold_stmt_r): Pass location to maybe_fold_*.
3203         (fold_gimple_assign): Same.
3204         * c-tree.h: Add location argument to finish_decl,
3205         default_function_array_conversion, store_init_value.
3206         * c-decl.c (define_label): Use error_at.
3207         (c_make_fname_decl): Pass location to finish_decl.
3208         (finish_decl): New location argument.
3209         (build_compound_literal): Pass location to store_init_value.
3210         (grokdeclarator): Pass location to finish_decl.
3211         (grokfield): Same.
3212         * c-typeck.c (array_to_pointer_conversion): New location argument.
3213         (function_to_pointer_conversion): Same.
3214         (default_function_array_conversion): Same.
3215         (parser_build_unary_op): Pass location to overflow_warning.
3216         (parser_build_binary_op): Same.  Use warning_at.
3217         (build_unary_op): Pass location to array_to_pointer_conversion.
3218         (build_c_cast): Pass location to digest_init.
3219         (build_modify_expr): New location argument.
3220         (convert_for_assignment): Same.
3221         (store_init_value): Same.
3222         (digest_init): Same.
3223         (output_init_element): Pass location to digest_init and
3224         array_to_pointer_conversion.
3225         (c_finish_return): Pass location to convert_for_assignment.
3226         * gimplify.c (gimplify_conversion): Pass location to
3227         maybe_fold_offset_to_address.
3228         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
3229         to maybe_fold_stmt_addition.
3230         * c-omp.c (c_finish_omp_atomic): Pass new location to
3231         build_modify_expr.
3232         (c_finish_omp_for): Same.
3233         * c-common.c (overflow_warning): New argument.
3234         * c-common.h: New argument to build_modify_expr, overflow_warning.
3235         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
3236         finish_decl.
3237         (c_parser_initializer): Pass location to
3238         default_function_array_conversion.
3239         (c_parser_initelt): Same.
3240         (c_parser_initval): Same.
3241         (c_parser_asm_operands): Same.
3242         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
3243         (c_parser_conditional_expression): Same.
3244         (c_parser_binary_expression): Add location info to stack.  Use it.
3245         (c_parser_unary_expression): Pass location to
3246         default_function_array_conversion, parser_build_unary_op,
3247         build_indirect_ref, c_parser_postfix_expression_after_primary.
3248         (c_parser_postfix_expression_after_primary): New location argument.
3249         Use it.
3250         (c_parser_expression_conv): Pass location to
3251         default_function_array_conversion.
3252         (c_parser_expr_list): Same.
3253         (c_parser_omp_atomic): Same.
3254         (c_parser_omp_for_loop): Same.
3255         * c-tree.h: (struct c_declarator): Add comment to id_loc.
3256         (build_array_declarator): New argument.
3257         * c-decl.c (build_array_declarator): Add location argument.
3258         (grokdeclarator): Set id_loc for cdk_array.
3259         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
3260         build_array_declarator.
3261         * tree.c (build_omp_clause): Add location argument.
3262         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
3263         (OMP_CLAUSE_LOCATION): New macro.
3264         (struct tree_omp_clause): Add location field.
3265         (build_omp_clause): Add argument.
3266         * testsuite/gcc.dg/gomp/for-1.c: Fix column.
3267         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
3268         build_omp_clause.
3269         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
3270         (cp_parser_omp_clause_collapse): Same.
3271         (cp_parser_omp_clause_default): Same.
3272         (cp_parser_omp_clause_if): Same.
3273         (cp_parser_omp_clause_nowait): Same.
3274         (cp_parser_omp_clause_num_threads): Same.
3275         (cp_parser_omp_clause_ordered): Same.
3276         (cp_parser_omp_clause_schedule): Same.
3277         (cp_parser_omp_clause_untied): Same.
3278         (cp_parser_omp_for_loop): Same.
3279         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
3280         * c-tree.h (c_start_case): Add location argument.
3281         (c_process_expr_stmt): Same.
3282         (c_finish_goto_*): Same.
3283         * tree-parloops.c (initialize_reductions): Pass location to
3284         build_omp_clause.
3285         (create_parallel_loop): Same.
3286         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
3287         (gfc_trans_omp_reduction_list): Same.
3288         (gfc_trans_omp_clauses): Same.
3289         (gfc_trans_omp_do): Same.
3290         * c-typeck.c (c_finish_goto_label): Same.
3291         (c_finish_goto_ptr): New location argument.
3292         (c_start_case): Same.
3293         (emit_side_effect_warnings): Same.
3294         (c_process_expr_stmt): Same.
3295         (c_finish_stmt_expr): Same.
3296         (c_finish_omp_clauses): Use error_at instead of error.
3297         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
3298         build_omp_clause.
3299         * c-omp.c (c_split_parallel_clauses): New location argument.
3300         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
3301         to build_omp_clause.
3302         (convert_local_reference_stmt): Same.
3303         (convert_gimple_call): Same.
3304         * c-common.h (c_split_parallel_clauses): New argument.
3305         * c-parser.c (c_parser_statement_after_labels): Pass location to
3306         c_finish_goto_label.
3307         (c_parser_switch_statement): Pass location to c_start_case.
3308         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
3309         and c_process_expr_stmt.
3310         (c_parser_omp_variable_list): Add location argument.
3311         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
3312         (c_parser_omp_clause_default): Same.
3313         (c_parser_omp_clause_if): Same.
3314         (c_parser_omp_clause_num_threads): Same.
3315         (-c_parser_omp_clause_ordered): Same.
3316         (c_parser_omp_clause_reduction): Pass location to
3317         c_parser_omp_variable_list.
3318         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
3319         (c_parser_omp_clause_untied): Same.
3320         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
3321         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
3322
3323         * c-tree.h (check_for_loop_decls, undeclared_variable,
3324         build_component_ref, build_array_ref, build_external_ref,
3325         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
3326         build_conditional_expr, build_compound_expr, c_cast_expr,
3327         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
3328         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
3329         argument.
3330         * c-semantics.c (build_stmt): Same.
3331         (build_case_label): Same.
3332         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
3333         (undeclared_variable): New argument.
3334         (make_label): Same.
3335         (lookup_label): Pass location on down.
3336         (define_label): Same.
3337         (finish_decl): Same.
3338         (build_compound_literal): Same.
3339         (finish_struct): Same.
3340         (finish_function): Do not set location here.
3341         (check_for_loop_decls): New argument.
3342         * tree.c (save_expr): Set location.
3343         (build_empty_stmt): New argument.
3344         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
3345         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
3346         * builtins.c (gimplify_va_arg_expr): Use locations.
3347         (expand_builtin_sync_operation): Same.
3348         * c-typeck.c (build_component_ref): New argument.
3349         (build_array_ref): Same.
3350         (build_external_ref): Same.
3351         (c_expr_sizeof_expr): Same.
3352         (c_expr_sizeof_type): Same.
3353         (parser_build_unary_op): Same.
3354         (build_conditional_expr): Same.
3355         (build_compound_expr): Pass location on down.
3356         (build_compound_expr): New argument.
3357         (build_c_cast): Same.
3358         (c_cast_expr): Same.
3359         (build_asm_expr): Same.
3360         (c_finish_return): Same.
3361         (c_process_expr_stmt): Pass location on down.
3362         (c_finish_stmt_expr): New argument.
3363         (push_clenaup): Same.
3364         (c_finish_omp_parallel): Same.
3365         (c_finish_omp_task): Same.
3366         * gimplify.c (gimplify_call_expr): Pass location on down.
3367         * c-omp.c (c_finish_omp_master): New argument.
3368         (c_finish_omp_critical): Same.
3369         (c_finish_omp_ordered): Same.
3370         (c_finish_omp_barrier): Same.
3371         (-c_finish_omp_taskwait): Same.
3372         (c_finish_omp_atomic): Same.
3373         (c_finish_omp_flush): Same.
3374         * tree-inline.c (copy_tree_body_r): Pass location on down.
3375         (inline_forbidden_p): Remove use of input_location.
3376         * c-gimplify.c (c_build_bind_expr): New argument.
3377         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
3378         (c_sizeof_or_alignof_type): New argument.
3379         (c_alignof_expr): Same.
3380         (build_va_arg): Same.
3381         (c_add_case_label): Same.
3382         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
3383         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
3384         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
3385         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
3386         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
3387         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
3388         New argument.
3389         * stub-objc.c (objc_build_selector_expr): Same.
3390         (objc_build_throw_stmt): Same.
3391         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
3392         (c_parser_initelt): Same.
3393         (c_parser_compound_statement): Same.
3394         (c_parser_compound_statement_nostart): Same.
3395         (c_parser_label): Same.
3396         (c_parser_statement_after_labels): Same.
3397         (c_parser_if_body): Same.
3398         (c_parser_else_body): Same.
3399         (c_parser_if_statement): Same.
3400         (c_parser_switch_statement): Same.
3401         (c_parser_while_statement): Same.
3402         (c_parser_do_statement): Same.
3403         (c_parser_for_statement): Same.
3404         (c_parser_asm_statement): Same.
3405         (c_parser_conditional_expression): Same.
3406         (c_parser_binary_expression): Same.
3407         (c_parser_cast_expression): Same.
3408         (c_parser_unary_expression): Same.
3409         (c_parser_sizeof_expression): Same.
3410         (c_parser_alignof_expression): Same.
3411         (c_parser_postfix_expression): Same.
3412         (c_parser_expression): Same.
3413         (c_parser_objc_receiver): Same.
3414         (c_parser_omp_variable_list): Same.
3415         (c_parser_omp_structured_block): Same.
3416         (c_parser_omp_atomic): New argument.
3417         (c_parser_omp_barrier): Same.
3418         (c_parser_omp_critical): Same.
3419         (c_parser_omp_flush): Pass location on down.
3420         (c_parser_omp_for_loop): New argument.
3421         (c_parser_omp_for): Same.
3422         (c_parser_omp_master): Same.
3423         (c_parser_omp_ordered): Same.
3424         (c_parser_omp_sections_scope): Same.
3425         (c_parser_omp_sections): Same.
3426         (c_parser_omp_parallel): Same.
3427         (c_parser_omp_single): Same.
3428         (c_parser_omp_task): Same.
3429         (c_parser_omp_taskwait): Pass location on down.
3430         (c_parser_omp_construct): Same.
3431         (c_parser_omp_threadprivate): Same.
3432         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
3433         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
3434         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
3435         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
3436         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
3437         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
3438         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
3439         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
3440         config/i386/i386.c, stmt.c:
3441         Add location argument to the following function definitions and/or
3442         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
3443         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
3444         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
3445         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
3446         do_case, c_finish_bc_stmt, build_compound_literal,
3447         build_function_call.
3448         * c-decl.c (build_compound_literal): Add location argument.
3449         Make all diagnostic calls use location.
3450         (start_struct): Same.
3451         (finish_struct): Same.
3452         (start_enum): Same.
3453         (build_enumerator): Same.
3454         (start_function): Same.
3455         (grokdeclarator): Make all diagnostic calls use location.
3456         (store_parm_decls_oldstyle): Same.
3457         * c-typeck.c (build_function_call): Add location argument.
3458         Make all diagnostic calls use location.
3459         (do_case): Same.
3460         (c_finish_bc_stmt): Same.
3461         * tree-nested.c (get_trampoline_type): Add argument.
3462         Pass location to build_decl.
3463         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
3464         * rtl.h (RTL_LOCATION): New.
3465         * c-common.c (c_add_case_label): Add location argument.
3466         Make all diagnostic calls use location.
3467         * c-common.h: Add location argument to make_fname_decl, do_case,
3468         c_add_case_label, build_function_call, resolve_overloaded_builtin.
3469         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
3470         Set it appropriately for every case.  Pass enum_loc to start_enum
3471         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
3472         parser_xref_tag.
3473         (c_parser_struct_or_union_specifier): Save location.  Use it for
3474         start_struct, finish_struct, and parser_xref_tag.
3475
3476 2009-06-12  Ian Lance Taylor  <iant@google.com>
3477
3478         * fold-const.c (fold_unary): Rename local variable and to and_expr.
3479
3480         * c-opts.c (c_common_handle_option): For -Wc++-compat set
3481         cpp_opts->warn_cxx_operator_names.
3482
3483 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3484
3485         PR tree-opt/38865
3486         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
3487         is returns NULL and OP is a VCE, look through the VCE.
3488
3489 2009-06-12  Ian Lance Taylor  <iant@google.com>
3490
3491         PR bootstrap/40430
3492         * collect2.c (main): Use CONST_CAST2 in code inside #if
3493         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
3494
3495 2009-06-12  Joey Ye  <joey.ye@intel.com>
3496
3497         PR middle-end/39146
3498         * cfgexpand.c (get_decl_align_unit): Update
3499         max_used_stack_slot_alignment with align instead of
3500         stack_alignment_needed.
3501
3502         * function.c (assign_stack_local_1): Update
3503         max_used_stack_slot_alignment with alignment_in_bits instead
3504         of stack_alignment_needed.
3505         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
3506         here.
3507
3508 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
3509
3510         * dwarf2out.c (last_var_location_insn): New variable.
3511         (dwarf2out_end_epilogue): Clear last_var_location_insn.
3512         (dwarf2out_var_location): Don't record anything after last real
3513         insn.  Only change labels if there were any real instructions
3514         in between last note and this one, or if changed sections.
3515
3516 2009-06-11  Richard Henderson  <rth@redhat.com>
3517
3518         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
3519         note when storing the frame pointer in a register.
3520         (FRP): Don't redefine to nothing for epilogue.
3521         (alpha_expand_epilogue): Mark register and sp restores.
3522         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
3523
3524         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
3525         when gen_lowpart is needed.
3526
3527 2009-06-11  Richard Henderson  <rth@redhat.com>
3528
3529         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
3530
3531         * dwarf2out.c (need_data_align_sf_opcode): New.
3532         (div_data_align): Move earlier.
3533         (def_cfa_1, reg_save): Use it.
3534
3535 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
3536
3537         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
3538         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
3539         (ix86_handle_option): Handle OPT_mcrc32.
3540         (ix86_target_string): Add -mcrc32.
3541         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
3542
3543         * config/i386/i386.h (TARGET_CRC32): New.
3544
3545         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
3546         (sse4_2_crc32di): Likewise.
3547
3548         * config/i386/i386.opt (mcrc32): New.
3549
3550         * doc/invoke.texi: Document -mcrc32.
3551
3552 2009-06-11  Richard Henderson  <rth@redhat.com>
3553
3554         * common.opt (gdwarf-): Accept a version number.
3555         * doc/invoke.texi (gdwarf-): Update docs.
3556         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
3557         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
3558         version level, and record it.
3559
3560         * dwarf2.h (DW_CIE_VERSION): Remove.
3561         * dwarf2out.c (DWARF_VERSION): Remove.
3562         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
3563         (output_call_frame_info): Use CIE version 3 for dwarf3,
3564         or if the return register column is out of range for version 1.
3565         (dwarf_stack_op_name): Add all dwarf3 values.
3566         (DEBUG_PUBTYPES_SECTION): New.
3567         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
3568         encoding change for dwarf3.
3569         (output_die) [dw_val_class_die_ref]: Likewise.
3570         (output_compilation_unit_header): Emit correct version for dwarf3.
3571         (output_line_info): Likewise.
3572         (output_pubnames): Update for DWARF_VERSION removal.
3573         (output_aranges): Likewise.
3574         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
3575         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
3576         (dwarf2out_finish): Likewise.
3577
3578 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
3579
3580         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
3581         in r148403.
3582
3583 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
3584
3585         PR c/39252
3586         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
3587         * builtins.c (expand_builtin_unreachable): New function.
3588         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
3589         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
3590         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
3591         successors.
3592         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
3593         searching for missing barriers.
3594
3595 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3596
3597         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
3598         when -fprofile-generate* was passed.
3599         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
3600
3601 2009-06-11  Anthony Green  <green@moxielogic.com>
3602
3603         * config/moxie/moxie.md: Define length attribute for all instructions.
3604         (rCC): Define.
3605         (*b<cond:code>): Support limited branch ranges for new PC-relative
3606         branch instructions.
3607         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
3608
3609 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
3610
3611         * config/i386/i386.c (min_insn_size): Use get_attr_length
3612         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
3613         For __asm return 0.
3614
3615         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
3616         instead of emit_insn_before.
3617
3618 2009-06-10  Ian Lance Taylor  <iant@google.com>
3619
3620         PR bootstrap/40408
3621         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
3622         GIMPLE_SWITCH.
3623
3624 2009-06-10  Revital Eres  <eres@il.ibm.com>
3625
3626         * passes.c (init_optimization_passes): Reschedule
3627         predictive-commoning pass before complete unroll pass.
3628
3629 2009-06-10  Martin Jambor  <mjambor@suse.cz>
3630
3631         * cgraph.c (cgraph_node_can_be_local_p): New function.
3632         (cgraph_make_node_local): New function.
3633         * cgraph.h (cgraph_node_can_be_local_p): Declare.
3634         (cgraph_make_node_local): Declare.
3635
3636 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
3637
3638         * tree.h (tree_base): Add packed_flag and user_align fields.
3639         Decrease size of spare field.
3640         (TYPE_USER_ALIGN): Use user_align from tree_base.
3641         (DECL_USER_ALIGN): Likewise.
3642         (TYPE_PACKED): Use packed_flag from tree_base.
3643         (DECL_PACKED): Likewise.
3644         (tree_type): Delete packed_flag and user_align fields.  Widen
3645         precision field.  Widen mode field and shuffle fields to align
3646         mode on an 8-bit boundary.
3647         (tree_decl_common): Delete decl_flag_1 and user_align fields.
3648         Renumber decl_flag_* fields.  Fix comments.  Widen
3649         decl_common_unused field.
3650         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
3651         (DECL_EXTERNAL): Likewise.
3652         (DECL_BIT_FIELD): Likewise.
3653         (DECL_NONADDRESSABLE_P): Likewise.
3654         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
3655         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
3656
3657 2009-06-10  Ian Lance Taylor  <iant@google.com>
3658
3659         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
3660         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
3661         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
3662         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
3663         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
3664         DEF_VEC_ALLOC_FUNC_P.
3665         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
3666         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
3667         DEF_VEC_ALLOC_FUNC_O.
3668         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
3669         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
3670         DEF_VEC_ALLOC_FUNC_I.
3671         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
3672         (vec_stack_p_reserve_exact_1): Declare.
3673         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
3674         (vec_stack_free): Declare.
3675         (VEC_stack_alloc): Define.
3676         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
3677         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
3678         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
3679         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
3680         for void_p.
3681         (stack_vecs): New static variable.
3682         (vec_stack_p_reserve_exact_1): New function.
3683         (vec_stack_o_reserve_1): New static function.
3684         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
3685         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
3686         (vec_stack_free): New function.
3687         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
3688         (VEC_df_ref_stack_alloc): Define.
3689         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
3690         DEF_VEC_ALLOC_P_STACK.
3691         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
3692         (struct df_collection_rec): Change _vec fields to VEC.  Remove
3693         _use fields.
3694         (df_free_collection_rec): Adjust for new fields.
3695         (df_insn_rescan): Use new df_collection_rec fields.
3696         (df_notes_rescan, df_canonize_collection_rec): Likewise.
3697         (df_ref_create_structure, df_ref_record): Likewise.
3698         (df_get_conditional_uses, df_get_call_refs): Likewise.
3699         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
3700         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
3701         (df_record_exit_block_uses, df_bb_verify): Likewise.
3702         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
3703         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
3704         Remove count parameter.  Change return type to void.  Change all
3705         callers.
3706         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
3707         Remove count parameter.  Change return type to void.  Change all
3708         callers.
3709         (df_install_refs): Change old_vec parameter to VEC.  Remove count
3710         parameter.  Change all callers.
3711         (df_install_mws): Change old_vec parameter to VEC.  Remove count
3712         parameter.  Change all callers.
3713         (df_refs_verify): Change new_rec parameter to VEC.  Change call
3714         callers.
3715         (df_mws_verify): Likewise.
3716
3717 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
3718
3719         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
3720
3721 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
3722
3723         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
3724
3725 2009-06-10  Anthony Green  <green@moxielogic.com>
3726
3727         * config/moxie/crti.asm: New file.
3728         * config/moxie/crtn.asm: New file.
3729         * config/moxie/moxie.c: New file.
3730         * config/moxie/moxie.h: New file.
3731         * config/moxie/sfp-machine.h: New file.
3732         * config/moxie/moxie-protos.h: New file.
3733         * config/moxie/t-moxie: Created.
3734         * config/moxie/t-moxie-softfp: Created.
3735         * config/moxie/moxie.md: Created.
3736         * config/moxie/constraints.md: Created.
3737         * config.gcc: Add moxie support.
3738         * doc/md.texi (Machine Constraints): Add moxie constraints.
3739         * doc/contrib.texi (Contributors): Mention moxie port.
3740         * doc/install.texi (Specific): Mention the moxie port.
3741
3742 2009-06-09  Ian Lance Taylor  <iant@google.com>
3743
3744         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
3745         compiling with C++.
3746         * optabs.c (optab_table): Only use designated initializers if
3747         HAVE_DESIGNATED_INITIALIZERS is defined.
3748         (convert_optab_table): Likewise.
3749         (init_optabs): Always call init_insn_codes if
3750         HAVE_DESIGNATED_INITIALIZERS is not defined.
3751
3752 2009-06-09  Ian Lance Taylor  <iant@google.com>
3753
3754         * targhooks.c (default_builtin_vectorized_function): Change fn
3755         parameter to unsigned int.
3756         (default_builtin_vectorized_conversion): Change code parameter to
3757         unsigned int.
3758         (default_builtin_reciprocal): Change fn parameter to unsigned int.
3759         * targhooks.h: Update declarations.
3760         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
3761         parameter to unsigned int.
3762
3763         * c-typeck.c (comptypes_check_enum_int): New static function.
3764         (comptypes_internal): Add enum_and_int_p parameter.  Change all
3765         callers.
3766         (comp_target_types): Add location parameter.  Change all callers.
3767         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
3768         Change all callers.
3769         (function_types_compatible_p, type_lists_compatible_p): Likewise.
3770         (build_conditional_expr): Add colon_loc parameter.  Change all
3771         callers.
3772         (convert_for_assignment): Add location parameter.  Change all callers.
3773         * c-parser.c (c_parser_conditional_expression): Pass location of
3774         colon to build_conditional_expr.
3775         * c-tree.h (build_conditional_expr): Update declaration.
3776
3777 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
3778
3779         * graphite.c: Revert previous patch.
3780
3781 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
3782
3783         PR bootstrap/40103
3784         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
3785
3786 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
3787
3788         * tree-ssa-loop-prefetch.c
3789         (loop_prefetch_arrays): Fixed a portability problem in printf format
3790         string.
3791
3792 2009-06-09  Martin Jambor  <mjambor@suse.cz>
3793
3794         PR tree-optimization/40351
3795         * tree-sra.c (propagate_subacesses_accross_link): Check that a
3796         refrence to a potential artifical subaccess can be constructed.
3797
3798 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
3799
3800         * config/sh/sh-protos.h (sh_optimization_options): Declare.
3801         (sh_override_options): Likewise.
3802         * config/sh/sh.c: Include params.h.
3803         (sh_optimization_options): New.
3804         (sh_override_options): Likewise.
3805         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
3806         (OVERRIDE_OPTIONS): Use sh_override_options.
3807
3808 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
3809
3810         * dwarf2out.c (emit_cfa_remember): New variable.
3811         (add_fde_cfi): If emit_cfa_remember, recurse to add
3812         DW_CFA_remember_state first.
3813         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
3814         instead just set emit_cfa_remember.
3815
3816 2009-06-08  Jan Hubicka  <jh@suse.cz>
3817
3818         PR debug/40126
3819         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
3820
3821 2009-06-08  Jan Hubicka  <jh@suse.cz>
3822
3823         PR middle-end/39834
3824         * cgraphunit.c (save_inline_function_body): Do not copy transform
3825         hooks for saved inline bodies.
3826         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
3827         for given function.
3828
3829 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
3830
3831         * jump.c (returnjump_p): Handle delayed branches.  Add missing
3832         function comment.
3833
3834 2009-06-08  Jan Hubicka  <jh@suse.cz>
3835
3836         PR middle-end/40102
3837         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
3838         original node might've been modified.
3839         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
3840
3841 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
3842
3843         * tree-object-size.c (addr_object_size): Add OSI argument.
3844         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
3845         (compute_builtin_object_size, expr_object_size): Adjust callers.
3846         (plus_stmt_object_size): Call addr_object_size instead of
3847         compute_builtin_object_size.
3848
3849 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
3850             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3851         
3852         * tree-ssa-loop-prefetch.c 
3853         (gather_memory_references): Introduced a counter for the number of 
3854         memory references.
3855         (anything_to_prefetch_p): Introduced a counter for the number of 
3856         prefetches.
3857         (is_loop_prefetching_profitable): New function with a cost model 
3858         for prefetching.
3859         (loop_prefetch_arrays): Use the new cost model to determine if 
3860         prefetching is profitable.
3861         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
3862         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
3863         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
3864         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
3865         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
3866         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
3867         
3868 2009-06-08  Michael Matz  <matz@suse.de>
3869
3870         PR debug/40012
3871         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
3872         partitions use the same.
3873         (expand_one_var): Deal with DECL_RTL sometimes begin set also
3874         for basevars of SSA_NAMEs.
3875         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
3876         to not expand them twice.
3877         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
3878         multiple places.
3879
3880 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
3881
3882         * common.opt (fcompare-debug=, fcompare-debug-second): New.
3883         (fdump-final-insns=, gtoggle): New.
3884         * doc/invoke.texi: Document them.
3885         * final.c (rest_of_clean_state): Dump final insn stream.
3886         * gcc.c (invoke_as): Hook in -fcompare-debug.
3887         (static_spec_functions): Add compare-debug-dump-opt,
3888         compare-debug-self-opt and compare-debug-auxbase-opt.
3889         (compare_debug, compare_debug_second, compare_debug_opt): New.
3890         (switches_debug_check, n_switches_debug_check): New.
3891         (debug_auxbase_opt, debug_check_temp_file): New.
3892         (process_command): Handle -fno-compare-debug, -fcompare-debug and
3893         -fcompare-debug=*.
3894         (do_self_spec): Handle arguments after switches.
3895         (do_spec_1): Add .gk extension to temp file basenames for compare.
3896         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
3897         (cc1_options): Use it instead of normal auxbase computation for
3898         the second compare-debug compilation.
3899         (compare_files): New.
3900         (main): Set up and implement compare debug mode.
3901         (compare_debug_dump_opt_spec_function): New.
3902         (compare_debug_self_opt_spec_function): New.
3903         (compare_debug_auxbase_opt_spec_function): New.
3904         * toplev.c (process_options): Handle flag_gtoggle,
3905         flag_dump_final_insns.
3906         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
3907         during -fcompare-debug-second compilation.
3908
3909 2009-06-07  Ian Lance Taylor  <iant@google.com>
3910
3911         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
3912         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
3913
3914         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
3915         with no default node.  Change warning with %H to warning_at.
3916         Don't clear warn_switch around case checking.
3917         * doc/invoke.texi (Warning Options): Clarify distinction between
3918         -Wswitch and -Wswitch-enum.
3919
3920 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3921
3922         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
3923
3924 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3925
3926         * gbl-ctors.h: Add header guard.
3927
3928 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3929
3930         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
3931         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
3932         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
3933         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
3934         prototypes for removed functions.
3935         (expressions_equal_p): Move to ...
3936         * tree-ssa-sccvn.h: ... here and ...
3937         * matrix-reorg.c: ... adjust includes.
3938
3939 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3940
3941         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
3942
3943 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3944
3945         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
3946         (finish_function): Remove erroneous whitespace.
3947
3948 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3949
3950         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
3951         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
3952
3953 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3954
3955         * errors.c (internal_error): Commentary typo fix.
3956         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
3957         * tree-ssa-pre.c: Ditto.
3958
3959 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
3960
3961         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
3962         them is supposed to hold actual statements.
3963
3964 2009-06-06  Ian Lance Taylor  <iant@google.com>
3965
3966         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
3967         empty statements can now have attributes.
3968
3969 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
3970
3971         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
3972         * config/mips/mips.md: Ditto.
3973
3974 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
3975
3976         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
3977         _RELOCATABLE.
3978         (__eabi_uconvert): Likewise.
3979
3980 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
3981
3982         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
3983         CFI_* definitions with IN_GCC.
3984
3985 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
3986
3987         * xcoffout.h (xcoffout_source_line): Update prototype.
3988
3989 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3990
3991         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
3992         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
3993
3994 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
3995
3996         PR middle-end/40340
3997         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
3998         inlined_function_outer_scope_p blocks for artificial inlines
3999         even at -g0/-g1.
4000         * tree.c (tree_nonartificial_location): Rewrite using
4001         block_nonartificial_location.
4002
4003 2009-06-05  Revital Eres  <eres@il.ibm.com>
4004             Leehod Baruch  <leehod@il.ibm.com>
4005
4006         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
4007         (expand_expr_real_1): Remove comment.
4008         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
4009         Vectorize misaligned access when the target supports it.
4010         (vect_supportable_dr_alignment): Check for unaligned access support.
4011         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
4012         and remove asset.
4013
4014 2009-06-05  Julian Brown  <julian@codesourcery.com>
4015
4016         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
4017         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
4018
4019 2009-06-05  Richard Guenther  <rguenther@suse.de>
4020
4021         PR bootstrap/40350
4022         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
4023         as possibly unused.
4024
4025 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
4026
4027         * config/s390/s390.c (global_not_special_regno_p): New static inline.
4028         (save_gprs): Don't tell unwinder when a global register is saved.
4029         (s390_emit_epilogue): Emit needed epilogue unwind info.
4030
4031 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
4032
4033         * dwarf2out.c (deferred_asm_name): New.
4034         (add_name_and_src_coords_attributes): Defer creation of
4035         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
4036         computed yet.
4037         (move_linkage_attr): New.
4038         (dwarf2out_finish): Revisit deferrals and emit attributes at the
4039         right place.
4040
4041 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
4042
4043         * tree-nested.c (finalize_nesting_tree_1): Declare the
4044         frame_decl in the binding tree.
4045
4046 2009-06-04  Cary Coutant  <ccoutant@google.com>
4047
4048         * basic-block.h (struct basic_block_def): Add discriminator field.
4049         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
4050         callers.
4051         * debug.c (do_nothing_debug_hooks): Add additional entry.
4052         (debug_nothing_int_charstar_int): New function.
4053         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
4054         (debug_nothing_int_charstar_int): New declaration.
4055         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
4056         discriminator value in .loc directive.
4057         * final.c (last_discriminator): New variable.
4058         (discriminator): New variable.
4059         (final_start_function): Initialize above variables, pass current
4060         discriminator to debug hook.
4061         (notice_source_line): Check for discriminator change.
4062         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
4063         * sdbout.c (sdbout_source_line): New parameter.
4064         * tree-cfg.c (struct locus_discrim_map): New structure type.
4065         (discriminator_per_locus): New hash table.
4066         (build_gimple_cfg): Allocate and free discriminator hash table.
4067         (make_edges): Call assign_discriminator.
4068         (locus_map_hash): New function.
4069         (locus_map_eq): New function.
4070         (next_discriminator_for_locus): New function.
4071         (same_line_p): New function.
4072         (assign_discriminator): New function.
4073         (make_cond_expr_edges): Call assign_discriminator.
4074         (make_gimple_switch_edges): Likewise.
4075         (first_non_label_stmt): New function.
4076         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
4077         all callers.
4078         * xcoffout.c (xcoffout_source_line): Add new parameter.
4079
4080         * configure.ac (gcc_cv_as_discriminator): New configury check for
4081         gas support for discriminator.
4082         * configure: Regenerate.
4083         * config.in: Regenerate.
4084
4085 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4086
4087         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
4088         val after checking for integers.
4089
4090 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
4091
4092         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
4093         X64_REGPARM_MAX.
4094         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
4095         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
4096         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
4097         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
4098         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
4099         X64_SSE_REGPARM_MAX.
4100         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
4101         X64_SSE_REGPARM_MAX.
4102
4103 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
4104
4105         * gcc.c (report_times_to_file): New.
4106         (execute): Implement it.
4107         (process_command): Support -time=.
4108         * doc/invoke.texi: Document it.
4109
4110 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
4111
4112         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
4113         that have value exprs.
4114
4115 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
4116
4117         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
4118         declarations for constants until...
4119         (dw2_output_indirect_constant_1): ... this point.
4120
4121 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
4122
4123         PR target/10242
4124         * arm.md (arm_addsi3): Don't try to split an add with an
4125         eliminable register until after reload has completed.
4126
4127 2009-06-03  Ian Lance Taylor  <iant@google.com>
4128
4129         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
4130         * genattrtab.c (write_length_unit_log): Likewise.
4131         * genchecksum.c (dosum): Likewise.
4132         * gengtype.c (write_rtx_next): Likewise.
4133         (finish_root_table, write_roots): Likewise.
4134         * gimple.c (gimple_ops_offset_): Likewise.
4135         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
4136         * config/arc/arc.c (arc_attribute_table): Likewise.
4137         * config/arm/arm.c (arm_attribute_table): Likewise.
4138         * config/avr/avr.c (avr_attribute_table): Likewise.
4139         * config/crx/crx.c (crx_attribute_table): Likewise.
4140         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
4141         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
4142         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
4143         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
4144         * config/sh/sh.c (sh_attribute_table): Likewise.
4145         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
4146         * config/spu/spu.c (spu_attribute_table): Likewise.
4147         * config/v850/v850.c (v850_attribute_table): Likewise.
4148
4149         * config/alpha/alpha.c (vms_attribute_table): Make static.
4150         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
4151         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
4152         * config/mips/mips.c (mips_attribute_table): Likewise.
4153
4154         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
4155         $(SYSTEM_H).
4156         (cc1-checksum.o): Likewise.
4157
4158 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
4159
4160         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
4161
4162 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
4163
4164         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
4165         insn if it is changing sp.  Use gen_add3_insn instead of
4166         conditionally gen_addsi3 and gen_adddi3.
4167         (offset_below_red_zone_p): New static inline function.
4168         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
4169         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
4170         * config/rs6000/ppc-asm.h: Include auto-host.h.
4171         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
4172         CFI_RESTORE): Define.
4173         * config/rs6000/crtresxgpr.asm: Add unwind info.
4174         * config/rs6000/crtresxfpr.asm: Likewise.
4175         * config/rs6000/crtresgpr.asm: Likewise.
4176         * config/rs6000/crtresfpr.asm: Likewise.
4177         * config/rs6000/crtsavgpr.asm: Likewise.
4178         * config/rs6000/crtsavfpr.asm: Likewise.
4179
4180         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
4181         argument of DWARF2_FRAME_REG_OUT macros.
4182
4183 2009-06-03  Julian Brown  <julian@codesourcery.com>
4184
4185         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
4186         words or less (including TImode) in core registers.
4187
4188 2009-06-03  Richard Guenther  <rguenther@suse.de>
4189
4190         PR middle-end/40328
4191         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
4192
4193 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
4194
4195         * statistics.c (statistics_counter_event): Do not record event 
4196         in pass dump if its number == -1.
4197         (curr_statistics_hash): Add assert that we never get passes 
4198         with static number == -1.
4199
4200 2009-06-03  Richard Guenther  <rguenther@suse.de>
4201             Andrey Belevantsev  <abel@ispras.ru>
4202
4203         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
4204         non-BLKmode arrays addressable.
4205
4206 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
4207
4208         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
4209         * config/m68k/m68k.h: ... here.
4210         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
4211         m68k and fido.
4212
4213 2009-06-03  Martin Jambor  <mjambor@suse.cz>
4214
4215         PR tree-optimization/40323
4216         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
4217         assignment.
4218
4219 2009-06-03  Richard Guenther  <rguenther@suse.de>
4220
4221         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
4222         consistently.
4223
4224 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
4225
4226         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
4227         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
4228         JUMP_TABLE_DATA_P where applicable.
4229         * config/sh/sh.c: Ditto.
4230         * config/sh/sh.h: Ditto.
4231         * config/sh/sh.md: Ditto.
4232         * config/sh/symbian.c: Ditto.
4233
4234 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
4235
4236         * config/i386/driver-i386.c (describe_cache): Optimize
4237         concatenation of strings.  Use snprintf instead of sprintf.
4238         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
4239         target when not compiling with GCC.
4240
4241 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
4242
4243         * config/sh/sh.c: Revert last change.
4244         (sh_expand_epilogue): Emit a blockage insn before the frame
4245         pointer adjustment unconditionally.
4246
4247 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4248
4249         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
4250         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
4251         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
4252         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
4253         to COLLECT_GCC_OPTIONS.
4254
4255 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4256
4257         * collect2.c (target_system_root): New variable.
4258         (main): Handle --sysroot=.
4259         (ignore_library): Strip the sysroot from the library path.
4260
4261 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4262
4263         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
4264         (collect2.o): Depend on collect2-aix.h.
4265         (collect2-aix.o): New rule.
4266         * collect2-aix.h: New file.
4267         * collect2-aix.c: Likewise.
4268         * collect2.c: Include collect2-aix.h.  Don't undefine
4269         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
4270         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
4271         Use TARGET_AIX_VERSION instead of _AIX51.
4272         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
4273         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
4274         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
4275         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
4276         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
4277
4278 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4279
4280         * collect2.c (ignore_library): Avoid premature post-increment
4281         and null deference.
4282
4283 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
4284
4285         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
4286         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
4287         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
4288         CROSS_DIRECTORY_STRUCTURE too.
4289         (LINK_LIBG_SPEC): Likewise.
4290         (LIB_SPEC): Add %R to sysroot paths.
4291         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
4292         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
4293         * config/rs6000/aix51.h: As for aix43.h.
4294         * config/rs6000/aix52.h: Likewise.
4295         * config/rs6000/aix53.h: Likewise.
4296         * config/rs6000/aix61.h: Likewise.
4297         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
4298         to the beginning of sysroot paths.
4299
4300 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4301
4302         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
4303         INSN_LISTs that are out of the REG_NOTE range.
4304
4305 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4306
4307         * loop-unroll.c (struct iv_to_split): Add pointer to next.
4308         (struct var_to_expand): Likewise.
4309         (struct opt_info): Add head and tail for linked lists of the above.
4310         (analyze_insn_to_expand_var): Initialize next.
4311         (analyze_iv_to_split_insn): Likewise.
4312         (analyze_insns_in_loop): Create linked lists.
4313         (allocate_basic_variable): Simplify for use without hash table.
4314         (insert_var_expansion_initialization): Likewise, make it type-safer.
4315         (combine_var_copies_in_loop_exit): Likewise.
4316         (apply_opt_in_copies): Walk lists rather than hash tables.
4317         (release_var_copies): Simplified and inlined by hand into...
4318         (free_opt_info): ... this function.
4319
4320 2009-06-02  Richard Guenther  <rguenther@suse.de>
4321
4322         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
4323         for field decls.
4324
4325 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4326
4327         * cfgexpand.c (gimple_expand_cfg): Discard the source location
4328         only for builtins that are not overridden.
4329
4330 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4331
4332         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
4333         label string.
4334
4335 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4336
4337         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
4338
4339 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4340
4341         * combine.c (move_deaths): Compare LUIDs within the same BB only.
4342
4343 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
4344
4345         * common.opt (fdump-unnumbered-links): New.
4346         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
4347         * print-rtl.c (flag_dump_unnumbered_links): New.
4348         (print_rtx): Test it.
4349
4350 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
4351
4352         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
4353         push/pop multiple to 8-byte alignment.
4354
4355 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
4356
4357         * config/i386/i386.c (queued_cfa_restores): New static variable.
4358         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
4359         functions.
4360         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
4361         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
4362         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
4363         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
4364         note unconditionally.
4365         (ix86_emit_restore_regs_using_mov): Likewise.
4366         (ix86_emit_restore_sse_regs_using_mov): Likewise.
4367         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
4368         it through to ix86_emit_restore_reg_using_pop.
4369         (ix86_emit_leave): Add RED_OFFSET argument.  Call
4370         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
4371         instead of adding REG_CFA_OFFSET note unconditionally.
4372         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
4373         the above functions.  Call ix86_add_queued_cfa_restore_notes when
4374         needed.
4375
4376         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
4377         force output of the label even for dwarf2out_do_cfi_asm.
4378         (add_fde_cfi): If -g2 and above and cfi might change CFA,
4379         force creation of CFI label and chain DW_CFA_set_loc jumping to it
4380         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
4381         caller.
4382         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
4383         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
4384         dwarf2out_cfi_label callers.
4385         * tree.h (dwarf2out_cfi_label): Adjust prototype.
4386         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
4387         Adjust dwarf2out_cfi_label callers.
4388         * config/vax/vax.c (vax_output_function_prologue): Likewise.
4389
4390         * config/i386/i386.h (struct machine_cfa_state,
4391         struct machine_function): Guard with ifndef USED_FOR_TARGET
4392         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
4393
4394         PR other/40024
4395         * emutls.c (__emutls_get_address): Change arr->size to mean number
4396         of allocated arr->data entries instead of # of slots + 1.
4397
4398         PR middle-end/40316
4399         * recog.c (peep2_reinit_state): New function.
4400         (peephole2_init_state): Use it at the end of a basic block and also
4401         when seeing a RTX_FRAME_RELATED_P insn.
4402
4403 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
4404
4405         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
4406         fixuns_truncrfdi2): New.
4407         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
4408         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
4409         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
4410         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
4411         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
4412         *recip_approx): Remove.
4413         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
4414         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
4415         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
4416         move to div.md.
4417         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
4418         setf_exp_rf): New.
4419
4420 2009-06-01  Ian Lance Taylor  <iant@google.com>
4421
4422         * attribs.c (register_attribute): Use CONST_CAST.
4423         * collect2.c (main): Use CONST_CAST2.
4424         (scan_prog_file): Likewise.
4425         * gcc.c (process_command, main): Likewise.
4426         * toplev.c (toplev_main): Likewise.
4427
4428         * c-typeck.c (handle_warn_cast_qual): New static function,
4429         partially broken out of build_c_cast.
4430         (build_c_cast): Call handle_warn_cast_qual.
4431         * doc/invoke.texi (Warning Options): Document new effect of
4432         -Wcast-qual.
4433
4434 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
4435
4436         * diagnostic.c (diagnostic_build_prefix): Always print columns.
4437         (diagnostic_report_current_module): Print columns.
4438         * common.opt (flag_show_column): Enable by default.
4439
4440 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
4441
4442         * alias.c (find_base_term): Check for NULL term before returning.
4443
4444 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
4445
4446         Revert due to PR40320:
4447         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
4448         * calls.c (emit_library_call_value_1): Don't force_operand for move
4449         and push insns.
4450
4451 2009-06-01  Olivier Hainque  <hainque@adacore.com>
4452             Eric Botcazou  <ebotcazou@adacore.com>
4453
4454         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
4455         to be processed as a bitfield for constructor output purposes.
4456         * output.h (initializer_constant_valid_for_bitfield_p): Declare
4457         new function.
4458         * varasm.c (oc_local_state): New type, output_constructor
4459         local state to support communication with helpers.
4460         (oc_outer_state): New type, output_constructor outer state of
4461         relevance in recursive calls.
4462         (output_constructor_array_range): New output_constructor helper,
4463         extracted code for an array range element.
4464         (output_constructor_regular_field): New output_constructor helper,
4465         extracted code for an element that is not a bitfield.
4466         (output_constructor_bitfield): New output_constructor helper,
4467         extracted code for a bitfield element.  Accept an OUTER state
4468         argument for recursive processing.  Recurse on record or array
4469         CONSTRUCTOR values, possibly past noop conversions.
4470         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
4471         VALUE is a valid constant-valued expression for use in a static
4472         bit-field initializer.
4473         (output_constructor): Rework to use helpers.  Accept and honor an
4474         OUTER state argument for recursive calls.  Return total size.  Be
4475         prepared for nested constructors initializing bitfields.
4476         (output_constant): Feed OUTER in calls to output_constructor.
4477
4478 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
4479
4480         * calls.c (emit_library_call_value_1): Don't force_operand for move
4481         and push insns.
4482
4483 2009-06-01  Nick Clifton  <nickc@redhat.com>
4484
4485         * doc/invoke.texi (IA-64 Options): Fix typo.
4486
4487 2009-06-01  Ira Rosen  <irar@il.ibm.com>
4488
4489         PR tree-optimization/39129
4490         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
4491         printed message.
4492         (vect_do_peeling_for_loop_bound): Use
4493         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
4494         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
4495         (vect_loop_versioning): Likewise.
4496         (vect_create_cond_for_alias_checks): Fix indentation.
4497         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
4498         macros.
4499         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
4500         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
4501         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
4502         "control flow in loop".
4503         (vect_estimate_min_profitable_iters): Use
4504         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
4505         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
4506         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
4507         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
4508         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
4509         statement belongs to a group of strided accesses with the exact code
4510         check.
4511         (vectorizable_load): Likewise.
4512         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
4513         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
4514
4515 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
4516
4517         * config/freebsd-stdint.h: New file.
4518         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
4519         Add freebsd-stdint.h to tm_file.
4520
4521 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
4522
4523         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
4524         (thumb2_extendhidi2): Likewise.
4525
4526 2009-05-31  Ian Lance Taylor  <iant@google.com>
4527
4528         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
4529
4530 2009-05-31  Ian Lance Taylor  <iant@google.com>
4531
4532         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
4533         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
4534         (ipa-reference.o): Depend upon gt-ipa-reference.h.
4535
4536 2009-05-31  Jason Merrill  <jason@redhat.com>
4537
4538         * tree-pretty-print.c (print_call_name): Take the callee, not the
4539         call itself.  Make non-static.  Use dump_function_name for functions.
4540         (dump_generic_node): Adjust.
4541         * diagnostic.h: Declare print_call_name.
4542         * gimple-pretty-print.c (dump_gimple_call): Use it.
4543
4544 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
4545
4546         * config/sh/sh.md (ashldi3_std): New define_expand.
4547         (ashldi3): Use it.
4548
4549 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
4550
4551         PR target/40313
4552         * config/sh/sh.c: Include debug.h.
4553         (sh_expand_epilogue): Emit a blockage insn before the frame
4554         pointer adjustment also when dwarf2out_do_frame returns true.
4555
4556 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
4557
4558         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
4559         (thumb2_extendqidi2): New pattern.
4560
4561 2009-05-31  Ira Rosen  <irar@il.ibm.com>
4562
4563         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
4564         mark phis for renaming.
4565         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
4566         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
4567         Call mark_sym_for_renaming.
4568         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
4569         * tree-vect-loop.c (vect_transform_loop): Remove
4570         vect_memsyms_to_rename initialization and a call to
4571         mark_set_for_renaming.
4572
4573 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
4574
4575         PR middle-end/40304
4576         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
4577         frame related even if !set_cfa && style < 0.
4578
4579 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
4580
4581         * config/i386/mingw-tls.c: New file.
4582         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
4583         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
4584         defining _WIN32 but not __CYGWIN__.
4585
4586 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4587
4588         * configure.ac: Add MPC support.
4589         
4590         * config.in, configure: Regenerate.     
4591
4592 2009-05-29  Richard Henderson  <rth@redhat.com>
4593
4594         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
4595         NOTE_INSN_BASIC_BLOCK.
4596         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
4597         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
4598         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
4599         to be deleted.
4600         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
4601         add in_use field.
4602         (add_cfi): Disable check redefining cfa away from drap.
4603         (lookup_cfa_1): Add remember argument; handle remember/restore.
4604         (lookup_cfa): Pass remember argument.
4605         (cfa_remember): New.
4606         (compute_barrier_args_size_1): Remove sibcall check.
4607         (dwarf2out_frame_debug_def_cfa): New.
4608         (dwarf2out_frame_debug_adjust_cfa): New.
4609         (dwarf2out_frame_debug_cfa_offset): New.
4610         (dwarf2out_frame_debug_cfa_register): New.
4611         (dwarf2out_frame_debug_cfa_restore): New.
4612         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
4613         (dwarf2out_begin_epilogue): New.
4614         (dwarf2out_frame_debug_restore_state): New.
4615         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
4616         DW_CFA_restore_state.
4617         (output_cfi_directive): Likewise.
4618         (convert_cfa_to_fb_loc_list): Likewise.
4619         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
4620         * dwarf2out.h: Update.
4621         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
4622         (copy_insn_1): Early out for null.
4623         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
4624         and dwarf2out_frame_debug_restore_state.
4625         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
4626         (prologue_insn_hash, epilogue_insn_hash): New.
4627         (free_after_compilation): Adjust freeing accordingly.
4628         (record_insns): Create hash table if needed; push insns into
4629         hash instead of array.
4630         (maybe_copy_epilogue_insn): New.
4631         (contains): Search hash table instead of array.
4632         (sibcall_epilogue_contains): Remove.
4633         (thread_prologue_and_epilogue_insns): Split eh_return insns
4634         and mark them as epilogues.
4635         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
4636         scanning in terms of basic blocks.
4637         * insn-notes.def (CFA_RESTORE_STATE): New.
4638         * jump.c (returnjump_p_1): Accept EH_RETURN.
4639         (eh_returnjump_p_1, eh_returnjump_p): New.
4640         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
4641         CFA_REGISTER, CFA_RESTORE): New.
4642         * rtl.def (EH_RETURN): New.
4643         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
4644
4645         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
4646         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
4647
4648         * config/i386/i386.c (gen_push): Update cfa state.
4649         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
4650         add a CFA_ADJUST_CFA note.
4651         (ix86_dwarf_handle_frame_unspec): Remove.
4652         (ix86_expand_prologue): Update cfa state.
4653         (ix86_emit_restore_reg_using_pop): New.
4654         (ix86_emit_restore_regs_using_pop): New.
4655         (ix86_emit_leave): New.
4656         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
4657         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
4658         * config/i386/i386.h (struct machine_cfa_state): New.
4659         (ix86_cfa_state): New.
4660         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
4661         (eh_return_internal): Merge from eh_return_<mode>,
4662         use eh_return rtx, split w/ epilogue.
4663
4664 2009-05-29  Ian Lance Taylor  <iant@google.com>
4665
4666         * builtins.c (validate_gimple_arglist): Don't use va_arg with
4667         enum type.
4668         * calls.c (emit_library_call_value_1): Likewise.
4669
4670         * c-typeck.c (c_build_va_arg): New function.
4671         * c-tree.h (c_build_va_arg): Declare.
4672         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
4673         instead of build_va_arg.
4674
4675 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
4676
4677         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
4678         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
4679         (ptr_difference_cost): Use affine combinations to compute it.
4680         (difference_cost): Likewise.
4681         (get_computation_cost_at): Compute more accurate cost for addresses
4682         if the ratio is a multiplier allowed in addresses.
4683         For non-addresses, consider that an additional offset or symbol is
4684         added only once.
4685
4686 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
4687
4688         * config/i386/i386.c (ix86_decompose_address): Avoid useless
4689         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
4690
4691         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
4692         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
4693         (prefix_rex): For UNIT_MMX don't imply the prefix by default
4694         if MODE_DI.
4695         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
4696         to 1 for TYPE_SSE{IADD1,CVT1}.
4697         (prefix_vex_imm8): Removed.
4698         (length_vex): Only pass 1 as second argument to
4699         ix86_attr_length_vex_default if prefix_extra is 0.
4700         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
4701         (length): For prefix vex computation use length_immediate
4702         attribute instead of prefix_vex_imm8.
4703         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
4704         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
4705         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
4706         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
4707         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
4708         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
4709         a space in between the operands.
4710         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
4711         if one operand is 0xff and the other one si, di, bp or sp.
4712         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
4713         other one si, di, bp or sp.
4714         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
4715         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
4716         type and mode attributes.
4717         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
4718         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
4719         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
4720         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
4721         prefix_data16 attribute iff MODE_DF.
4722         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
4723         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
4724         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
4725         constm128_operand in length_immediate computation.
4726         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
4727         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
4728         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
4729         length_immediate attribute to 1.
4730         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
4731         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
4732         for certain alternatives.
4733         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
4734         prefix_data16 attribute if MODE_V1DF.
4735         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
4736         length_immediate to 1.
4737         (set_got_rex64, set_rip_rex64): Remove length attribute, set
4738         length_address to 4, set mode attribute to MODE_DI.
4739         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
4740         (fxam<mode>2_i387): Set length attribute to 4.
4741         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
4742         *prefetch_3dnow_rex): Override length_address attribute.
4743         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
4744         attributes.
4745         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
4746         (constm128_operand): Removed.
4747         * config/i386/i386.c (memory_address_length): For
4748         disp && !index && !base in 64-bit mode account for SIB byte if
4749         print_operand_address can't optimize disp32 into disp32(%rip)
4750         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
4751         for fs: or gs: segment.
4752         (ix86_attr_length_immediate_default): When checking if shortform
4753         is possible, truncate immediate to the length of the non-shortened
4754         immediate.
4755         (ix86_attr_length_address_default): Ignore MEM_P operands
4756         with X constraint.
4757         (ix86_attr_length_vex_default): Only check for DImode on
4758         GENERAL_REG_P operands.
4759         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
4760         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
4761         (sse_cvttps2pi): Clear prefix_rep attribute.
4762         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
4763         attribute.
4764         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
4765         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
4766         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
4767         iff operand 2 is const_int_operand.
4768         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
4769         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
4770         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
4771         instead of vex.
4772         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
4773         prefix_data16.
4774         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
4775         prefix_data16 attribute for movlpd and movhpd instructions.
4776         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
4777         length_immediate for shufpd instruction.
4778         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
4779         (avx_cmpp<avxmodesuffixf2c><mode>3,
4780         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
4781         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
4782         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
4783         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
4784         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
4785         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
4786         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
4787         prefix_data16 attribute for the first alternative to 1.
4788         (*avx_loadlps): Override length_immediate for the first alternative.
4789         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
4790         attributes for second alternative.
4791         (*vec_concatv2sf_sse4_1): Override length_immediate and
4792         prefix_data16 attributes for second alternative.
4793         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
4794         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
4795         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
4796         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
4797         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
4798         prefix_data16 and length_immediate to 1.
4799         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
4800         to 1.
4801         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
4802         prefix_extra attribute for variants that don't have 0f prefix alone.
4803         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
4804         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
4805         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
4806         *sse4_1_pextrd): Set length_immediate to 1.
4807         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
4808         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
4809         to 1.
4810         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
4811         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
4812         length_immediate to 1 for second alternative.
4813         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
4814         prefix_extra and length_immediate attributes for the first
4815         alternative.
4816         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
4817         first alternative.
4818         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
4819         to 1 for the first and third alternative.
4820         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
4821         alternative.
4822         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
4823         attribute.
4824         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
4825         attribute to 0.
4826         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
4827         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
4828         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
4829         *avx_psign<mode>3): Set prefix_extra attribute to 1.
4830         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
4831         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
4832         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
4833         ssse3_psign<mode>3): Override prefix_rex attribute.
4834         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
4835         (ssse3_palignrti): Override length_immediate to 1.
4836         (ssse3_palignrdi): Override length_immediate to 1, override
4837         prefix_rex attribute.
4838         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
4839         (sse4a_extrqi): Override length_immediate to 2.
4840         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
4841         (sse4a_insertq): Override prefix_data16 to 0.
4842         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
4843         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
4844         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
4845         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
4846         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
4847         and length_immediate to 1.
4848         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
4849         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
4850         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
4851         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
4852         and length_immediate to 1.
4853         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
4854         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
4855         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
4856         avx_ptest256): Override prefix_extra to 1.
4857         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
4858         Override prefix_data16 and length_immediate to 1.
4859         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
4860         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
4861         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
4862         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
4863         prefix_data16 to 0 and prefix_extra to 2.
4864         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
4865         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
4866         attribute.
4867         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
4868         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
4869         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
4870         and prefix_extra to 2.
4871         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
4872         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
4873         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
4874         avx_vpermilvar<mode>3,
4875         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
4876         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
4877         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
4878         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
4879         Override prefix_extra to 1.
4880         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
4881         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
4882         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
4883         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
4884         prefix_extra and length_immediate to 1.
4885         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
4886         modrm to 0.
4887         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
4888         to 1 for the first alternative.
4889         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
4890         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
4891         cases.
4892         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
4893         *movv2sf_internal_avx, *movv2sf_internal): Override
4894         prefix_rep attribute for certain alternatives.
4895         (*mov<mode>_internal): Override prefix_rep or prefix_data16
4896         attributes for certain alternatives.
4897         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
4898         attributes for certain alternatives.
4899         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
4900         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
4901         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
4902         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
4903         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
4904         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
4905         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
4906         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
4907         length_immediate to 1 if operand 2 is const_int_operand.
4908         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
4909         *vec_extractv2si_1): Set length_immediate attribute to 1.
4910         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
4911         using old 3DNOW insn rather than SSE/3DNOW_A.
4912         (mmx_emms, mmx_femms): Clear modrm attribute.
4913
4914 2009-05-29  Martin Jambor  <mjambor@suse.cz>
4915
4916         * tree-sra.c:  New implementation of SRA.
4917
4918         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
4919         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
4920         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
4921         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
4922         (SRA_MAX_STRUCTURE_COUNT): Removed.
4923         (SRA_FIELD_STRUCTURE_RATIO): Removed.
4924         * doc/invoke.texi (sra-max-structure-size): Removed.
4925         (sra-field-structure-ratio): Removed.
4926
4927 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
4928
4929         PR middle-end/40291
4930         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
4931         before expansion.
4932
4933 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
4934
4935         PR rtl-optimization/40101
4936         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
4937         seqno.  Adjust comment.
4938         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
4939         inserting bookkeeping before a jump, the jump is not scheduled.
4940         When no positive seqno found, provide a value.  Add comment.
4941
4942 2009-05-29  Richard Guenther  <rguenther@suse.de>
4943
4944         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
4945         short-cutting on the first component.
4946
4947 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
4948
4949         PR middle-end/39958
4950         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
4951         for trees other than decls/types.
4952
4953 2009-05-29  Richard Guenther  <rguenther@suse.de>
4954
4955         * tree-ssa-operands.c (get_expr_operands): Do not handle
4956         INDIRECT_REFs in the handled-component case.  Remove
4957         unused get_ref_base_and_extent case.
4958         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
4959         tree_low_cst and host_integerp where possible.
4960         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
4961         codes for equivalence.
4962         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
4963
4964 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
4965
4966         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
4967         to tmake_file for i[34567]86-*-cygwin*. 
4968
4969 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
4970
4971         PR target/40017
4972         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
4973         (altivec_categorize_keyword, init_vector_keywords,
4974         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
4975         similar to bool.
4976
4977 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
4978
4979         * tree.c (handle_dll_attribute): Check if node is
4980         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
4981
4982 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
4983
4984         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
4985         component.
4986         (thumb2_zero_extendqidi2): Likewise.
4987
4988 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
4989
4990         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
4991         instead of gen_movrt.
4992         * config/sh/sh.md (movrt): Remove.
4993
4994 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
4995
4996         * doc/invoke.texi (IA-64 Options):
4997         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
4998         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
4999         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
5000         -msched-prefer-non-control-spec-insns,
5001         -msched-stop-bits-after-every-cycle,
5002         -msched-count-spec-in-critical-path,
5003         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
5004         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
5005         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
5006         and -msched-spec-verbose.
5007
5008 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
5009
5010         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
5011         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
5012         error if used.
5013         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
5014
5015 2009-05-28  Richard Guenther  <rguenther@suse.de>
5016
5017         * tree-ssa-alias.c (ao_ref_init): New function.
5018         (ao_ref_base): Likewise.
5019         (ao_ref_base_alias_set): Likewise.
5020         (ao_ref_alias_set): Likewise.
5021         (refs_may_alias_p_1): Change signature.
5022         (refs_may_alias_p): Adjust.
5023         (refs_anti_dependent_p): Likewise.
5024         (refs_output_dependent_p): Likewise.
5025         (call_may_clobber_ref_p_1): Change signature.
5026         (call_may_clobber_ref_p): Adjust.
5027         (stmt_may_clobber_ref_p_1): New function split out from ...
5028         (stmt_may_clobber_ref_p): ... here.
5029         (maybe_skip_until): Adjust signature.
5030         (get_continuation_for_phi): Likewise.
5031         (walk_non_aliased_vuses): Likewise.
5032         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
5033         (ao_ref_init): Declare.
5034         (ao_ref_base): Likewise.
5035         (ao_ref_alias_set): Likewise.
5036         (stmt_may_clobber_ref_p_1): Likewise.
5037         (walk_non_aliased_vuses): Adjust.
5038         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
5039         (get_ref_from_reference_ops): remove.
5040         (vn_reference_lookup_2): Adjust signature.
5041         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
5042         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
5043         (vn_reference_lookup): Adjust.
5044         (vn_reference_insert): Likewise.
5045         (vn_reference_insert_pieces): Adjust signature.
5046         (visit_reference_op_call): Adjust.
5047         * tree-ssa-pre.c (get_expr_type): Simplify.
5048         (phi_translate_1): Adjust.
5049         (compute_avail): Likewise.
5050         (translate_vuse_through_block): Do not re-build trees.
5051         (value_dies_in_block_x): Likewise.
5052         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
5053         fields.
5054         (vn_reference_lookup_pieces): Adjust declaration.
5055         (vn_reference_insert_pieces): Likewise.
5056
5057 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
5058
5059         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
5060         with checking disabled.
5061
5062 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
5063
5064         PR target/37216
5065
5066         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
5067         macro definition for support of three-operand format aligned
5068         .comm directive in assembler on cygwin/pe/mingw target OS.
5069         * configure:  Regenerate.
5070         * config.h:  Regenerate.
5071
5072         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
5073         aligned form of .comm directive if -mpe-aligned-commons is in effect.
5074         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
5075
5076         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
5077         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
5078
5079 2009-05-28  Ira Rosen  <irar@il.ibm.com>
5080
5081         PR tree-optimization/40254
5082         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
5083         in analysis of basic blocks.
5084
5085 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
5086
5087         PR middle-end/33699
5088         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
5089         * target-def.h (TARGET_CONST_ANCHOR): New macro.
5090         (TARGET_INITIALIZER): Use it.
5091         * cse.c (CHEAPER): Move it up to the other macros.
5092         (insert): Rename this ...
5093         (insert_with_costs): ... to this.  Add cost parameters.  Update
5094         function comment.
5095         (insert): New function.  Call insert_with_costs.
5096         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
5097         find_reg_offset_for_const, try_const_anchors): New functions.
5098         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
5099         when using a const-anchor.  Call insert_const_anchors.
5100         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
5101         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
5102
5103 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
5104
5105         * tree-inline.c (remap_decls): Enable nonlocalized variables
5106         when not optimizing.
5107
5108 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
5109
5110         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
5111         Simplify other tests involving optimize.
5112
5113 2009-05-27  Tom Tromey  <tromey@redhat.com>
5114
5115         * unwind-dw2.c (_Unwind_DebugHook): New function.
5116         (uw_install_context): Call _Unwind_DebugHook.
5117
5118 2009-05-27  Tom Tromey  <tromey@redhat.com>
5119
5120         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
5121
5122 2009-05-27  Ian Lance Taylor  <iant@google.com>
5123
5124         * Makefile.in (LINKER, LINKER_FLAGS): Define.
5125         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
5126         (ALL_LINKERFLAGS): Define.
5127         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
5128         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
5129         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
5130         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
5131         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
5132         $(LINKER_FOR_BUILD).
5133         (build/gcov-iov$(build_exeext)): Likewise.
5134
5135 2009-05-27  Julian Brown  <julian@codesourcery.com>
5136
5137         * gcse.c (target.h): Include.
5138         (can_assign_to_reg_without_clobbers_p): Check that the target allows
5139         copy of argument to a pseudo register.
5140
5141 2009-05-27  Diego Novillo  <dnovillo@google.com>
5142
5143         * tree-ssa-live.c (dump_scope_block): Document arguments.
5144         (dump_scope_blocks): Document.
5145         (debug_scope_blocks): New.
5146         * tree-flow.h (debug_scope_blocks): Declare.
5147
5148 2009-05-21  Denis Chertykov  <denisc@overta.ru>
5149
5150         * doc/contrib.texi (Contributors): Add myself to the list.
5151
5152 2009-05-27  Olivier Hainque  <hainque@adacore.com>
5153
5154         * expr.c (target_align): New function.  Alignment the TARGET of an
5155         assignment may be assume to have.
5156         (highest_pow2_factor_for_target): Use it instead of relying on
5157         immediate tree attributes of TARGET, not necessarily honored when
5158         intermediate bitfields are involved.
5159         
5160 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
5161
5162         PR target/40266
5163         * config/i386/driver-i386.c (host_detect_local_cpu): Support
5164         AVX, SSE4, AES, PCLMUL and POPCNT.
5165
5166 2009-05-27  Diego Novillo  <dnovillo@google.com>
5167
5168         * tree-pretty-print.c (dump_location): New.
5169         (dump_generic_node): Call it.
5170         Factor code to handle BLOCK nodes ...
5171         (dump_block_node): ... here.
5172
5173 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
5174
5175         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
5176         with it.
5177         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
5178         included.
5179         * gcc-plugin.h: Include config.h and system.h.
5180         (IN_GCC): Define if not defined.
5181
5182 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
5183
5184         PR middle-end/40249
5185         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
5186         with -fno-inline.
5187
5188 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
5189
5190         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
5191         applicable.
5192         * config/m32r/m32r.h: Ditto.
5193         * config/m32r/m32r.md: Ditto.
5194         * config/m32r/predicates.md: Ditto.
5195
5196 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
5197
5198         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
5199
5200 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
5201
5202         * doc/plugins.texi
5203         (Loading plugins): typo.
5204         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
5205         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
5206         (Interacting with the GCC Garbage Collector): Added new section.
5207         (Giving information about a plugin): Added new section for
5208         PLUGIN_INFO.
5209         * ggc.h (ggc_register_root_tab): Added declaration.
5210         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
5211         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
5212         (register_callback): Improved comment in declaration.
5213         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
5214         (extra_root_vec) Added static variable for dynamic roots registration.
5215         (ggc_register_root_tab) Added new routine.
5216         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
5217         PLUGIN_GGC_MARKING event.
5218         * ggc-zone.c: Include plugin.h.
5219         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
5220         * ggc-page.c: Include plugin.h.
5221         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
5222         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
5223         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
5224         (register_callback): check lack of callbacks for
5225         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
5226         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
5227         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
5228         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
5229         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
5230         dependency on plugin.h.
5231         (plugin.o): Added dependency on ggc.h...
5232
5233 2009-05-26  Richard Guenther  <rguenther@suse.de>
5234
5235         PR middle-end/40248
5236         Revert
5237         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
5238         with mismatched comparison modes.
5239
5240         * expr.c (expand_expr_real_1): Expand the operand of a
5241         VIEW_CONVERT_EXPR in its natural mode.
5242
5243 2009-05-26  Ian Lance Taylor  <iant@google.com>
5244
5245         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
5246         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
5247         (ALL_COMPILERFLAGS): Define.
5248         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
5249         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
5250         (collect2$(exeext), collect2.o): Likewise.
5251         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
5252         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
5253         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
5254         (libbackend.o, intl.o, cppdefault.o): Likewise.
5255         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
5256         (build/%.o): Use $(COMPILER_FOR_BUILD).
5257         (build/gen%$(build_exeext)): Likewise.
5258         (build/gcov-iov$(build_exeext)): LIkewise.
5259         * config/t-darwin (darwin.o): Use $(COMPILER).
5260         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
5261         * config/t-sol2 (sol2-c.o): Likewise.
5262         (sol2.o): Likewise.
5263         * config/t-vxworks (vxworks.o): Likewise.
5264         * config/x-darwin (host-darwin.o): Likewise.
5265         * config/x-hpux (host-hpux.o): Likewise.
5266         * config/x-linux (host-linux.o): Likewise.
5267         * config/x-solaris (host-solaris.o): Likewise.
5268         * config/alpha/x-alpha (driver-alpha.o): Likewise.
5269         * config/arm/t-arm (arm-c.o): Likewise.
5270         * config/arm/t-pe (pe.o): Likewise.
5271         * config/arm/t-wince-pe (pe.o): Likewise.
5272         * config/i386/t-cygming (winnt.o): Likewise.
5273         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
5274         * config/i386/t-cygwin (cygwin1.o): Likewise.
5275         (cygwin2.o): Likewise.
5276         * config/i386/t-i386 (i386-c.o): Likewise.
5277         * config/i386/t-interix (winnt.o): Likewise.
5278         * config/i386/t-netware (netware.o): Likewise.
5279         * config/i386/t-nwld (nwld.o): Likewise.
5280         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
5281         * config/i386/x-i386 (driver-i386.o): Likewise.
5282         * config/i386/x-cygwin (host-cygwin.o): Likewise.
5283         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
5284         * config/ia64/t-ia64 (ia64-c.o): Likewise.
5285         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
5286         * config/mips/x-native (driver-native.o): Likewise.
5287         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
5288         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
5289         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
5290         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
5291         * config/score/t-score-elf (score7.o): Likewise.
5292         (score3.o): Likewise.
5293         * config/sh/t-sh (sh-c.o): Likewise.
5294         * config/sh/t-symbian (sh-c.o): Likewise.
5295         (symbian.o): Likewise.
5296         * config/spu/t-spu-elf (spu-c.o): Likewise.
5297         * config/v850/t-v850 (v850-c.o): Likewise.
5298         * config/v850/t-v850e (v850-c.o): Likewise.
5299
5300 2009-05-26  Richard Guenther  <rguenther@suse.de>
5301
5302         PR tree-optimization/40122
5303         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
5304         VECTOR_CSTs if possible.
5305         (fold_gimple_assign): Likewise.
5306
5307 2009-05-26  Richard Guenther  <rguenther@suse.de>
5308
5309         PR middle-end/40252
5310         * fold-const.c (fold_binary): Use the correct types for building
5311         rotates.
5312
5313 2009-05-26  Richard Guenther  <rguenther@suse.de>
5314
5315         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
5316         redundant calls to merge_alias_info.
5317         (bump_vector_ptr): Likewise.
5318         * tree-ssa-copy.c (merge_alias_info): Remove.
5319         (replace_exp_1): Remove call to merge_alias_info.
5320         (propagate_tree_value): Likewise.
5321         (fini_copy_prop): Propagate points-to info.
5322         * tree-flow.h (merge_alias_info): Remove.
5323
5324 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
5325
5326         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
5327
5328 2009-05-25  Jan Hubicka  <jh@suse.cz>
5329
5330         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
5331         * cgraph.h (struct inline_summary): New filed self_wize,
5332         size_inlining_benefit, self_time and time_inlining_benefit.
5333         (struct cgraph_global_info): Replace insns by time ans size fields.
5334         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
5335         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
5336         (ipcp_update_callgraph): Do not touch function bodies.
5337         * ipa-inline.c: Include except.h
5338         (MAX_TIME): New constant.
5339         (overall_insns): Remove.
5340         (leaf_node_p): New.
5341         (overall_size, max_benefit): New static variables.
5342         (cgraph_estimate_time_after_inlining): New function.
5343         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
5344         (cgraph_clone_inlined_nodes): Update size.
5345         (cgraph_mark_inline_edge): Update size.
5346         (cgraph_estimate_growth): Use size info.
5347         (cgraph_check_inline_limits): Check size.
5348         (cgraph_default_inline_p): Likewise.
5349         (cgraph_edge_badness): Compute badness based on benefit and size cost.
5350         (cgraph_decide_recursive_inlining): Check size.
5351         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
5352         and times.
5353         (cgraph_decide_inlining): Likewise.
5354         (cgraph_decide_inlining_incrementally): Likewise; honor
5355         PARAM_EARLY_INLINING_INSNS.
5356         (likely_eliminated_by_inlining_p): New predicate.
5357         (estimate_function_body_sizes): New function.
5358         (compute_inline_parameters): Use it.
5359         * except.c (must_not_throw_labels): New function.
5360         * except.h (must_not_throw_labels): Declare.
5361         * tree-inline.c (init_inline_once): Kill inlining_weigths
5362         * tree-ssa-structalias.c: Avoid uninitialized warning.
5363         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
5364         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
5365         (PARAM_INLINE_CALL_COST): Remove.
5366         (PARAM_EARLY_INLINING_INSNS): New.
5367
5368 2009-05-25  Richard Guenther  <rguenther@suse.de>
5369
5370         PR tree-optimization/36327
5371         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
5372         callback for reference translation or lookup at the point of may-defs.
5373         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
5374         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
5375         for union COMPONENT_REFs.
5376         (vn_reference_lookup_3): New callback.  Lookup from memset
5377         and CONSTRUCTOR assignment, translate through struct copies.
5378         (vn_reference_lookup_pieces): Make sure to not free the
5379         passed operands array.  Adjust walk_non_aliased_vuses call.
5380         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
5381         make sure we do not leak memory.
5382
5383 2009-05-25  Richard Guenther  <rguenther@suse.de>
5384
5385         * tree-ssa-alias.h (dump_points_to_solution): Declare.
5386         * tree-inline.c (expand_call_inline): Reset the escaped and
5387         callused solutions.
5388         * tree-ssa-structalias.c (pass_build_ealias): New.
5389         * tree-pass.h (pass_build_ealias): Declare.
5390         * passes.c (init_optimization_passes): Add PTA during 
5391         early optimizations.
5392         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
5393         and CALLUSED solutions.
5394         (dump_points_to_solution): New function, split out from ...
5395         (dump_points_to_info_for): ... here.
5396         * tree-parloops.c (parallelize_loops): Reset the escaped and
5397         callused solutions.
5398
5399 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5400
5401         PR bootstrap/40027
5402         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
5403         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
5404
5405 2009-05-25  Ira Rosen  <irar@il.ibm.com>
5406
5407         PR tree-optimization/40238
5408         * tree-vect-stmts.c (vect_init_vector): Insert initialization
5409         statements after basic block's labels.
5410         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
5411         to free the allocated memory.
5412
5413 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
5414
5415         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
5416         return address with a USE.
5417
5418 2009-05-24  Richard Guenther  <rguenther@suse.de>
5419
5420         PR middle-end/40233
5421         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
5422         array type from the main variant of the inner type.
5423
5424 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
5425
5426         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
5427         definition to bool (from int) to un-break build.
5428         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
5429
5430 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
5431
5432         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
5433         discard_stmt_changes): Delete.
5434         * tree-ssa-operands.c (scb_stack): Delete.
5435         (init_ssa_operands): Do not initialize it.
5436         (fini_ssa_operands): Do not free it.
5437         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
5438
5439         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
5440         update_stmt, remove the others.  Fix comments.
5441         * tree-dfa.c (optimize_stack_restore): Likewise.
5442         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
5443         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
5444         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
5445         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
5446         Likewise.
5447         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
5448         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
5449         (dom_opt_finalize_block): Likewise, adjusting access to
5450         stmts_to_rescan.
5451         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
5452         (stmts_to_rescan): Change item type to gimple.
5453         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
5454
5455 2009-05-24  Ira Rosen  <irar@il.ibm.com>
5456
5457         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
5458         * tree-pass.h (pass_slp_vectorize): New pass.
5459         * params.h (SLP_MAX_INSNS_IN_BB): Define.
5460         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
5461         * tree-vectorizer.c (timevar.h): Include.
5462         (user_vect_verbosity_level): Declare.
5463         (vect_location): Fix comment.
5464         (vect_set_verbosity_level): Update user_vect_verbosity_level
5465         instead of vect_verbosity_level.
5466         (vect_set_dump_settings): Add an argument. Ignore user defined
5467         verbosity if dump flags require higher level of verbosity. Print to
5468         stderr only for loop vectorization.
5469         (vectorize_loops): Update call to vect_set_dump_settings.
5470         (execute_vect_slp): New function.
5471         (gate_vect_slp): Likewise.
5472         (struct gimple_opt_pass pass_slp_vectorize): New.
5473         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
5474         access its members.
5475         (vec_info_for_bb): New function.
5476         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
5477         (VECTORIZATION_ENABLED): New macro.
5478         (SLP_ENABLED, SLP_DISABLED): Likewise.
5479         (vect_is_simple_use): Add bb_vec_info argument.
5480         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
5481         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
5482         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
5483         vect_schedule_slp, vect_analyze_slp): Likewise.
5484         (vect_analyze_stmt): Add slp_tree argument.
5485         (find_bb_location): Declare.
5486         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
5487         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
5488         (vect_analyze_loop_operations, vect_analyze_loop,
5489         get_initial_def_for_induction, vect_create_epilog_for_reduction,
5490         vect_finalize_reduction, vectorizable_reduction,
5491         vectorizable_live_operation, vect_transform_loop): Likewise.
5492         * tree-data-ref.c (dr_analyze_innermost): Update comment,
5493         skip evolution analysis if analyzing a basic block.
5494         (dr_analyze_indices): Likewise.
5495         (initialize_data_dependence_relation): Skip the test whether the
5496         object is invariant for basic blocks.
5497         (compute_all_dependences): Skip dependence analysis for data
5498         references in basic blocks.
5499         (find_data_references_in_stmt): Don't fail in case of invariant
5500         access in basic block.
5501         (find_data_references_in_bb): New function.
5502         (find_data_references_in_loop): Move code to
5503         find_data_references_in_bb and add a call to it.
5504         (compute_data_dependences_for_bb): New function.
5505         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
5506         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
5507         that STEP is 0.
5508         (vect_analyze_data_ref_dependence): Check for interleaving in case of
5509         unknown dependence in basic block and fail in case of dependence in
5510         basic block.
5511         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
5512         dependence instances from either loop or basic block vectorization
5513         info.
5514         (vect_compute_data_ref_alignment): Check if it is loop vectorization
5515         before calling nested_in_vect_loop_p.
5516         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
5517         dependence instances from either loop or basic block vectorization
5518         info.
5519         (vect_verify_datarefs_alignment): Likewise.
5520         (vect_enhance_data_refs_alignment): Adjust function calls.
5521         (vect_analyze_data_refs_alignment): Likewise.
5522         (vect_analyze_group_access): Fix printing. Skip different checks if
5523         DR_STEP is 0. Keep strided stores either in loop or basic block
5524         vectorization data structure. Fix indentation.
5525         (vect_analyze_data_ref_access): Fix comments, allow zero step in
5526         basic blocks.
5527         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
5528         dependence instances from either loop or basic block vectorization
5529         info.
5530         (vect_analyze_data_refs): Update comment. Call
5531         compute_data_dependences_for_bb to analyze basic blocks.
5532         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
5533         case of loop vectorization. In case of basic block vectorization use
5534         data-ref itself as a base.
5535         (vect_create_data_ref_ptr): In case of basic block vectorization:
5536         don't advance the pointer, add new statements before the current
5537         statement.  Adjust function calls.
5538         (vect_supportable_dr_alignment): Support only aligned accesses in
5539         basic block vectorization.
5540         * common.opt (ftree-slp-vectorize): New flag.
5541         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
5542         (vect_pattern_recog_1): Likewise.
5543         * tree-vect-stmts.c (process_use): Likewise.
5544         (vect_init_vector): Add new statements in the beginning of the basic
5545         block in case of basic block SLP.
5546         (vect_get_vec_def_for_operand): Adjust function calls.
5547         (vect_finish_stmt_generation): Likewise.
5548         (vectorizable_call): Add assert that it is loop vectorization, adjust
5549         function calls.
5550         (vectorizable_conversion, vectorizable_assignment): Likewise.
5551         (vectorizable_operation): In case of basic block SLP, take
5552         vectorization factor from statement's type and skip the relevance
5553         check. Adjust function calls.
5554         (vectorizable_type_demotion): Add assert that it is loop
5555         vectorization, adjust function calls.
5556         (vectorizable_type_promotion): Likewise.
5557         (vectorizable_store): Check for outer loop only in case of loop
5558         vectorization. Adjust function calls. For basic blocks, skip the
5559         relevance check and don't advance pointers.
5560         (vectorizable_load): Likewise.
5561         (vectorizable_condition): Add assert that it is loop vectorization,
5562         adjust function calls.
5563         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
5564         that it is not reduction, get vector type, call only supported
5565         functions, skip loop specific parts.
5566         (vect_transform_stmt): Check for outer loop only in case of loop
5567         vectorization.
5568         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
5569         (vect_is_simple_use): Fix comment, add new argument, fix conditions
5570         for external definition.
5571         * passes.c (pass_slp_vectorize): New pass.
5572         * tree-vect-slp.c (find_bb_location): New function.
5573         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
5574         check for patterns only in loops.
5575         (vect_build_slp_tree): Add argument, adjust function calls, fail in
5576         case of multiple types in basic block SLP.
5577         (vect_mark_slp_stmts_relevant): New function.
5578         (vect_supported_load_permutation_p): Fix comment.
5579         (vect_analyze_slp_instance): Add argument. In case of basic block
5580         SLP, take vectorization factor from statement's type, check that
5581         unrolling factor is 1. Adjust function call. Save SLP instance in
5582         either loop or basic block vectorization structure. Return FALSE,
5583         if SLP failed.
5584         (vect_analyze_slp): Add argument. Get strided stores groups from
5585         either loop or basic block vectorization structure. Return FALSE
5586         if basic block SLP failed.
5587         (new_bb_vec_info): New function.
5588         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
5589         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
5590         (vect_schedule_slp): Add argument. Get SLP instances from either
5591         loop or basic block vectorization structure. Set vectorization factor
5592         to be 1 for basic block SLP.
5593         (vect_slp_transform_bb): New function.
5594         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
5595
5596 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
5597
5598         * final.c (shorten_branches): Do not align labels for jump tables.
5599         (final_scan_insn): Use JUMP_TABLE_DATA_P.
5600
5601 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
5602
5603         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
5604         Remove outdated reference to flow.c and fix nits.
5605         * doc/gccint.texi: Tweak RTL description.
5606         * doc/rtl.texi: Likewise.
5607
5608 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
5609
5610         * config/avr/avr.c: Change my email address.
5611         * config/avr/avr.h: Likewise.
5612         * config/avr/avr.md: Likewise.
5613         * config/avr/avr-protos.h: Likewise.
5614         * config/avr/libgcc.S: Likewise.
5615
5616 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
5617
5618         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
5619         (spu_split_load, spu_split_store): Change return type to int.
5620         (spu_split_convert): Declare.
5621         * config/spu/predicates.md (spu_mem_operand): Remove.
5622         (spu_mov_operand): Update.
5623         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
5624         * config/spu/spu.c (regno_aligned_for_load): Remove.
5625         (reg_aligned_for_addr, spu_expand_load): Define.
5626         (spu_expand_extv): Reimplement and handle MEM.
5627         (spu_expand_insv): Handle MEM.
5628         (spu_sched_reorder): Handle insn's with length 0.
5629         (spu_legitimate_address_p): Reimplement.
5630         (store_with_one_insn_p): Return TRUE for any mode with size
5631         larger than 16 bytes.
5632         (address_needs_split): Define.
5633         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
5634         operands.
5635         (spu_convert_move): Define.
5636         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
5637         (spu_split_store): Change all MEM's to TImode.
5638         (spu_init_expanders): Preallocate registers that correspond to
5639         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
5640         mark_reg_pointer.
5641         (spu_split_convert): Define.
5642         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
5643         (_move<mode>, _movdi, _movti): Update predicate and condition.
5644         (load, store): Change to define_split.
5645         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
5646         extend<mode>ti2.
5647         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
5648         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
5649         define_insn_and_split of lshr<mode>3.
5650         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
5651         (<v>ashr<mode>3_imm): Define.
5652         (extv, extzv, insv): Allow MEM operands.
5653         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
5654         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
5655         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
5656         (_spu_convert2): Change to define_insn_and_split and remove the
5657         corresponding define_peephole2.
5658         (stack_protect_set, stack_protect_test, stack_protect_test_si):
5659         Change predicates to memory_operand.
5660
5661 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
5662
5663         * config/arm/thumb2.md: Add 16-bit multiply instructions.
5664
5665 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
5666
5667         PR tree-optimization/40219
5668         * tree.c (iterative_hash_expr): Make sure the builtin function is
5669         a normal builtin function and not a front end or back end builtin
5670         before indexing into the built_in_decls array.
5671
5672 2009-05-22  Richard Guenther  <rguenther@suse.de>
5673
5674         PR middle-end/38964
5675         * alias.c (write_dependence_p): Do not use TBAA for answering
5676         anti-dependence or output-dependence.
5677         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
5678         (emit_pointer_definition): Remove.
5679         (emit_alias_warning): Likewise.
5680         (find_what_var_points_to): Remove TBAA pruning code.
5681         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
5682         violations.
5683         (compute_points_to_sets): Remove code computing the set of
5684         dereferenced pointers.
5685         * tree-data-ref.c (dr_may_alias_p): Properly use the split
5686         oracle for querying anti and output dependencies.
5687         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
5688         if TBAA may be applied.
5689         (refs_anti_dependent_p): New function.
5690         (refs_output_dependent_p): Likewise.
5691         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
5692         (refs_output_dependent_p): Likewise.
5693         * doc/tree-ssa.texi (Memory model): New section.
5694         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
5695         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
5696         * cfgexpand.c (expand_gimple_basic_block): Do not handle
5697         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
5698         * expr.c (expand_expr_real_1): Likewise.
5699         * gimple-low.c (lower_stmt): Likewise.
5700         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
5701         (dump_gimple_cdt): Remove.
5702         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
5703         (gimple_size): Likewise.
5704         (walk_gimple_op): Likewise.
5705         (is_gimple_stmt): Likewise.
5706         (walk_stmt_load_store_addr_ops): Likewise.
5707         (gimple_build_cdt): Remove.
5708         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
5709         * gimple.h (gimple_cdt_new_type): Remove.
5710         (gimple_cdt_new_type_ptr): Likewise.
5711         (gimple_cdt_set_new_type): Likewise.
5712         (gimple_cdt_location): Likewise.
5713         (gimple_cdt_location_ptr): Likewise.
5714         (gimple_cdt_set_location): Likewise.
5715         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
5716         * tree-cfg.c (remove_useless_stmts_1): Do not handle
5717         GIMPLE_CHANGE_DYNAMIC_TYPE.
5718         (verify_types_in_gimple_stmt): Likewise.
5719         * tree-inline.c (estimate_num_insns): Likewise.
5720         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
5721         (copy_decl_to_var): Likewise.
5722         (copy_result_decl_to_var): Likewise.
5723         * tree-pretty-print.c (dump_generic_node): Do not handle
5724         CHANGE_DYNAMIC_TYPE_EXPR.
5725         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
5726         * tree-ssa-operands.c (get_expr_operands): Likewise.
5727         * tree-ssa-structalias.c (struct variable_info): Remove
5728         no_tbaa_pruning member.
5729         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
5730         (unify_nodes): Do not copy it.
5731         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
5732         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
5733         (set_uids_in_ptset): Do not check it.
5734         (find_what_var_points_to): Likewise.
5735         (compute_tbaa_pruning): Remove.
5736         (compute_points_to_sets): Do not call it.
5737         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
5738         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
5739         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
5740         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
5741         (DECL_NO_TBAA_P): Likewise.
5742         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
5743         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
5744         (expand_omp_atomic_pipeline): Do not set it.
5745         * print-tree.c (print_node): Do not dump it.
5746         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
5747         redundant check.
5748
5749 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
5750
5751         PR target/39856
5752         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
5753         for clobber.
5754
5755 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
5756
5757         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
5758         non-external.
5759
5760 2009-05-22  Ben Elliston  <bje@au.ibm.com>
5761
5762         * Makefile.in (bversion.h, s-bversion): New targets.
5763         (TOPLEV_H): Add bversion.h.
5764         * toplev.h: Include "bversion.h".
5765         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
5766         the __format__ attribute only if compiling with the same version
5767         of GCC as the sources (the "build version").
5768
5769 2009-05-22  Ben Elliston  <bje@au.ibm.com>
5770
5771         * c-format.c (handle_format_attribute): Fix comment typo.
5772
5773 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
5774
5775         PR target/37846
5776         * config/ia64/ia64.opt (mfused-madd): New.
5777         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
5778         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
5779         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
5780         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
5781         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
5782         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
5783         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
5784         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
5785         instruction if !TARGET_FUSED_MADD.
5786         (fpma, fpms): Remove colon from name.
5787
5788 2009-05-22  Richard Guenther  <rguenther@suse.de>
5789
5790         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
5791         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
5792         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
5793         TARGET_MEM_REF.
5794         (create_expression_by_pieces): Only convert if necessary.
5795         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
5796         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
5797
5798 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
5799
5800         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
5801         regular pattern from a template and rename it ...
5802         (*extzv_truncsi_exts): ... to this.
5803
5804 2009-05-21  Richard Guenther  <rguenther@suse.de>
5805
5806         * cgraph.h (struct cgraph_node): Remove inline_decl member.
5807         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
5808         (cgraph_default_inline_p): Likewise.
5809         (cgraph_decide_inlining_incrementally): Likewise.
5810
5811 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
5812             Uros Bizjak  <ubizjak@gmail.com>
5813
5814         * config/i386/cpuid.h (bit_MOVBE): New.
5815
5816         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
5817
5818         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
5819         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
5820         (ix86_handle_option): Handle OPT_mmovbe.
5821         (ix86_target_string): Add -mmovbe.
5822         (pta_flags): Add PTA_MOVBE.
5823         (processor_alias_table): Add PTA_MOVBE to "atom".
5824         (override_options): Handle PTA_MOVBE.
5825
5826         * config/i386/i386.h (TARGET_MOVBE): New.
5827
5828         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
5829         (*bswapsi_movbe): New.
5830         (*bswapdi_movbe): Likewise.
5831         (bswapdi2): Renamed to ...
5832         (*bswapdi_1): This.
5833         (bswapdi2): New expander.
5834
5835         * config/i386/i386.opt (mmovbe): New.
5836
5837         * doc/invoke.texi: Document -mmovbe.
5838
5839 2009-05-21  Taras Glek  <tglek@mozilla.com>
5840
5841         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
5842         * gcc-plugin.h (plugin_init): Updated signature.
5843         * gcc-plugin.h (plugin_name_args): Moved to this header.
5844         * doc/plugins.texi (plugin_init): Updated documention to reflect
5845         API change.
5846         * doc/plugins.texi (plugin_name_args): Added to documention.
5847
5848 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
5849
5850         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
5851         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
5852
5853 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
5854
5855         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
5856         JUMP_TABLE_DATA_P predicates where applicable.
5857         * config/i386/predicates.md: Ditto.
5858         * config/i386/sse.md: Ditto.
5859
5860 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
5861
5862         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
5863         operand2 -128 override length_immediate attribute to 1.
5864         * config/i386/predicates.md (constm128_operand): New predicate.
5865
5866         * config/i386/i386.c (memory_address_length): Handle %r12
5867         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
5868         also check REGNO.
5869         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
5870         mode look through optional ZERO_EXTEND and SUBREG.
5871         * config/i386/i386.md (R12_REG): New define_constant.
5872         (prefix_data16): For sse unit set also for MODE_TI insns.
5873         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
5874         insns set if operand 1 is ext_QIreg_operand.
5875         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
5876         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
5877         immediate.
5878         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
5879         mode from MODE_DI to MODE_SI.
5880         (movdi_1_rex64): Override modrm and length_immediate attributes
5881         only for movabs (TYPE_IMOV, alternative 2).
5882         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
5883         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
5884         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
5885         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
5886         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
5887         prefix_rex attribute if DImode.
5888         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
5889         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
5890         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
5891         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
5892         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
5893         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
5894         Likewise.  For TYPE_IMOV clear length_immediate attribute.
5895         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
5896         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
5897         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
5898         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
5899         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
5900         or one operand TYPE_ISHIFT.
5901         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
5902         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
5903         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
5904         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
5905         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
5906         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
5907         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
5908         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
5909         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
5910         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
5911         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
5912         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
5913         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
5914         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
5915         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
5916         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
5917         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
5918         set mode attribute, don't override length attribute.
5919         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
5920         to 1.
5921         (return_internal_long): Set length attribute to 2 instead of 1.
5922         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
5923         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
5924         prefix_rex attribute.
5925         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
5926         New predicates.
5927         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
5928
5929 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5930
5931         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
5932
5933 2009-05-20  Ian Lance Taylor  <iant@google.com>
5934
5935         * tree.c (build_tree_list_vec_stat): New function.
5936         (ctor_to_vec): New function.
5937         (build_nt_call_vec): New function.
5938         (build_call_array): Change args to be a const pointer.
5939         (build_call_vec): New function.
5940         * tree.h (build_nt_call_vec): Declare.
5941         (build_tree_list_vec_stat): Declare.
5942         (build_tree_list_vec): Define.
5943         (build_call_array): Update declaration.
5944         (build_call_vec): Declare.
5945         (ctor_to_vec): Declare.
5946         * c-common.c (tree_vector_cache): New static variable.
5947         (make_tree_vector): New function.
5948         (release_tree_vector): New function.
5949         (make_tree_vector_single): New function.
5950         (make_tree_vector_copy): New function.
5951         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
5952         (make_tree_vector_single, make_tree_vector_copy): Declare.
5953         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
5954         (c_parser_expr_list): Don't manage cache here, instead call
5955         make_tree_vector.
5956         (c_parser_release_expr_list): Remove static function.
5957         (c_parser_vec_to_tree_list): Remove static function.
5958         (c_parser_attributes): Call build_tree_list_vec instead of
5959         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
5960         c_parser_release_expr_list.
5961         (c_parser_postfix_expression_after_primary): Likewise.
5962         (c_parser_objc_keywordexpr): Likewise.
5963
5964 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
5965
5966         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
5967         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
5968         TARGET_CONVERT_TO_TYPE.
5969         * hooks.c (hook_tree_const_tree_null): Define.
5970         * hooks.h (hook_tree_const_tree_null): Declare.
5971         * target.h (struct gcc_target):  Add invalid_parameter_type,
5972         invalid_return_type, promoted_type, and convert_to_type fields.
5973         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
5974         (TARGET_INVALID_RETURN_TYPE): Define.
5975         (TARGET_PROMOTED_TYPE): Define.
5976         (TARGET_CONVERT_TO_TYPE): Define.
5977         (TARGET_INITIALIZER): Update for new fields.
5978         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
5979         (grokparms): Check targetm.invalid_parameter_type.
5980         * c-typeck.c (default_conversion): Check targetm.promoted_type.
5981         * c-convert.c (convert): Check targetm.convert_to_type.
5982
5983 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
5984
5985         * config/mips/mips.md (*extenddi_truncate<mode>,
5986         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
5987         defintions.
5988         (*extendhi_truncateqi): New define_insn_and_sptit.
5989
5990 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
5991
5992         PR middle-end/40204
5993         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
5994         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
5995
5996 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
5997
5998         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
5999         the operand of VIEW_CONVERT_EXPR.
6000
6001 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
6002
6003         * config/i386/driver-i386.c (host_detect_local_cpu): Check
6004         extended family and model for Intel processors.  Support Intel Atom.
6005
6006 2009-05-20  Olivier Hainque  <hainque@adacore.com>
6007
6008         * gstab.h (stab_code_type): Define, to be used instead of the
6009         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
6010         notice.
6011         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
6012         occurrences by stab_code_type.
6013         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
6014
6015 2009-05-20  Martin Jambor  <mjambor@suse.cz>
6016
6017         * tree-flow.h (insert_edge_copies_seq): Undeclare.
6018         (sra_insert_before): Likewise.
6019         (sra_insert_after): Likewise.
6020         (sra_init_cache): Likewise.
6021         (sra_type_can_be_decomposed_p): Likewise.
6022         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
6023         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
6024         (sra_insert_before): Likewise.
6025         (sra_insert_after): Likewise.
6026         (sra_init_cache): Likewise.
6027         (insert_edge_copies_seq): Made static and moved upwards.
6028
6029         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
6030         case.
6031
6032         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
6033
6034         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
6035         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
6036         simple copies.
6037
6038 2009-05-20  Richard Guenther  <rguenther@suse.de>
6039
6040         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
6041         with mismatched comparison modes.
6042
6043 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6044
6045         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
6046         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
6047         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
6048         with shifts for Thumb2.
6049         (orsi_notsi): New for orn.
6050         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
6051         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
6052         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
6053         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
6054         Don't invert remainder for IOR.
6055         
6056 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
6057
6058         PR tree-optimization/40087
6059         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
6060         number_of_iterations_ne): Rename never_infinite argument.
6061         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
6062         number_of_iterations_le): Handle pointer-type ivs when
6063         exit_must_be_taken is false.
6064         (number_of_iterations_cond):  Do not always assume that
6065         exit_must_be_taken if the control variable is a pointer.
6066
6067 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6068
6069         * c-typeck.c (build_binary_op): Allow % on integal vectors.
6070         * doc/extend.texi (Vector Extension): Document that % is allowed too.
6071
6072 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
6073
6074         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
6075         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
6076
6077 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6078
6079         PR c/40172
6080         * c.opt (Wlogical-op): Disabled by default.
6081         * c-opt (c_common_post_options): Do not enable Wlogical-op with
6082         Wextra.
6083         * doc/invoke.texi (Wlogical-op): Likewise.
6084         
6085 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
6086
6087         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
6088         into CASE_CONVERT.
6089         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
6090         Propagate the type of the first operand.
6091         <ASSERT_EXPR>: Simplify.
6092         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
6093         Rewrite using the RHS code as discriminant.
6094         <NOP_EXPR>: Turn into CASE_CONVERT.
6095         <PLUS_EXPR>: Propagate the type of the first operand.
6096
6097 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
6098
6099         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
6100         (ia64_dconst_0_375): New.
6101         * config/ia64/ia64.c (ia64_override_options): Remove
6102         -minline-sqrt-min-latency warning.
6103         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
6104         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
6105         * config/ia64/ia64.md (*sqrt_approx): Remove.
6106         (sqrtsf2): Remove #if 0.
6107         (sqrtsf2_internal_thr): Rewrite and move to div.md.
6108         (sqrtdf): Remove assert.
6109         (sqrtdf2_internal_thr): Rewrite and move to div.md.
6110         (sqrtxf2): Remove #if 0.
6111         (sqrtxf2_internal_thr): Rewrite and move to div.md.
6112         * div.md (sqrt_approx_rf): New.
6113         (sqrtsf2_internal_thr): New implementation.
6114         (sqrtsf2_internal_lat): New.
6115         (sqrtdf2_internal_thr: New implementation.
6116         (sqrtxf2_internal): New implementation.
6117
6118 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
6119             Hans-Peter Nilsson  <hp@axis.com>
6120
6121         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
6122         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
6123         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
6124         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
6125         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
6126         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
6127         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
6128         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
6129         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
6130         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
6131         * c-common.c: ...from here.
6132
6133 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6134
6135         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
6136
6137 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6138
6139         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
6140
6141 2009-05-19  Ben Elliston  <bje@au.ibm.com>
6142
6143         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
6144         assignments with memcpy calls.
6145         (add_fdes): Likewise.
6146         (binary_search_unencoded_fdes): Likewise.
6147         (linear_search_fdes): Eliminate type puns.
6148         
6149 2009-05-19  Richard Guenther  <rguenther@suse.de>
6150
6151         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
6152         not falsely claim to have propagated into all uses.
6153
6154 2009-05-19  Ben Elliston  <bje@au.ibm.com>
6155
6156         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
6157         version to v3.0.
6158
6159 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
6160
6161         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
6162         * config/sh/sh.c (sh_legitimate_address_p): Make static.
6163         (TARGET_LEGITIMATE_ADDRESS_P): New.
6164         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6165         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
6166         
6167 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
6168
6169         PR debug/40109
6170         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
6171         child of the containing namespace's DIE.
6172
6173 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
6174
6175         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
6176         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
6177         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
6178         extend patterns.
6179
6180 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
6181
6182         PR target/39942
6183         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
6184         gen_align with gen_pad.
6185         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
6186         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
6187
6188         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
6189         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
6190
6191         * config/i386/i386.md (align): Renamed to ...
6192         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
6193         ASM_OUTPUT_MAX_SKIP_PAD.
6194
6195 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
6196
6197         * config.gcc: Fix variable syntax.
6198
6199         PR target/39531
6200         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
6201         before calling exact_log2.
6202         (output_iorsi3): Likewise.
6203         (output_xorsi3): Likewise.
6204
6205 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
6206
6207         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
6208         for the none zero constant operand except for EQ and NE
6209         comprisons even when the first operand is R0.
6210
6211 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
6212
6213         * config/s390/2064.md: Remove trailing whitespaces.
6214         * config/s390/2084.md: Likewise.
6215         * config/s390/constraints.md: Likewise.
6216         * config/s390/fixdfdi.h: Likewise.
6217         * config/s390/libgcc-glibc.ver: Likewise.
6218         * config/s390/s390-modes.def: Likewise.
6219         * config/s390/s390-protos.h: Likewise.
6220         * config/s390/s390.c: Likewise.
6221         * config/s390/s390.h: Likewise.
6222         * config/s390/s390.md: Likewise.
6223         * config/s390/tpf-unwind.h: Likewise.
6224
6225 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
6226
6227         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
6228
6229 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
6230
6231         M68K TLS support.
6232         * configure.ac (m68k-*-*): Check if binutils support TLS.
6233         * configure: Regenerate.
6234         * config/m68k/predicates.md (symbolic_operand): Extend comment.
6235         * config/m68k/constraints.md (Cu): New constraint.
6236         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
6237         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
6238         (movsi): Handle TLS symbols.
6239         (addsi3_5200): Handle XTLS symbols, indent.
6240         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
6241         (m68k_tls_reference_p): Declare.
6242         (m68k_legitimize_address): Declare.
6243         (m68k_unwrap_symbol): Declare.
6244         * config/m68k/m68k.opt (mxtls): New option.
6245         * config/m68k/m68k.c (ggc.h): Include.
6246         (m68k_output_dwarf_dtprel): Implement hook.
6247         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
6248         (m68k_expand_prologue): Load GOT pointer when function needs it.
6249         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
6250         (m68k_legitimate_constant_address_p): Same.
6251         (m68k_decompose_address): Handle TLS references.
6252         (m68k_get_gp): New static function.
6253         (enum m68k_reloc): New contants.
6254         (TLS_RELOC_P): New macro.
6255         (m68k_wrap_symbol): New static function.
6256         (m68k_unwrap_symbol): New function.
6257         (m68k_final_prescan_insn_1): New static function.
6258         (m68k_final_prescan_insn): New function.
6259         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
6260         functions.
6261         (legitimize_pic_address): Handle TLS references..
6262         (m68k_tls_get_addr, m68k_get_tls_get_addr)
6263         (m68k_libcall_value_in_a0_p)
6264         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
6265         (m68k_call_m68k_read_tp): Helper variables and functions for ...
6266         (m68k_legitimize_tls_address): Handle TLS references.
6267         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
6268         New functions.
6269         (m68k_legitimize_address): Handle TLS symbols.
6270         (m68k_get_reloc_decoration): New static function.
6271         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
6272         UNSPEC_RELOC32.
6273         (m68k_output_dwarf_dtprel): Implement hook.
6274         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
6275         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
6276         m68k_call_* routines.
6277         (sched_attr_op_type): Handle TLS symbols.
6278         (gt-m68k.h): Include.
6279         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
6280         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
6281
6282 2009-05-18  Martin Jambor  <mjambor@suse.cz>
6283
6284         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
6285         (visit_store_addr_for_mod_analysis): New function.
6286         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
6287         (determine_cst_member_ptr): Use gimple_assign_single_p.
6288         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
6289         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
6290         operands.  Don't check number of operands of a NOP_EXPR.
6291
6292 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
6293
6294         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
6295
6296 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6297
6298         PR c/40172
6299         * c-common.c (warn_logical_operator): Don't warn if one of
6300         expression isn't always true or false.
6301
6302 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
6303
6304         * config/i386/biarch32.h: New file.
6305         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
6306
6307 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
6308
6309         * config/mips/mips.md (*zero_extend<mode>_trunchi,
6310         *zero_extend<mode>_truncqi): Merge these into ...
6311         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
6312         Name the pattern following this as *zero_extendhi_truncqi.
6313
6314 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
6315
6316         PR middle-end/39301
6317         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
6318         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
6319         (output_info): Make field HOST_WIDEST_INT.
6320         (print_statistics): Use HOST_WIDEST_INT_PRINT.
6321         (dump_bitmat_statistics): Same.
6322
6323 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
6324
6325         * config.gcc (use_gcc_stdint):  Set to wrap.
6326         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
6327         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
6328         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
6329         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
6330         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
6331         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
6332         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
6333         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
6334
6335 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
6336
6337         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
6338         tune_64.
6339         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
6340         Move definitions earlier.
6341         (OPT_ARCH64, OPT_ARCH32): Define.
6342         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
6343         and tune_64.
6344
6345 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
6346
6347         PR target/40153
6348         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
6349         implies.
6350
6351 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
6352
6353         * arm.md (movdi2): Copy non-reg values to DImode registers.
6354
6355 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
6356
6357         PR target/39942
6358         * final.c (label_to_max_skip): New function.
6359         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
6360         CODE_LABEL_NUMBER <= max_labelno.
6361         * output.h (label_to_max_skip): New prototype.
6362         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
6363         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
6364         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
6365         Handle CODE_LABELs with >= 16 byte alignment or with
6366         max_skip == (1 << align) - 1.
6367         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
6368         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
6369
6370         PR target/39942
6371         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
6372         .p2align 3 if MAX_SKIP is smaller than 7.
6373         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
6374
6375 2009-05-15  Ian Lance Taylor  <iant@google.com>
6376
6377         * alias.c (struct alias_set_entry_d): Rename from struct
6378         alias_set_entry.  Change all uses.
6379         * except.c (struct call_site_record_d): Rename from struct
6380         call_site_record.  Change all uses.
6381         * except.h (struct eh_region_d): Rename from struct eh_region.
6382         Change all uses.
6383         * gcse.c (struct hash_table_d): Rename from struct hash_table.
6384         Change all uses.
6385         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
6386         ivtype_map_elt.  Change all uses.
6387         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
6388         Change all uses.
6389         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
6390         * graphite.h (struct name_tree_d): Rename from struct name_tree.
6391         Change all uses.
6392         (struct sese_d): Rename from struct sese.  Change all uses.
6393         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
6394         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
6395         * optabs.h (struct optab_d): Rename from struct optab.  Change all
6396         uses.
6397         (struct convert_optab_d): Rename from struct convert_optab.
6398         Change all uses.
6399         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
6400         ipa_opt_pass.  Change all uses.
6401         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
6402         all uses.
6403
6404         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
6405         defined as a typedef.
6406         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
6407         defined as a tag.
6408
6409 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6410
6411         PR 16302
6412         * fold-const.c (make_range,build_range_check,merge_ranges): Move
6413         declaration to...
6414         (merge_ranges): Returns bool. 
6415         * tree.h (make_range): .. to here.
6416         (build_range_check): Likewise.
6417         (merge_ranges): Likewise. Renamed from merge_ranges.
6418         * c-typeck.c (parser_build_binary_op): Update calls to
6419         warn_logical_operator.
6420         * c-common.c (warn_logical_operator): Add new warning.
6421         * c-common.h (warn_logical_operator): Update declaration.
6422         
6423 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
6424
6425         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
6426         
6427 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6428
6429         * doc/install.texi: Document MPC requirements, flags etc.
6430
6431         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
6432         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
6433         Evaluate constant arguments.
6434         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
6435         (fold_builtin_1): Likewise, also evaluate constant arguments.
6436         Remove superfluous break.
6437         (do_mpc_ckconv): New.
6438         * real.h: Include mpc.h.
6439         * toplev.c (print_version): Output MPC version info if available.
6440
6441 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
6442
6443         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
6444
6445 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
6446
6447         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
6448         only once.
6449
6450 2009-05-15  Jan Hubicka  <jh@suse.cz>
6451
6452         * doc/invoke.texi (max-early-inliner-iterations): New flag.
6453         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
6454         (try_inline): Fix return value.
6455         (cgraph_decide_inlining_incrementally): Honor new value.
6456         (cgraph_early_inlining): Handle indirect inlining.
6457         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
6458
6459 2009-05-15  Jan Hubicka  <jh@suse.cz>
6460
6461         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
6462         * cgraphunit.c (cgraph_finalize_function): Set it.
6463         (cgraph_expand_function): Use it.
6464
6465 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
6466
6467         * real.c (encode_ieee_half): Define.
6468         (decode_ieee_half): Define.
6469         (ieee_half_format): Define.
6470         (arm_half_format): Define.
6471         * real.h (ieee_half_format): Declare.
6472         (arm_half_format): Declare.
6473
6474 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
6475
6476         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
6477         swapped, and reversed optabs exist before trying to use them.
6478
6479 2009-05-15  Paul Brook  <paul@codesourcery.com>
6480             Sandra Loosemore  <sandra@codesourcery.com>
6481
6482         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
6483         loads.  Allow PRE_DEC.
6484         (output_move_neon): Handle PRE_DEC.
6485         (arm_print_operand): Add 'A' for neon structure loads.
6486         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
6487         * config/arm/neon.md (neon_mov): Update comment.
6488         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
6489         calls.
6490         (Um): New constraint.
6491
6492 2009-05-15  Jan Hubicka  <jh@suse.cz>
6493
6494         Revert the following patch until testsuite fallout is fixed:
6495         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
6496         * cgraph.h (struct inline_summary): New filed self_wize,
6497         size_inlining_benefit, self_time and time_inlining_benefit.
6498         (struct cgraph_global_info): Replace insns by time ans size fields.
6499         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
6500         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
6501         (ipcp_update_callgraph): Do not touch function bodies.
6502         * ipa-inline.c: Include except.h
6503         (MAX_TIME): New constant.
6504         (overall_insns): Remove
6505         (overall_size, max_benefit): New static variables.
6506         (cgraph_estimate_time_after_inlining): New function.
6507         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
6508         (cgraph_clone_inlined_nodes): Update size.
6509         (cgraph_mark_inline_edge): Update size.
6510         (cgraph_estimate_growth): Use size info.
6511         (cgraph_check_inline_limits): Check size.
6512         (cgraph_default_inline_p): Likewise.
6513         (cgraph_edge_badness): Compute badness based on benefit and size cost.
6514         (cgraph_decide_recursive_inlining): Check size.
6515         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
6516         and times.
6517         (cgraph_decide_inlining): Likewise.
6518         (cgraph_decide_inlining_incrementally): Likewise; honor
6519         PARAM_EARLY_INLINING_INSNS.
6520         (likely_eliminated_by_inlining_p): New predicate.
6521         (estimate_function_body_sizes): New function.
6522         (compute_inline_parameters): Use it.
6523         * except.c (must_not_throw_labels): New function.
6524         * except.h (must_not_throw_labels): Declare.
6525         * tree-inline.c (init_inline_once): Kill inlining_weigths
6526         * tree-ssa-structalias.c: Avoid uninitialized warning.
6527         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
6528         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
6529         (PARAM_INLINE_CALL_COST): Remove.
6530         (PARAM_EARLY_INLINING_INSNS): New.
6531
6532 2009-05-15  Richard Guenther  <rguenther@suse.de>
6533
6534         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
6535         not TODO_update_ssa.
6536
6537 2009-05-15  Richard Guenther  <rguenther@suse.de>
6538
6539         PR tree-optimization/39999
6540         * gimple.h (gimple_expr_type): Use the expression type looking
6541         through useless conversions.
6542         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
6543         (vn_nary_op_insert_stmt): Likewise.
6544         (simplify_binary_expression): Likewise.
6545
6546 2009-05-15  Richard Guenther  <rguenther@suse.de>
6547
6548         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
6549         New options, enabled by default.
6550         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
6551         Document.
6552         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
6553         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
6554         * tree-ssa-structalias.c (gate_tree_pta): New function.
6555         (pass_build_alias): Use it.
6556
6557 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
6558
6559         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
6560         recurse on an invariant address if a conversion from a pointer
6561         type to a wider integer type is involved.
6562
6563 2009-05-15  Jan Hubicka  <jh@suse.cz>
6564
6565         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
6566         * cgraph.h (struct inline_summary): New filed self_wize,
6567         size_inlining_benefit, self_time and time_inlining_benefit.
6568         (struct cgraph_global_info): Replace insns by time ans size fields.
6569         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
6570         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
6571         (ipcp_update_callgraph): Do not touch function bodies.
6572         * ipa-inline.c: Include except.h
6573         (MAX_TIME): New constant.
6574         (overall_insns): Remove
6575         (overall_size, max_benefit): New static variables.
6576         (cgraph_estimate_time_after_inlining): New function.
6577         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
6578         (cgraph_clone_inlined_nodes): Update size.
6579         (cgraph_mark_inline_edge): Update size.
6580         (cgraph_estimate_growth): Use size info.
6581         (cgraph_check_inline_limits): Check size.
6582         (cgraph_default_inline_p): Likewise.
6583         (cgraph_edge_badness): Compute badness based on benefit and size cost.
6584         (cgraph_decide_recursive_inlining): Check size.
6585         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
6586         and times.
6587         (cgraph_decide_inlining): Likewise.
6588         (cgraph_decide_inlining_incrementally): Likewise; honor
6589         PARAM_EARLY_INLINING_INSNS.
6590         (likely_eliminated_by_inlining_p): New predicate.
6591         (estimate_function_body_sizes): New function.
6592         (compute_inline_parameters): Use it.
6593         * except.c (must_not_throw_labels): New function.
6594         * except.h (must_not_throw_labels): Declare.
6595         * tree-inline.c (init_inline_once): Kill inlining_weigths
6596         * tree-ssa-structalias.c: Avoid uninitialized warning.
6597         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
6598         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
6599         (PARAM_INLINE_CALL_COST): Remove.
6600         (PARAM_EARLY_INLINING_INSNS): New.
6601         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
6602         (inline-call-cost): Remove.
6603         (early-inlining-insns): New.
6604
6605 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
6606
6607         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
6608         for bounds.
6609         (print_int_cst_bounds_in_octal_p): Likewise.
6610         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
6611         with subtypes.
6612         * dwarf2out.c (base_type_die): Likewise.
6613         (is_subrange_type): Delete.
6614         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
6615         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
6616         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
6617         if the destination type is boolean.
6618         (build_range_check): Do not special-case subtypes.
6619         (fold_sign_changed_comparison): Likewise.
6620         (fold_unary): Likewise.
6621         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
6622         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
6623         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
6624         * tree.c (subrange_type_for_debug_p): New predicate based on the
6625         former is_subrange_type.
6626         * tree.h (subrange_type_for_debug_p): Declare.
6627         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
6628         (convert_affine_scev): Remove call to above function.
6629         (chrec_convert_aggressive): Likewise.
6630         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
6631         false for conversions involving subtypes.
6632         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
6633         (vrp_val_min): Likewise.
6634         (needs_overflow_infinity): Likewise.
6635         (extract_range_from_unary_expr): Likewise.
6636
6637 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
6638
6639         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
6640         * config/frv/frv.c: Likewise.
6641         * config/s390/s390.c: Likewise.
6642         * config/sparc/sparc.h: Likewise.
6643         * config/i386/i386.h: Likewise.
6644         * config/i386/i386.c: Likewise.
6645         * config/crx/crx.c: Likewise.
6646         * config/m68hc11/m68hc11.h: Likewise.
6647         * config/iq2000/iq2000.c: Likewise.
6648         * config/mn10300/mn10300.h: Likewise.
6649         * config/mn10300/mn10300.c: Likewise.
6650         * config/m68k/m68k.c: Likewise.
6651         * config/rs6000/rs6000.c: Likewise.
6652         * config/rs6000/xcoff.h: Likewise.
6653         * config/rs6000/linux64.h: Likewise.
6654         * config/rs6000/sysv4.h: Likewise.
6655         * config/score/score3.c: Likewise.
6656         * config/score/score7.c: Likewise.
6657         * config/score/score.c: Likewise.
6658         * config/arm/arm.md: Likewise.
6659         * config/mips/mips.c: Likewise.
6660         * config/mips/mips.md: Likewise.
6661         * config/bfin/bfin.h: Likewise.
6662         * config/pa/pa.c: Likewise.
6663         * config/pa/constraints.md: Likewise.
6664
6665         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
6666         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
6667         * config/pdp11/pdp11.h: Use memory_address_p instead.
6668
6669 2009-05-14  Ian Lance Taylor  <iant@google.com>
6670
6671         * passes.c (finish_optimization_passes): Change i to int.
6672         * plugin.c (plugins_active_p): Change event to int.
6673         (dump_active_plugins): Likewise.
6674         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
6675         Add cast.
6676         * tree.c (tree_range_check_failed): Change c to unsigned int.
6677         (omp_clause_range_check_failed): Likewise.
6678         (build_common_builtin_nodes): Change mode to int.  Add cast.
6679         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
6680         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
6681
6682         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
6683         ++ or -- with a variable of enum type.
6684
6685 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
6686
6687         PR driver/40144
6688         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
6689
6690 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
6691
6692         * store-motion.c: Do not include params.h
6693         * Makefile.in: Fix dependencies for various files.
6694
6695 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
6696
6697         * auto-inc-dec.c: Fix pass description, remove apparent
6698         accidental duplication.
6699
6700 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
6701
6702         PR middle-end/40147
6703         * ipa-utils.h (memory_identifier_string): Moved to ...
6704         * tree.h (memory_identifier_string): Here.  Add GTY(()).
6705
6706 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
6707
6708         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
6709         in the former documentation of...
6710         (GO_IF_LEGITIMATE_ADDRESS): ... this.
6711         * ira-conflicts.c (get_dup_num): Use address_operand.
6712         * targhooks.c (default_legitimate_address_p): New.
6713         * targhooks.h (default_legitimate_address_p): New.
6714         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
6715         Call hook.
6716         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
6717         * target.h (struct target): Add legitimate_address_p.
6718         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
6719         (TARGET_INITIALIZER): Include it.
6720
6721         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6722         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
6723         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
6724         (TARGET_LEGITIMATE_ADDRESS_P): New.
6725
6726         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6727         (REG_OK_STRICT_P): Delete.
6728         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
6729         (frv_legitimate_address_p_1): ... this.
6730         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
6731         (frv_legitimate_address_p_1): ... the renamed old
6732         frv_legitimate_address_p.
6733         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
6734         (TARGET_LEGITIMATE_ADDRESS_P): New.
6735
6736         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6737         * config/s390/s390-protos.h (legitimate_address_p): Remove.
6738         * config/s390/s390.c (legitimate_address_p): Rename to...
6739         (s390_legitimate_address_p): ... this, make static.
6740         (legitimize_address): Adjust call.
6741         (TARGET_LEGITIMATE_ADDRESS_P): New.
6742         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
6743
6744         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6745         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
6746         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
6747         (TARGET_LEGITIMATE_ADDRESS_P): New.
6748
6749         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6750         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
6751         * config/spu/spu.c (spu_legitimate_address): Rename to...
6752         (spu_legitimate_address_p): ... this, make static.
6753         (TARGET_LEGITIMATE_ADDRESS_P): New.
6754
6755         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6756         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
6757         * config/sparc/sparc.c (legitimate_address_p): Rename to...
6758         (sparc_legitimate_address_p): ... this, make static and return bool.
6759         (legitimize_address): Adjust call.
6760         (TARGET_LEGITIMATE_ADDRESS_P): New.
6761
6762         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6763         * config/i386/i386-protos.h (legitimate_address_p): Remove.
6764         * config/i386/i386.c (legitimate_address_p): Rename to...
6765         (ix86_legitimate_address_p): ... this, make static.
6766         (constant_address_p): Move after it, adjust call.
6767         (TARGET_LEGITIMATE_ADDRESS_P): New.
6768
6769         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6770         * config/avr/avr-protos.h (legitimate_address_p): Remove.
6771         * config/avr/avr.c (legitimate_address_p): Rename to...
6772         (avr_legitimate_address_p): ... this, make static.
6773         (legitimize_address): Adjust call.
6774         (TARGET_LEGITIMATE_ADDRESS_P): New.
6775
6776         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6777         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
6778         * config/crx/crx.c (crx_legitimate_address_p): Make static.
6779         (TARGET_LEGITIMATE_ADDRESS_P): New.
6780
6781         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6782         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
6783         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
6784         (TARGET_LEGITIMATE_ADDRESS_P): New.
6785
6786         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6787         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
6788         Remove.
6789         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
6790         Make static.
6791         (TARGET_LEGITIMATE_ADDRESS_P): New.
6792
6793         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6794         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
6795         Remove.
6796         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
6797         Rename to...
6798         (m68hc11_legitimate_address_p): ... this, make static.
6799         (go_if_legitimate_address_internal): Rename to...
6800         (m68hc11_legitimate_address_p_1): ... this.
6801         (legitimize_address): Adjust call.
6802         (TARGET_LEGITIMATE_ADDRESS_P): New.
6803
6804         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6805         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
6806         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
6807         (TARGET_LEGITIMATE_ADDRESS_P): New.
6808
6809         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6810         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
6811         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
6812         (mn10300_legitimate_address_p): ... this, make static.
6813         (TARGET_LEGITIMATE_ADDRESS_P): New.
6814
6815         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6816         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
6817         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
6818         (TARGET_LEGITIMATE_ADDRESS_P): New.
6819
6820         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6821         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
6822         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
6823         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6824         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
6825         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
6826         (rs6000_legitimate_address_p): ... this, make static.
6827         (TARGET_LEGITIMATE_ADDRESS_P): New.
6828         (REG_MODE_OK_FOR_BASE_P): Delete.
6829         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
6830
6831         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6832         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
6833         Delete.
6834         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
6835         static, adjust types.
6836         (TARGET_LEGITIMATE_ADDRESS_P): New.
6837
6838         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6839         * config/score/score.c (score_address_p): Rename to...
6840         (score_legitimate_address_p): ... this.
6841         (TARGET_LEGITIMATE_ADDRESS_P): New.
6842         * config/score/score3.c (score3_address_p): Rename to...
6843         (score3_legitimate_address_p): ... this.
6844         * config/score/score7.c (score7_address_p): Rename to...
6845         (score7_legitimate_address_p): ... this.
6846
6847         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
6848         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
6849         GO_IF_LEGITIMATE_ADDRESS): Delete.
6850         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
6851         thumb2_legitimate_address_p): Delete.
6852         (arm_legitimate_address_p): Rename to...
6853         (arm_legitimate_address_outer_p): ... this.
6854         * config/arm/constraints.md ("Uq"): Adjust call.
6855         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
6856         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
6857         to...
6858         (arm_legitimate_address_outer_p): ... this.
6859         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
6860         static.
6861         (TARGET_LEGITIMATE_ADDRESS_P): New.
6862
6863         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6864         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
6865         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
6866         (TARGET_LEGITIMATE_ADDRESS_P): New.
6867
6868         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6869         * config/vax/vax-protos.h (legitimate_address_p): Remove.
6870         * config/vax/vax.c (legitimate_address_p): Rename to...
6871         (vax_legitimate_address_p): ... this, make static.
6872         (TARGET_LEGITIMATE_ADDRESS_P): New.
6873
6874         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6875         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
6876         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
6877         (TARGET_LEGITIMATE_ADDRESS_P): New.
6878
6879         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6880         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
6881         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
6882         (mmix_legitimate_address_p): ... this, make static.
6883         (TARGET_LEGITIMATE_ADDRESS_P): New.
6884
6885         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
6886         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
6887         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
6888         (TARGET_LEGITIMATE_ADDRESS_P): New.
6889
6890 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
6891
6892         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
6893         of MODE_COMPLEX_INT.
6894
6895 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6896
6897         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
6898         LCT_NORMAL in function call.
6899         * mips-tdump.c (print_file_desc): Add cast to enum type.
6900         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
6901         (mark_stabs): Add casts to enum types.
6902         (parse_stabs_common): Add casts to enum types.
6903
6904 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
6905
6906         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
6907         Check for invalid values of LETTER.
6908
6909 2009-05-13  Taras Glek  <tglek@mozilla.com>
6910
6911         * attribs.c (register_attribute): moved out attribute registration
6912         into register_attribute.
6913         * doc/plugins.texi: Documented register_attribute and
6914         PLUGIN_ATTRIBUTES.
6915         * gcc-plugin.h: Added forward decl for register_attribute.
6916         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
6917         * plugin.c (register_callback, invoke_plugin_callbacks): Added
6918         PLUGIN_ATTRIBUTES boilerplate.
6919
6920 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
6921
6922         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
6923         values even in sentinel and empty entries.
6924         (ms_printf_flag_specs):  Likewise.
6925         (ms_scanf_flag_specs):  Likewise.
6926         (ms_strftime_flag_specs):  Likewise.
6927         (ms_print_char_table):  Likewise.
6928         (ms_scan_char_table):  Likewise.
6929         (ms_time_char_table):  Likewise.
6930
6931 2009-05-13  Doug Kwan  <dougkwan@google.com>
6932
6933         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
6934
6935 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
6936
6937         * config/mips/mips.md (store): Add attributes for QI and HI.
6938         Update comment.
6939         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
6940         (truncdi<mode>2): ... this new pattern.
6941
6942 2009-05-13  Brad Hards  <bradh@kde.org>
6943
6944         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
6945
6946 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
6947             Ben Elliston <bje@au.ibm.com>
6948
6949         PR middle-end/40035
6950         * dse.c (check_mem_read_rtx): Guard against width == -1.
6951
6952 2009-05-13  Michael Matz  <matz@suse.de>
6953
6954         PR middle-end/39976
6955         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
6956         (trivially_conflicts_p): New function.
6957         (insert_backedge_copies): Use it.
6958
6959 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
6960
6961         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
6962         (handle_stdc_pragma): Use new enum constant names.
6963         (handle_pragma_float_const_decimal64): Ditto.
6964
6965 2009-05-13  Ian Lance Taylor  <iant@google.com>
6966
6967         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
6968         tree.def.
6969
6970 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
6971
6972         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
6973         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
6974         multilibs.
6975         * config/m68k/m68k.h (FL_UCLINUX): Define.
6976
6977 2009-05-13  Jan Hubicka  <jh@suse.cz>
6978
6979         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
6980
6981 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6982
6983         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
6984         unless -fschedule-insns is specified.
6985
6986 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6987
6988         PR target/39561
6989         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
6990         TARGET_EXPAND_CBRANCHDI4.
6991         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
6992         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
6993         (cmpeqdi): Fix comment.
6994
6995 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6996
6997         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
6998         (sh_legitimate_address_p): Likewise.
6999         * config/sh/sh.c (sh_legitimate_index_p): New.
7000         (sh_legitimate_address_p): Likewise.
7001         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
7002         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
7003         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
7004         (MAYBE_BASE_REGISTER_RTX_P): New macro.
7005         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
7006         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
7007         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
7008         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
7009         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
7010
7011 2009-05-12  Jan Hubicka  <jh@suse.cz>
7012
7013         * tree-inline.c (estimate_operator_cost): Add operands;
7014         when division happens by constant, it is cheap.
7015         (estimate_num_insns): Loads and stores are not having cost of 0;
7016         EH magic stuff is cheap; when computing runtime cost of switch,
7017         use log2 base of amount of its cases; builtin_expect has cost of 0;
7018         compute cost for moving return value of call.
7019         (init_inline_once): Initialize time_based flags.
7020         * tree-inline.h (eni_weights_d): Add time_based flag.
7021
7022 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7023
7024         * df-core.c: Update head documentation.
7025
7026 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
7027
7028         PR bootstrap/40118
7029         * rs6000.c (rs6000_generate_compare): Use op1b instead of
7030         shadowing exisiting variable op1.
7031
7032 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
7033
7034         PR target/37179
7035         * config/i386/driver-i386.c (processor_signatures): New enum.
7036         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
7037         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
7038         processor signature to detect geode processor.
7039
7040 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7041
7042         Revert:
7043
7044         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7045
7046         * optabs.c (prepare_cmp_insn): Temporarily disable test that
7047         causes spurious differences between trunk and cond-optab branch.
7048
7049 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7050
7051         * dojump.c (compare_from_rtx): Delete.
7052         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
7053         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
7054         if the comparison does not satisfy the predicate; test predicates for
7055         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
7056         further if one existing pattern fails.
7057         * expr.h (compare_from_rtx): Delete.
7058         (prepare_operand): Declare it.
7059         * optabs.c: Change "lib call" to "libcall" throughout.
7060         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
7061         HAVE_conditional_trap, emit_cmp_insn): Delete.
7062         (can_compare_p): Delete cmp_optab case.
7063         (prepare_float_lib_cmp): Return an rtx and a machine mode.
7064         Accept other parameters by value.
7065         (prepare_operand): Make non-static.
7066         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
7067         other parameters by value.  Try to widen operands here based on
7068         an optab_methods argument and looking at cbranch_optab.
7069         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
7070         loop.  Use cbranch_optab directly.
7071         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
7072         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
7073         assertion.
7074         (emit_conditional_move, emit_conditional_add): Inline what's needed
7075         of compare_from_rtx, using new prepare_cmp_insn for the rest.
7076         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
7077         with COMPARE.  Move cmov_optab and cstore_optab above
7078         with cbranch_optab, move cmp_optab down with ucmp_optab,
7079         remove tst_otpab.  Do not initialize trap_rtx.
7080         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
7081         for trap code.  Do not check HAVE_conditional_trap.  Use
7082         prepare_cmp_insn.  Accept no predicate for operand 3.
7083         * optabs.h (OTI_cmp): Mark as used only for libcalls.
7084         (OTI_ctrap, ctrap_optab): New.
7085         (tst_optab): Delete.
7086         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
7087         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
7088         with lookup of ctrap_optab.
7089         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
7090         Delete.
7091         (ctrap_optab): New.
7092
7093         * combine.c (combine_simplify_rtx, simplify_set): Do not
7094         special case comparing against zero for cc0 machines.
7095         * simplify-rtx.c (simplify_binary_operation_1): Never remove
7096         COMPARE on cc0 machines.
7097         (simplify_relational_operation): Return a new expression when
7098         a COMPARE could be removed.
7099         * final.c (final_scan_insn): Compare cc_status values
7100         against LHS of a (compare FOO (const_int 0)) cc0 source.
7101         Also check if cc_status.value is the full compare.
7102
7103         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
7104         (cstoreMM4): Document.
7105         (conditional_trap): Document ctrapMM4 instead.
7106         (sync_compare_and_swapMM): Refer to cbranchcc4.
7107         (Dependent Patterns): Eliminate obsolete information referring to
7108         the old jump optimization phase.
7109         (Canonicalization): Include cbranchcc4 case, omit canonicalization
7110         of compares with 0 on cc0 machines.
7111         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
7112         avoiding references to cc0.  Remove text about storing operands
7113         in cmpMM.
7114         * doc/tm.texi (Condition Codes): Include blurb on different
7115         condition code representations, separate into subsections for
7116         CC0, MODE_CC and conditional execution.
7117
7118         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
7119         alpha_emit_setcc): Accept operands and a machine mode.
7120         * config/alpha/alpha.c (alpha_emit_conditional_branch):
7121         Get code/op0/op1 from operands, use machine mode argument
7122         instead of alpha_compare.fp_p.  Emit the branch here.
7123         (alpha_emit_setcc): Likewise, and return boolean.
7124         (alpha_emit_conditional_move): Likewise.  Assert that
7125         cmp_op_mode == cmp_mode, and simplify accordingly.
7126         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
7127         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
7128         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
7129         Delete.
7130         (stack probe test): Use cbranchdi4.
7131         * config/alpha/predicates.md (alpha_cbranch_operator): New.
7132
7133         * config/arc/arc.c (gen_compare_reg): Do not emit cmp. 
7134         * config/arc/arc.h (movsicc, movsfcc): Use it.
7135         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
7136         (cbranchsi4, cstoresi4): New.
7137         (cmpsi, bCC and sCC expanders): Remove. 
7138
7139         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
7140         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
7141         * config/arm/predicates.md (arm_comparison_operator): Only include
7142         floating-point operators if there is a hardware floating-point unit.
7143         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
7144         deferring to cbranch_cc and cstore_cc respectively.
7145         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
7146         cbranch_cc, cstore_cc): New.
7147         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
7148         arm_compare_op1.
7149         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
7150
7151         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
7152         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
7153         as an argument.
7154         (adjust_insn_length): Adjust calls.
7155         (avr_reorg): Handle (compare (foo) (const_int 0)).
7156         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
7157         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
7158         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
7159         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
7160         (bCC): Remove.
7161         (cbranchqi4, cbranchhi4, cbranchsi4): New.
7162         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
7163
7164         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
7165         (cbranchsi4, cstorebi4, cstoresi4): New.
7166         (movbisi): This insn is duplicate, split it to zero_extend.
7167         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
7168         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
7169         (bfin_optimize_loop): Use cbranch expander.
7170         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
7171         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
7172         (bfin_bimode_comparison_operator): ... this.
7173         (bfin_direct_comparison_operator): New.
7174  
7175         * config/cris/cris.c (cris_normal_notice_update_cc): Look
7176         inside (compare FOO (const_int 0)).
7177         (cris_rtx_costs): Handle ZERO_EXTRACT.
7178         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
7179         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
7180         (*tstdi_v32): Delete.
7181         (*cmpdi_non_v32): Add M alternative for operand 1.
7182         (cmpsi, cmp<mode>): Make private.
7183         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
7184         with COMPARE.
7185         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
7186
7187         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
7188         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
7189         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
7190         (cc_reg_operand): New.
7191         (any_cond): Delete.
7192         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
7193         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
7194         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
7195         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
7196         crx_expand_scond): Delete.
7197
7198         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
7199         (cbranchsi4): New.
7200         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
7201         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
7202
7203         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
7204         cstoresi4, cstoresf4, cstoredf4): New.
7205         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
7206         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
7207         Receive the entire operands array.
7208         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
7209         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
7210         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
7211         Get test/op0/op1 from the operands array.
7212         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
7213
7214         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
7215         (h8300_expand_store): New.
7216         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
7217         (const_int 0)).
7218         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
7219         (h8300_expand_store): New.
7220         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
7221         or do not try to produce (set (cc0) REG).
7222         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
7223         change a compare into a move to a scratch register.  Disable some
7224         peepholes when comparing with zero.
7225         (tstsi, tsthi, tstsi, cmpqi): Make private.
7226         (cmphi): Delete.
7227         (bCC, sCC): Delete.
7228         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
7229         cstoresi4): New.
7230
7231         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
7232         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
7233         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
7234         (ix86_emit_i387_log1p): Use cbranchxf2.
7235         (ix86_expand_setcc): Return void.
7236         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
7237         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
7238         cmp<MODEF>, cmpcc): Remove.
7239         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
7240         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
7241         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
7242         (sCC and bCC expanders): Remove.
7243         (stack_protect_test): Use cbranchcc4.
7244
7245         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
7246         Delete.
7247         (ia64_expand_compare): Accept three rtx by reference and return void.
7248         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
7249         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
7250         from *expr.  Update *expr with the BImode comparison to do.
7251         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
7252         cmptf, bCC, sCC, conditional_trap): Delete.
7253         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4, 
7254         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
7255         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
7256         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
7257         * config/ia64/predicates.md (ia64_cbranch_operator): New.
7258
7259         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
7260         type of last argument.
7261         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
7262         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
7263         use machine mode argument instead of branch_type.  Remove dead
7264         code for floating-point comparisons.
7265         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
7266         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
7267         Remove.
7268         (cbranchsi4, cstoresi4): New.
7269         * config/iq2000/predicates.md (reg_or_const_operand): New.
7270
7271         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
7272         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
7273         (b<code>_op): Rewrite to...
7274         (bcc_op): ... this, using match_operator.
7275         (s<code>_op): Rewrite to...
7276         (scc_op): ... this, using match_operator.
7277         (s<code>_24_op): Rewrite to...
7278         (scc_op_24): ... this, using match_operator.
7279         (s<code>_<mode>): Rewrite to...
7280         (cstore<mode>4): ... this, using match_operator.
7281         (s<code>_<mode>_24): Rewrite to...
7282         (cstore<mode>4_24): ... this, using match_operator.
7283         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
7284         m32c_unpend_compare, m32c_expand_scc): Delete.
7285         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
7286         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
7287         (m32c_expand_movcc): Change NE to EQ if necessary.
7288         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
7289
7290         * config/m32r/m32r-protos.h (gen_cond_store): New.
7291         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
7292         (gen_cond_store): New, from sCC patterns.
7293         (m32r_expand_block_move): Use cbranchsi4.
7294         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
7295         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
7296         (cbranchsi4, cstoresi4): New.
7297         
7298         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
7299         Delete.
7300         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
7301         (m68hc11_notice_update_cc): Look into a compare with 0.
7302         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
7303         Delete.
7304         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
7305         cmphi, cmpqi, bCC): Delete.
7306         (cbranchsi4, cbranchhi4, cbranchqi4): New.
7307         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
7308         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
7309         sets with COMPARE.
7310
7311         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
7312         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
7313         * config/m68k/constraints.md (H): New.
7314         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
7315         the define_insn below.
7316         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
7317         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
7318         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
7319         patterns): Wrap RHS with COMPARE.
7320         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
7321         (*cmpdi_internal): Name this pattern.
7322         (cmpdi): Change to define_insn.
7323         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
7324         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
7325         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
7326         predicate.
7327         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
7328         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
7329         (conditional_trap): Change to...
7330         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
7331         (*conditional_trap): Use the ordered_comparison_operator and
7332         const1_operand predicates.
7333         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
7334         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
7335         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
7336         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
7337
7338         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
7339         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
7340         (mcore_gen_compare): New. 
7341         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
7342         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
7343         (mcore_gen_compare): ... this.
7344         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
7345         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
7346         (stack probe pattern): Use cbranchsi4.
7347
7348         * config/mips/predicates.md (mips_cstore_operator): New.
7349         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
7350         * config/mips/mips.md (any_cond): Delete.
7351         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
7352         always succeed.
7353         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
7354         fixuns_truncsfdi2): Use cbranch patterns.
7355         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete. 
7356         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
7357         Adjust call to mips_expand_conditional_branch.
7358         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
7359         cstore<GPR:mode>4.
7360         * config/mips/mips-protos.h (mips_expand_conditional_branch,
7361         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
7362         * config/mips/mips.c (cmp_operands): Delete.
7363         (mips_emit_compare): Get comparison operands from *op0/*op1.
7364         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
7365         that it succeeds.  Use op0/op1 instead of cmp_operands.
7366         (mips_expand_conditional_branch, mips_expand_conditional_move,
7367         mips_expand_conditional_trap): Likewise.
7368         (mips_block_move_loop): Use cbranch patterns. 
7369         * config/mips/mips.h (cmp_operands): Delete.
7370
7371         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
7372         (mmix_gen_compare_reg): Just return a register in the right CC mode.
7373         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
7374         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
7375         (*cmpcc_folded): Rename to...
7376         (*cmpdi_folded): this.
7377         (*cmpcc): Rename to...
7378         (*cmps): ... this.
7379         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
7380         (bCC): Remove.
7381         (cbranchdi4): New.
7382         (cbranchdf4): New.  Handle invalid comparisons here.
7383         * config/mmix/predicates.md (float_comparison_operator): New.
7384
7385         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
7386         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
7387         * config/mn10300/mn10300.md (tst): Delete.
7388         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
7389         Name these patterns and wrap RHS in a compare.
7390         (*cmpsi): Make this pattern private.  Include tst.
7391         (*cmpsf): Make this pattern private.
7392         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
7393         (compare with zero peepholes): Likewise.
7394         (bCC): Remove.
7395         (cbranchsi4, cbranchsf4): New.
7396         (casesi): Use cbranchsi4.
7397
7398         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
7399         hppa_branch_type): Delete.
7400         (return_addr_rtx): Use cbranchsi4.
7401         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
7402         Emit CCFPmode comparison here.
7403         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
7404         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
7405         hppa_branch_type): Delete.
7406         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
7407         (movsicc, movdicc): Remove references to hppa_compare_op0,
7408         hppa_compare_op1 and compare_from_rtx.
7409         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
7410         (casesi): Use cbranchsi4.
7411
7412         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
7413         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
7414         * config/pdp11/pdp11.md (register_or_const0_operand): New.
7415         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
7416         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
7417         (bCC): Delete.
7418         (cbranchdf4, cbranchhi4, cbranchqi4): New.
7419         (*branch, *branch_inverted): New.
7420
7421         * config/picochip/picochip.md (cbranchhi4): Use
7422         ordered_comparison_operator.
7423         (cmphi, bCC): Remove.
7424
7425         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
7426         (trap_comparison_operator): Delete.
7427         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
7428         rs6000_emit_cbranch): Accept mode and operands.
7429         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
7430         rs6000_compare_fp_p): Delete.   
7431         (rs6000_generate_compare): Accept mode and comparison.  Extract code
7432         and op0/op1 from there.  Replace references to rs6000_compare_op0
7433         and rs6000_compare_op1.
7434         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
7435         extract result from passed operands.
7436         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
7437         extract loc from passed operands.
7438         (rs6000_emit_cmove): Likewise.
7439         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
7440         rs6000_compare_fp_p): Delete.
7441         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
7442         (cbranch<GPR>4, cbranch<FP>4): New.
7443         (cstore<mode>4): New.  Consolidate here all choices about when to use
7444         portable or specialized sCC sequences.
7445         (stack_protect_test): Use cbranchsi4.
7446         (conditional_trap): Replace with ctrap<GPR>4.
7447         (conditional trap insn): Replace trap_comparison_operator with
7448         ordered_comparison_operator. 
7449
7450         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
7451         (s390_emit_prologue): Use ctrap.
7452         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
7453         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
7454         New predicates replacing...
7455         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
7456         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
7457         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
7458         (add<mode>cc): Do not use s390_compare_op0/op1.
7459         (s<code>): Change to...
7460         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
7461         (seq): Change to...
7462         (cstorecc4): ... this.  Handle EQ or NE equally.
7463         (*sne): Un-privatize for use in cstorecc4.
7464         (b<code>): Change to...
7465         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
7466         (conditional_trap): Replace with...
7467         (ctrap<GPR>4, ctrap<FP>4): ... these.
7468         (stack_protect): Use cbranchcc4.
7469
7470         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
7471         * config/score/score-protos.h (score_gen_cmp): Delete.
7472         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
7473         (score_block_move-loop): Use cbranchsi4.
7474         * config/score/score.md (cbranchsi4): New.
7475         (cmpsi, bCC): Delete.
7476         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
7477         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
7478         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
7479         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
7480         * config/score/score3.h (score3_gen_cmp): Delete.
7481         * config/score/score7.h (score7_gen_cmp): Delete.
7482
7483         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
7484         (sh_emit_scc_to_t): ... this.  Return void.
7485         (from_compare): Rename to...
7486         (sh_emit_compare_and_branch): ... this.
7487         (sh_emit_compare_and_set): New.
7488         (sh_expand_t_scc): Accept operands.
7489         * config/sh/predicates.md (sh_float_comparison_operator): New.
7490         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
7491         (prepare_scc_operands): Rename to...
7492         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
7493         arguments.
7494         (sh_emit_cheap_store_flag): New.
7495         (sh_emit_set_t_insn): New.
7496         (from_compare): Rename to...
7497         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
7498         handling of TARGET_SH2E floating point to avoid recursive call.
7499         Generate branch here.
7500         (sh_emit_compare_and_set): New.
7501         (sh_expand_t_scc): Get op0/op1 from arguments.
7502         (sh_emit_cheap_store_flag): New.
7503         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
7504         cases.
7505         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
7506         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
7507         (movsicc, movdicc): Do nothing when it recreated operands from
7508         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
7509         prepare_scc_operands (now sh_emit_scc_to_t).
7510         (udivdi3): Use cstoresi4.
7511         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
7512         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
7513         (cbranchint4_media, cbranchfp4_media): New.
7514         (casesi): Use cbranchdi4.
7515         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
7516         Delete.
7517         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
7518         (movnegt): Remove second operand.
7519         (cbranchsf4, cbranchdf4): New.
7520         (stack_protect): Use cbranchdi4/cbranchsi4.
7521
7522         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
7523         (gen_compare_reg): Accept comparison, extract part of it to...
7524         (gen_compare_reg_1): ... this. 
7525         (gen_compare_operator): Delete.
7526         (gen_v9_scc): Accept separate destination, comparison code and arms.
7527         Do not use sparc_compare_op0/sparc_compare_op1.
7528         (emit_scc_insn, emit_conditional_branch_insn): New.
7529         (emit_v9_brxx): Make static.  Remove useless assertion.
7530         (sparc_emit_float_lib_cmp): Return RTL instead of calling
7531         emit_cmp_insn.
7532         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
7533         * config/sparc/sparc-protos.h (gen_compare_reg,
7534         sparc_emit_float_lib_cmp): Adjust prototype.
7535         (emit_scc_insn, emit_conditional_branch_insn): New.
7536         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
7537         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
7538         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
7539         iterators to the top.
7540         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
7541         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
7542         snedi_special_trunc): Delete.
7543         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
7544         and snedi_special_trunc.
7545         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
7546         cbranchdi4, cbranch<F:mode>4): New.
7547         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
7548         here.  Use gen_compare_reg instead of gen_compare_operator.
7549         (conditional_trap): Replace with...
7550         (ctrapsi4, ctrapdi4): ... this.
7551         (stack_protect_test): Use cbranchcc4.
7552
7553         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
7554         argument to rtx.
7555         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove. 
7556         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
7557         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
7558         from operands[0] or operands[3] depending on is_set.
7559         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
7560         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
7561         cmpdf, bCC), sCC: Remove.
7562         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4, 
7563         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
7564         cstoredf4): New.
7565         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
7566         spu_emit_branch_or_set.
7567
7568         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
7569         Add two arguments.
7570         * config/stormy16/stormy16.h (xstormy16_compare_op0,
7571         xstormy16_compare_op1): Delete.
7572         * config/stormy16/stormy16.c (xstormy16_compare_op0,
7573         xstormy16_compare_op1): Delete. 
7574         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
7575         Adjust calls.
7576         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
7577         (cmphi, cmpsi, bCC): Remove.
7578
7579         * config/v850/v850.md (tstsi, cmpsi): Fold into...
7580         (*cmpsi): ... this one.
7581         (cbranchsi4, cstoresi4): New.
7582         (bCC expanders): Delete.
7583         (sCC insns): Fold into...
7584         (*setcc): ... this one.
7585         (casesi): Do not use gen_cmpsi and gen_bgtu. 
7586         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
7587         (movsicc): Simplify.
7588         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
7589
7590         * config/vax/vax-protos.h (cond_name): New.
7591         (vax_output_conditional_branch): Remove.
7592         * config/vax/vax.c (cond_name): New.
7593         (vax_output_conditional_branch): Remove.
7594         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
7595         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
7596         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
7597         (bit<VAXint>): Wrap source with (compare).
7598         (b<code> and following unnamed pattern): Rename to *branch and
7599         *branch_reversed.  Change macroization to match_operator.
7600         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
7601
7602         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
7603         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
7604         Change last argument to machine_mode.
7605         (xtensa_expand_scc): Add machine_mode argument.
7606         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
7607         (gen_conditional_move, xtensa_expand_conditional_branch,
7608         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
7609         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
7610         Adjust operand numbers.
7611         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
7612         Delete.
7613         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
7614         (cmpsi, cmpsf, b<code>, s<code>): Delete.
7615         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
7616
7617 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
7618
7619         * optabs.c (prepare_cmp_insn): Temporarily disable test that
7620         causes spurious differences between trunk and cond-optab branch.
7621
7622 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
7623
7624         PR target/37137
7625         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
7626
7627 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
7628
7629         * tree.c (iterative_hash_pointer): Delete.
7630         (iterative_hash_expr): Short-circuit handling of NULL pointer.
7631         Hash UIDs and versions of SSA names.  Don't special-case built-in
7632         function declarations.
7633
7634 2009-05-11  Ian Lance Taylor  <iant@google.com>
7635
7636         PR bootstrap/40103
7637         * graphite.c: Force -Wc++-compat to only be a warning before
7638         #including "cloog/cloog.h".
7639
7640 2009-05-11  Martin Jambor  <mjambor@suse.cz>
7641
7642         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
7643         
7644 2009-05-11  Jan Hubicka  <jh@suse.cz>
7645
7646         * tree-ssa-loop-ivcanon.c: Include target.h
7647         (struct loop_size): new structure.
7648         (constant_after_peeling): New predicate.
7649         (tree_estimate_loop_size): New function.
7650         (estimated_unrolled_size): Rewrite for new estimates.
7651         (try_unroll_loop_completely): Use new estimates.
7652         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
7653
7654 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7655
7656         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
7657         libcpp interface change.
7658         (spu_macro_to_expand): Likewise.
7659
7660 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
7661
7662         PR tree-optimization/40026
7663         * gimplify.c (gimplify_init_constructor): Change initial conditional
7664         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
7665         optimize_compound_literals_in_ctor.
7666
7667 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
7668
7669         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
7670         New devices.
7671         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
7672
7673 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
7674
7675         * tree-vect-data-refs.c (vect_analyze_group_access): Use
7676         HOST_WIDE_INT for gap.
7677
7678 2009-05-11  Ira Rosen  <irar@il.ibm.com>
7679
7680         PR tree-optimization/40074
7681         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
7682         account in group size and step comparison.
7683
7684 2009-05-11  Richard Guenther  <rguenther@suse.de>
7685
7686         * passes.c (init_optimization_passes): Strip now incorrect comment.
7687         (execute_function_todo): Do not set PROP_alias.
7688         * tree-pass.h (PROP_alias): Remove.
7689         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
7690         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
7691         * tree-nrv.c (pass_return_slot): Likewise.
7692         * tree-object-size.c (pass_object_sizes): Likewise.
7693         * tree-ssa-dom.c (pass_dominator): Likewise.
7694         (pass_phi_only_cprop): Likewise.
7695         * tree-ssa-dse.c (pass_dse): Likewise.
7696         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
7697         (pass_cselim): Likewise.
7698         * tree-ssa-pre.c (pass_pre): Likewise.
7699         (pass_fre): Likewise.
7700         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
7701         * tree-ssa-sink.c (pass_sink_code): Likewise.
7702         * tree-stdarg.c (pass_stdarg): Likewise.
7703         * tree-tailcall.c (pass_tail_calls): Likewise.
7704         * tree-vrp.c (pass_vrp): Likewise.
7705
7706 2009-05-10  Ian Lance Taylor  <iant@google.com>
7707
7708         * basic-block.h (enum profile_status): Break out of struct
7709         control_flow_graph.
7710         * cgraph.h (struct inline_summary): Break out of struct
7711         cgraph_local_info.
7712         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
7713         of struct cgraph_order_sort.
7714         * combine.c (enum undo_kind): New enum, broken out of struct undo.
7715         * cse.c (struct branch_path): Break out of struct
7716         cse_basic_block_data.
7717         * except.h (enum eh_region_type): Break out of struct eh_region.
7718         * gcc.c (enum add_del): Break out of struct modify_target.
7719         * genrecog.c (enum decision_type): Break out of struct decision_test.
7720         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
7721         ggc_pch_data.
7722         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
7723         * regmove.c (enum match_use): New enum, broken out of struct match.
7724         * sched-int.h (enum post_call_group): New enum, broken out of
7725         struct deps.
7726         (struct deps_reg): Break out of struct deps.
7727         * target.h (struct asm_int_op): Break out of struct gcc_target.
7728         * tree-eh.c (struct goto_queue_node): Break out of struct
7729         leh_tf_state.
7730         * tree-inline.h (enum copy_body_cge_which): Break out of
7731         copy_body_data.
7732         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
7733
7734         * c-decl.c (in_struct, struct_types): New static variables.
7735         (pushtag): Add loc parameter.  Change all callers.
7736         (lookup_tag): Add ploc parameter.  Change all callers.
7737         (check_compound_literal_type): New function.
7738         (parser_xref_tag): Add loc parameter.  Change all callers.  If
7739         -Wc++-compat, warn about struct/union/enum types defined within a
7740         struct or union.
7741         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
7742         and loc parameters.  Change all callers.  Change error calls to
7743         error_at, using loc.  For a redefinition, if the location of the
7744         original definition is known, report it.  Set in_struct and
7745         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
7746         (finish_struct): Add new parameters enclosing_in_struct and
7747         enclosing_struct_types.  Change all callers.  Set
7748         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
7749         in the struct.  If in a struct, add this struct to struct_types.
7750         (start_enum): Add loc parameter.  Change all callers.  Use
7751         error_at for errors, using loc.  For a redefinition, if the
7752         location of the original definition is known, report it.  If in a
7753         struct, add this enum type to struct_types.  If -Wc++-compat warn
7754         if in sizeof, typeof, or alignof.
7755         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
7756         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
7757         (c_parser_enum_specifier): Get enum location for start_enum.
7758         (c_parser_struct_or_union_specifier): Get struct location for
7759         start_struct.  Save in_struct and struct_types status between
7760         start_struct and finish_struct.
7761         (c_parser_cast_expression): Get location of cast.
7762         (c_parser_alignof_expression): Get location of type.
7763         (c_parser_postfix_expression): Likewise.
7764         (c_parser_postfix_expression_after_paren_type): Add type_loc
7765         parameter.  Change all callers.  Call check_compound_literal_type.
7766         Use type_loc for error about variable size type.
7767         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
7768         of an enum constant from an enum type defined in a struct or union.
7769         (c_cast_expr): Add loc parameter.  Change all callers.  If
7770         -Wc++-compat, warn about defining a type in a cast.
7771         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
7772         (start_enum, start_struct, finish_struct): Update declarations.
7773         (parser_xref_tag, c_cast_expr): Update declarations.
7774         (check_compound_literal_type): Declare.
7775
7776 2009-05-11  Ben Elliston  <bje@au.ibm.com>
7777
7778         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
7779         for recent libcpp interface change.
7780         (rs6000_macro_to_expand): Likewise.
7781
7782 2009-05-10  Michael Matz  <matz@suse.de>
7783
7784         PR target/40031
7785         * config/arm/arm.c (require_pic_register): Emit on entry edge,
7786         not at entry of function.
7787
7788 2009-05-10  Richard Guenther  <rguenther@suse.de>
7789
7790         PR tree-optimization/40081
7791         Revert
7792         * tree-sra.c (instantiate_element): Instantiate scalar replacements
7793         using the main variant of the element type.  Do not fiddle with
7794         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
7795
7796         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
7797         structs with volatile fields.
7798
7799 2009-05-10  Jan Hubicka  <jh@suse.cz>
7800
7801         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
7802         (estimate_move_cost): Assert that it does not get called for
7803         VOID_TYPE_P.
7804         (estimate_num_insns): Skip VOID types in argument handling.
7805         (optimize_inline_calls): Delete unreachable blocks and verify that
7806         callgraph is valid.
7807
7808 2009-05-10  Jan Hubicka  <jh@suse.cz>
7809
7810         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
7811         * cgraph.c (cgraph_mark_address_taken_node): New function.
7812         (dump_cgraph_node): Dump new flag.
7813         * cgraph.h (struct cgraph_node): Add address_taken.
7814         (cgraph_mark_address_taken_node): New function.
7815         * ipa.c (cgraph_postorder): Prioritize functions with address taken
7816         since new direct calls can be born.
7817
7818 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
7819
7820         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
7821         tok->val.node.node.
7822
7823 2009-05-10  Jan Hubicka  <jh@suse.cz>
7824
7825         PR middle-end/40084
7826         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
7827         argument; rewrite.
7828         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
7829         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
7830         * tree-inline.c (copy_bb): Set frequency correctly.
7831         (fold_marked_statements): Update call to
7832         cgraph_update_edges_for_call_stmt.
7833
7834 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
7835
7836         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
7837         identifiers in diagnostics.
7838         * config/arm/arm.c (arm_handle_fndecl_attribute,
7839         arm_handle_isr_attribute): Likewise.
7840         * config/avr/avr.c (avr_handle_progmem_attribute,
7841         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
7842         * config/bfin/bfin.c (handle_int_attribute,
7843         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
7844         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
7845         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
7846         Likewise.
7847         * config/darwin.c (darwin_handle_kext_attribute,
7848         darwin_handle_weak_import_attribute): Likewise.
7849         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
7850         h8300_handle_eightbit_data_attribute,
7851         h8300_handle_tiny_data_attribute): Likewise.
7852         * config/i386/i386.c (ix86_handle_cconv_attribute,
7853         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
7854         * config/i386/winnt.c (ix86_handle_shared_attribute,
7855         ix86_handle_selectany_attribute): Likewise.
7856         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
7857         * config/m32c/m32c.c (function_vector_handler): Likewise.
7858         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
7859         m68hc11_handle_fntype_attribute): Likewise.
7860         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
7861         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
7862         * config/mips/mips.c (mips_insert_attributes,
7863         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
7864         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
7865         rs6000_handle_struct_attribute): Likewise.
7866         * config/sh/sh.c (sh_insert_attributes,
7867         sh_handle_resbank_handler_attribute,
7868         sh_handle_interrupt_handler_attribute,
7869         sh2a_handle_function_vector_handler_attribute,
7870         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
7871         Likewise.
7872         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
7873         * config/spu/spu.c (spu_handle_fndecl_attribute,
7874         spu_handle_vector_attribute): Likewise.
7875         * config/stormy16/stormy16.c
7876         (xstormy16_handle_interrupt_attribute): Likewise.
7877         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
7878         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
7879
7880 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
7881
7882         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
7883         (pp_translate_identifiers): New.
7884         (pp_identifier): Only conditionally translate identifier to locale
7885         character set.
7886         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
7887         (pp_base_tree_identifier): Only conditionally translate identifier
7888         to locale character set.
7889         * c-pretty-print.c (M_): Define.
7890         (pp_c_type_specifier, pp_c_primary_expression): Mark English
7891         fragments for conditional translation with M_.
7892         * tree-pretty-print.c (maybe_init_pretty_print): Disable
7893         identifier translation.
7894
7895 2009-05-10  Richard Guenther  <rguenther@suse.de>
7896
7897         PR tree-optimization/40081
7898         * tree-sra.c (instantiate_element): Instantiate scalar replacements
7899         using the main variant of the element type.  Do not fiddle with
7900         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
7901
7902 2009-05-09  Jan Hubicka  <jh@suse.cz>
7903
7904         PR middle-end/40080
7905         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
7906         indirect calls; verify cgraph afterwards.
7907
7908 2009-05-09  Jan Hubicka  <jh@suse.cz>
7909
7910         PR bootstrap/40082
7911         * ipa.c (update_inlined_to_pointer): New function.
7912         (cgraph_remove_unreachable_nodes): Use it.
7913
7914 2009-05-09  Jan Hubicka  <jh@suse.cz>
7915
7916         * tree-eh.c (struct leh_state): Remove prev_try.
7917         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
7918         not track prev_try.
7919         * except.c (gen_eh_region_cleanup, duplicate_eh_regions, 
7920         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
7921         remove_eh_handler_and_replace, foreach_reachable_handler,
7922         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
7923         * except.h (struct eh_region): Remove eh_region_u_cleanup.
7924         (gen_eh_region_cleanup): Update prototype.
7925
7926 2009-05-09  Jan Hubicka  <jh@suse.cz>
7927
7928         PR middle-end/40043
7929         * except.c (copy_eh_region): Always set prev_try.
7930         (redirect_eh_edge_to_label): Find outer try.
7931         (foreach_reachable_handler): When looking for prev try
7932         handle case where previous try is not going to be taken.
7933
7934 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
7935
7936         PR tree-optimization/40049
7937         * tree-vect-stmts.c (vectorizable_operation): If the machine has
7938         only vector/vector shifts, convert the type of the constant to the
7939         appropriate type to avoid building incorrect trees, which
7940         eventually have problems with garbage collection.
7941
7942 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
7943
7944         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
7945         -1 for complex floating-point types if honoring signed zeros.
7946
7947 2009-05-08  Jan Hubicka  <jh@suse.cz>
7948
7949         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
7950         argument; handle correctly when profile is absent.
7951         (build_cgraph_edges): Update.
7952         (rebuild_cgraph_edges): Update.
7953         * cgraph.c: Do not include varray.h.
7954         (cgraph_set_call_stmt_including_clones): New function.
7955         (cgraph_create_edge_including_clones): Likewise
7956         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
7957         (cgraph_update_edges_for_call_stmt): Handle clones.
7958         (cgraph_remove_node): Handle clone tree.
7959         (cgraph_remove_node_and_inline_clones): New function.
7960         (dump_cgraph_node): Dump clone tree.
7961         (cgraph_clone_node): Handle clone tree.
7962         (clone_function_name): Bring here from tree-inline.c.
7963         (cgraph_create_virtual_clone): New function.
7964         * cgraph.h (ipa_replace_map): Move here from ipa.h.
7965         (cgraph_clone_info): New function.
7966         (strut cgraph_node): Add clone_info and new clone tree pointers.
7967         (cgraph_remove_node_and_inline_clones,
7968         cgraph_set_call_stmt_including_clones,
7969         cgraph_create_edge_including_clones,
7970         cgraph_create_virtual_clone): Declare.
7971         (cgraph_function_versioning): Use VEC argument.
7972         (compute_call_stmt_bb_frequency): Update prototype.
7973         (cgraph_materialize_all_clones): New function.
7974         * ipa-cp.c (ipcp_update_cloned_node): Remove.
7975         (ipcp_create_replace_map): Update to VECtors.
7976         (ipcp_update_callgraph): Use virtual clones.
7977         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
7978         (ipcp_update_profiling): Do not update local profiling.
7979         (ipcp_insert_stage): Use VECtors and virtual clones.
7980         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
7981         (clone_of_p): New function.
7982         (cgraph_preserve_function_body_p): Use clone tree.
7983         (cgraph_optimize): Materialize clones.
7984         (cgraph_function_versioning): Update for VECtors.
7985         (save_inline_function_body): Use clone tree.
7986         (cgraph_materialize_clone): New function.
7987         (cgraph_materialize_all_clones): Likewise.
7988         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
7989         * ipa.c: Include gimple.h.
7990         (cgraph_remove_unreachable_nodes): Use clone tree.
7991         * ipa-prop.c (ipa_note_param_call): Update call to
7992         compute_call_stmt_bb_frequencycall.
7993         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
7994         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
7995         (copy_bb): Handle updating of clone tree; add new edge when new call
7996         appears.
7997         (expand_call_inline): Be strict about every call having edge.
7998         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
7999         (delete_unreachable_blocks_update_callgraph): New function.
8000         (tree_function_versioning): Use VECtors; always remove unreachable
8001         blocks and fold conditionals.
8002         * tree-inline.h: Do not include varray.h.
8003         (tree_function_versioning): Remove.
8004         * Makefile.in (GTFILES): Remove tree-inline.c
8005         * passes.c (do_per_function): Do only functions having body.
8006         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
8007         tree.
8008
8009 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
8010             Andrew Morrow  <acm@google.com>
8011
8012         PR c/36892
8013         * c-common.c (c_common_attribute_table): Permit deprecated
8014         attribute to take an optional argument.
8015         (handle_deprecated_attribute): If the optional argument to
8016         __attribute__((deprecated)) is not a string ignore the attribute
8017         and emit a warning.
8018
8019         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
8020         * c-typeck.c (build_component_ref): Likewise.
8021         (build_external_ref): Likewise.
8022
8023         * toplev.c (warn_deprecated_use): Add an attribute argument.
8024         Emit the message associated with __attribute__((deprecated)).
8025
8026         * toplev.h (warn_deprecated_use): Updated.
8027
8028         * doc/extend.texi: Document new optional parameter to
8029         __attribute__((deprecated))
8030
8031 2009-05-08  Michael Eager <eager@eagercon.com>
8032
8033         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
8034         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
8035
8036 2009-05-08  Richard Guenther  <rguenther@suse.de>
8037
8038         PR tree-optimization/40062
8039         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
8040         Avoid exponential behavior.
8041
8042 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
8043
8044         PR rtl-optimization/33928
8045         PR 26854
8046         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
8047         process_uses, build_single_def_use_links): New.
8048         (update_df): Update use_def_ref.
8049         (forward_propagate_into): Use get_def_for_use instead of use-def
8050         chains.
8051         (fwprop_init): Call build_single_def_use_links and let it initialize
8052         dataflow.
8053         (fwprop_done): Free use_def_ref.
8054         (fwprop_addr): Eliminate duplicate call to df_set_flags.
8055         * df-problems.c (df_rd_simulate_artificial_defs_at_top, 
8056         df_rd_simulate_one_insn): New.
8057         (df_rd_bb_local_compute_process_def): Update head comment.
8058         (df_chain_create_bb): Use the new RD simulation functions.
8059         * df.h (df_rd_simulate_artificial_defs_at_top, 
8060         df_rd_simulate_one_insn): New.
8061         * opts.c (decode_options): Enable fwprop at -O1.
8062         * doc/invoke.texi (-fforward-propagate): Document this.
8063
8064 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
8065
8066         PR c/24581
8067         * c-typeck.c (build_binary_op): Handle arithmetic between one real
8068         and one complex operand specially.
8069         * tree-complex.c (some_nonzerop): Do not identify a real value as
8070         zero if flag_signed_zeros.
8071
8072 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
8073
8074         PR rtl-optimization/33928
8075         * loop-invariant.c (record_use): Fix && vs. || mishap.
8076
8077 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
8078
8079         PR rtl-optimization/33928
8080         * loop-invariant.c (struct use): Add addr_use_p.
8081         (struct def): Add n_addr_uses.
8082         (struct invariant): Add cheap_address.
8083         (create_new_invariant): Set cheap_address.
8084         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
8085         (record_uses): Pass df_ref to record_use.
8086         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
8087         used only as such.
8088
8089 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
8090
8091         * config/sh/sh.c: Do not include c-pragma.h.
8092
8093 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8094
8095         * config/spu/spu.c: Remove include of c-common.h.
8096
8097 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
8098
8099         PR c/39037
8100         * c-common.h (mark_valid_location_for_stdc_pragma,
8101         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
8102         clear_float_const_decimal64, float_const_decimal64_p): New.
8103         * c.opt (Wunsuffixed-float-constants): New.
8104         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
8105         unsuffixed float constant, handle new warning.
8106         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
8107         * c-decl.c (c_scope): New flag float_const_decimal64.
8108         (set_float_const_decimal64, clear_float_const_decimal64,
8109         float_const_decimal64_p): New.
8110         (push_scope): Set new flag.
8111         * c-parser.c (c_parser_translation_unit): Mark when it's valid
8112         to use STDC pragmas.
8113         (c_parser_external_declaration): Ditto.
8114         (c_parser_compound_statement_nostart): Ditto.
8115         * c-pragma.c (valid_location_for_stdc_pragma,
8116         mark_valid_location_for_stdc_pragma,
8117         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
8118         handle_pragma_float_const_decimal64): New.
8119         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
8120         * cp/semantics.c (valid_location_for_stdc_pragma_p,
8121         set_float_const_decimal64, clear_float_const_decimal64,
8122         float_const_decimal64_p): New dummy functions.
8123         * doc/extend.texi (Decimal Float): Remove statement that the
8124         pragma, and suffix for double constants, are not supported.
8125         * doc/invoke.texi (Warning Options): List new option.
8126         (-Wunsuffixed-float-constants): New.
8127
8128 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
8129
8130         * config/i386/i386.c: Do not include c-common.h.
8131
8132 2009-05-07  Mark Heffernan  <meheff@google.com>
8133
8134         * doc/invoke.texi (Debugging Options): Document change of debugging
8135         dump location.
8136         * opts.c (decode_options): Make dump_base_name relative to
8137         aux_base_name directory.
8138
8139 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
8140
8141         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
8142         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
8143
8144 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
8145
8146         * Makefile.in (install-plugin): Simplify a bit.
8147
8148 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
8149
8150         * Makefile.in (OBJS-common): Add regcprop.o.
8151         (regcprop.o): New.
8152         * timevar.def (TV_CPROP_REGISTERS): New.
8153         * regrename.c (regrename_optimize): Return 0.
8154         (rest_of_handle_regrename): Delete.
8155         (pass_rename_registers): Point to regrename_optimize.
8156         (struct value_data_entry, struct value_data, 
8157         kill_value_one_regno, kill_value_regno, kill_value,
8158         set_value_regno, init_value_data, kill_clobbered_value,
8159         kill_set_value, kill_autoinc_value, copy_value,
8160         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
8161         replace_oldest_value_reg, replace_oldest_value_addr,
8162         replace_oldest_value_mem, copyprop_hardreg_forward_1,
8163         debug_value_data, validate_value_data): Move...
8164         * regcprop.c: ... here.
8165         (rest_of_handle_cprop): Delete.
8166         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
8167
8168 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
8169
8170         PR middle-end/40057
8171         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
8172         GEN_INT for 1 << bitnum.
8173         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
8174         build_int_cst_type.
8175
8176 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
8177
8178         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
8179         Remove wrong description of "nand" operation.
8180
8181 2009-05-06  Richard Guenther  <rguenther@suse.de>
8182             Adam Nemet  <anemet@caviumnetworks.com>
8183
8184         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
8185         comment.  Add that if LHS is not a gimple register, then RHS1 has
8186         to be a single object (GIMPLE_SINGLE_RHS).
8187
8188 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
8189
8190         * expr.c (get_def_for_expr): Move it up in the file.
8191         (store_field): When expanding a bit-field store, look at the
8192         defining gimple stmt for the masking conversion.
8193
8194 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
8195
8196         PR middle-end/39986
8197         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
8198         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
8199         32-bit memcpy into long.
8200
8201 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
8202
8203         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
8204         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
8205         new_reg_loc_descr.
8206         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
8207         instead of appending DW_OP_deref*.
8208
8209 2009-05-06  Michael Matz  <matz@suse.de>
8210
8211         PR middle-end/40021
8212         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
8213         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
8214
8215 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
8216
8217         * Makefile.in (install-plugin): Fix srcdir handling.
8218
8219 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
8220
8221         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
8222         when processing for not_regs_needed bitmap.
8223         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
8224         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while 
8225         handling it for rhs. 
8226
8227 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
8228
8229         * config/i386/i386.md (unnamed inc/dec peephole): Use
8230         optimize_insn_for_size_p instead of optimize_size.
8231         * config/i386/predicates.md (incdec_operand): Likewise.
8232         (aligned_operand): Likewise.
8233         * config/i386/sse.md (divv8sf3): Likewise.
8234         (sqrtv8sf2): Likewise.
8235
8236 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
8237
8238         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
8239
8240         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
8241
8242 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
8243
8244         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
8245         ssemodesuffixf2c with avxmodesuffixf2c.
8246
8247 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
8248
8249         PR c/40032
8250         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
8251
8252 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
8253
8254         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
8255         (struct tree_base): Adjust spacing for 8 bit boundaries.
8256         (struct tree_decl_common): Add decl_by_reference_flag bit.
8257         (DECL_BY_REFERENCE): Adjust.
8258         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
8259         print DECL_BY_REFERENCE bit.
8260         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
8261         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
8262         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
8263         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
8264         unconditionally.
8265
8266         PR middle-end/39666
8267         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
8268         range of the type, but default label is missing, add it with one
8269         of the existing labels instead of adding a new label for it.
8270
8271 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
8272
8273         * dwarf.h: Remove.
8274
8275 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
8276
8277         * Makefile.in (enable_plugin, plugin_includedir): New.
8278         (install): Depend on install-plugin.
8279         (PLUGIN_HEADERS): New.
8280         (install-plugin): New.
8281         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
8282
8283 2009-05-05  Richard Guenther  <rguenther@suse.de>
8284
8285         PR tree-optimization/40022
8286         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
8287         the only vuse.
8288         (phivn_valid_p): Fix tuplification error, simplify.
8289         (phiprop_insert_phi): Add dumps.
8290         (propagate_with_phi): Simplify.
8291
8292 2009-05-05  Richard Guenther  <rguenther@suse.de>
8293
8294         PR middle-end/40023
8295         * builtins.c (gimplify_va_arg_expr): Properly build the address.
8296
8297 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
8298
8299         * tree.h (strip_float_extensions): Remove duplicate declaration.
8300         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
8301         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
8302         block_ultimate_origin): Rearrange the declarations line to match the
8303         comment that indicates the .c file which the functions are defined.
8304         (dwarf2out_*, set_decl_rtl): Add comment.
8305         (get_base_address): Adjust comment.
8306         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
8307         declarations line and add comment.
8308         (is_builtin_name): Add blank after function name, for clarity.
8309
8310 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
8311
8312         * attribs.c (decl_attributes): Use %qE for identifiers in
8313         diagnostics.
8314         * cgraphunit.c (verify_cgraph_node): Translate function names to
8315         locale character set in diagnostics.
8316         * coverage.c (get_coverage_counts): Use %qE for identifiers in
8317         diagnostics.
8318         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
8319         Document that functions are named in UTF-8.
8320         * expr.c (expand_expr_real_1): Translate function names to locale
8321         character set in diagnostics.
8322         * gimplify.c (omp_notice_variable, omp_is_private,
8323         gimplify_scan_omp_clauses): Use %qE for identifiers in
8324         diagnostics.
8325         * langhooks.c (lhd_print_error_function): Translate function names
8326         to locale character set.
8327         * langhooks.h (decl_printable_name): Document that return value is
8328         in internal character set.
8329         * stmt.c: Include pretty-print.h
8330         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
8331         diagnostics.
8332         (resolve_operand_name_1): Translate named operand name to locale
8333         character set.
8334         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
8335         diagnostics.
8336         * toplev.c (announce_function): Translate function names to locale
8337         character set.
8338         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
8339         (default_tree_printer): Use pp_identifier or translate identifiers
8340         to locale character set.  Mark "<anonymous>" for translation.
8341         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
8342         for identifiers in diagnostics.
8343         * tree.c (handle_dll_attribute): Use %qE for identifiers in
8344         diagnostics.
8345         * varasm.c (output_constructor): Use %qE for identifiers in
8346         diagnostics.
8347
8348 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
8349
8350         * configure.ac: use ` ` instead of $()
8351         * configure: Regenerate.
8352
8353 2009-05-05  Ben Elliston  <bje@au.ibm.com>
8354
8355         * config/pa/linux-atomic.c: Eliminate conditional include of
8356         errno.h on non-LP64 systems to simplify build requirements.
8357
8358 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
8359
8360         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
8361         diagnostics.
8362         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
8363         and pass value to identifier_to_locale.
8364         (warn_variable_length_array): Make name a tree.
8365         (grokdeclarator): Separate diagnostic texts for named and unnamed
8366         declarators.  Use %qE for named declarators.
8367         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
8368         diagnostics.
8369         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
8370         identifiers in diagnostics.
8371         * c-typeck.c (push_member_name, start_init): Pass identifiers to
8372         identifier_to_locale.  Mark "anonymous" strings for translation.
8373
8374 2009-05-04  Michael Eager <eager@eagercon.com>
8375
8376         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
8377         address for DImode/DFmode only if double-precision FP regs.
8378
8379 2009-05-04  Michael Eager <eager@eagercon.com>
8380
8381         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
8382         TARGET_SINGLE_FLOAT check.
8383
8384 2009-05-04  Michael Eager <eager@eagercon.com>
8385
8386         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
8387
8388 2009-05-04  Michael Eager <eager@eagercon.com>
8389
8390         * gcc/config.gcc: (powerpc-xilinx-eabi*): Add tm t-xilinx
8391         * config/rs6000/t-xilinx: New
8392
8393 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
8394
8395         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
8396         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
8397         * gcc/explow.c (memory_address): Use target hook.
8398         * gcc/targhooks.c (default_legitimize_address): New.
8399         * gcc/targhooks.h (default_legitimize_address): New.
8400         * gcc/target.h (legitimize_address): New.
8401         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
8402         (TARGET_INITIALIZER): Include it.
8403         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
8404
8405         * config/bfin/bfin-protos.h (legitimize_address): Remove.
8406         * config/bfin/bfin.c (legitimize_address): Remove.
8407         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
8408         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
8409         Remove.
8410         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
8411         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
8412
8413         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
8414         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
8415         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
8416         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
8417         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
8418         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
8419         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
8420         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
8421         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
8422         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
8423         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
8424         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
8425         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
8426         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
8427         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
8428         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
8429         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
8430         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
8431         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
8432         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
8433         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
8434         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
8435         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
8436
8437         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
8438         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
8439         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
8440         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
8441         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
8442         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
8443         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
8444         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
8445         (thumb_legitimize_address): Delete.
8446         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
8447         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
8448         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
8449         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
8450         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
8451         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
8452         Delete.
8453         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
8454         Delete.
8455
8456         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
8457         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
8458         * config/m32r/m32r.c (m32r_legitimize_address): New.
8459         * config/m68k/m68k.c (m68k_legitimize_address): New.
8460         * config/score/score.c (score_legitimize_address): Standardize.
8461         * config/score/score3.c (score3_legitimize_address): Standardize.
8462         * config/score/score3.h (score3_legitimize_address): Adjust.
8463         * config/score/score7.c (score7_legitimize_address): Standardize.
8464         * config/score/score7.h (score7_legitimize_address): Adjust.
8465         * config/sh/sh.c (sh_legitimize_address): New.
8466         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
8467
8468         * gcc/config/s390/s390.c (legitimize_address): Rename to...
8469         (s390_legitimize_address): ... this.
8470         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
8471         (sparc_legitimize_address): ... this.
8472         * gcc/config/i386/i386.c (legitimize_address): Rename to...
8473         (ix86_legitimize_address): ... this.
8474         * gcc/config/avr/avr.c (legitimize_address): Rename to...
8475         (avr_legitimize_address): ... this.
8476         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
8477         (mn10300_legitimize_address): ... this.
8478         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
8479         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
8480         (alpha_expand_mov): Adjust call.
8481
8482         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
8483         * config/spu/spu.c (spu_legitimize_address): Likewise.
8484         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
8485         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
8486
8487 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
8488
8489         * intl.c (locale_encoding, locale_utf8): New.
8490         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
8491         * intl.h (locale_encoding, locale_utf8): Declare.
8492         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
8493         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
8494         New.
8495         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
8496         argument.
8497         (pp_tree_identifier): Define to call pp_base_tree_identifier.
8498         (pp_base_tree_identifier): Declare as function.
8499         (identifier_to_locale): Declare.
8500         * Makefile.in (pretty-print.o): Update dependencies.
8501         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
8502
8503 2009-05-04  Richard Guenther  <rguenther@suse.de>
8504
8505         PR middle-end/40015
8506         * builtins.c (fold_builtin_memory_op): Do not decay to element
8507         type if the size matches the whole array.
8508
8509 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
8510
8511         * expmed.c (synth_mult): When trying out a shift, pass the result
8512         of a signed shift.
8513
8514 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
8515
8516         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
8517         (shiftsub1_cost): New.
8518         (init_expmed): Compute shiftsub1_cost.
8519         (synth_mult): Optimize multiplications by constants of the form
8520         -(2^^m-1) for some constant positive integer m.
8521
8522 2009-05-03  Richard Guenther  <rguenther@suse.de>
8523
8524         PR c/39983
8525         * c-typeck.c (array_to_pointer_conversion): Do not built
8526         ADDR_EXPRs of arrays of pointer-to-element type.
8527         * c-gimplify.c (c_gimplify_expr): Revert change fixing
8528         up wrong ADDR_EXPRs after-the-fact.
8529         * c-common.c (strict_aliasing_warning): Strip pointer
8530         conversions for obtaining the original type.
8531         * builtins.c (fold_builtin_memset): Handle array types.
8532         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
8533         and array types
8534
8535 2009-05-03  Richard Guenther  <rguenther@suse.de>
8536
8537         PR middle-end/23329
8538         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
8539         Do not lose casts from array types with unknown extent to array
8540         types with known extent.
8541         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
8542         alias set compatibility.
8543
8544 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
8545
8546         * flags.h (extra_warnings): Delete.
8547         * toplev.c (process_options): Handle Wuninitialized here.
8548         * opts.c (extra_warnings): Delete.
8549         (set_Wextra): Delete.
8550         (common_handle_option): -Wextra can be handled automatically.
8551         * c-opts.c (c_common_handle_option): Delete obsolete code.
8552         (c_common_post_options): Simplify comment.
8553         * common.opt (W): Add Var.
8554         (Wextra): Add Var.
8555         (Wuninitialized): Initialize to -1.
8556
8557 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
8558             Richard Guenther  <rguenther@suse.de>
8559
8560         * expr.c (get_def_for_expr): New function.
8561         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
8562         SSA rather than trees.
8563         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
8564         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
8565         
8566 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
8567
8568         * c-common.c (reswords): Add _Imaginary.
8569         * c-common.c (enum rid): Add RID_IMAGINARY.
8570
8571 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
8572
8573         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
8574         Patch by Richard Guenther.
8575
8576 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
8577
8578         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
8579         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
8580         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
8581         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
8582         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
8583         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
8584         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
8585         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
8586         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
8587         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
8588         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
8589         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
8590         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
8591         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
8592         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
8593         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
8594         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
8595         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
8596
8597 2009-05-02  Richard Guenther  <rguenther@suse.de>
8598
8599         PR tree-optimization/39940
8600         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
8601         doing so.
8602
8603 2009-05-02  Richard Guenther  <rguenther@suse.de>
8604
8605         PR middle-end/40001
8606         * tree-ssa.c (execute_update_addresses_taken): Properly check
8607         if we can mark a variable DECL_GIMPLE_REG_P.
8608         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
8609         back to the end of the function.
8610         (is_gimple_reg_type): Remove complex type special casing.
8611         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
8612         if not optimizing.
8613
8614 2009-05-02  Ben Elliston  <bje@au.ibm.com>
8615
8616         * doc/collect2.texi (Collect2): Document search path behaviour
8617         when configured with --with-ld.
8618
8619 2009-05-02  Jan Hubicka  <jh@suse.cz>
8620
8621         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
8622         parameter; update callers.
8623         (coalesce_cost_edge): EH edges are costier because they needs
8624         splitting even if not critical and even more costier when there are
8625         multiple EH predecestors.
8626
8627 2009-05-02  Jan Hubicka  <jh@suse.cz>
8628
8629         * except.c (remove_eh_handler_and_replace): Handle updating after
8630         removing TRY blocks.
8631
8632 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
8633
8634         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
8635
8636 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
8637
8638         * varasm.c: Do not include c-pragma.h.
8639         * attribs.c: Do not incude c-common.h.
8640
8641 2009-05-01  Michael Matz  <matz@suse.de>
8642
8643         * calls.c (initialize_argument_information): Handle SSA names like
8644         decls with a non MEM_P DECL_RTL.
8645
8646 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
8647
8648         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
8649         * ipa-utils.c: Likewise.
8650         * ipa-type-escape.c: Likewise.
8651         * cgraphunit.c Do not include c-common.h.
8652         * ipa-pure-const.c: Likewise.
8653         * tree-if-conv.c: Likewise.
8654         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
8655         * ipa-struct-reorg.c: Likewise.
8656         * tree-nomudflap.c: Likewise.
8657         * tree-ssa-structalias.c: Likewise.
8658
8659 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
8660
8661         * store-motion.c: Many cleanups to make this pass a first-class
8662         citizen instead of an appendix to gcse load motion.  Add TODO list
8663         to make this pass faster/cleaner/better.
8664
8665         (struct ls_expr): Post gcse.c-split cleanups.
8666         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
8667         "stores" field to "avail_stores".
8668         (pre_ldst_mems): Rename to store_motion_mems.
8669         (pre_ldst_table): Rename to store_motion_mems_table.
8670         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
8671         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
8672         (ldst_entry): Rename to st_expr_entry, update users.
8673         (free_ldst_entry): Rename to free_st_expr_entry, update users.
8674         (free_ldst_mems): Rename to free_store_motion_mems, update users.
8675         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
8676         update caller.
8677         (first_ls_expr): Rename to first_st_expr, update users.
8678         (next_ls_expr): Rename to next_st_expr, update users.
8679         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
8680         fields properly for store motion instead of names inherited from load
8681         motion in gcse.c.
8682         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
8683         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
8684         are done with it.
8685
8686         (ae_kill): Rename to st_kill, update users.
8687         (ae_gen): Rename to st_avloc, update users.
8688         (transp): Rename to st_transp, update users.
8689         (pre_insert_map): Rename to st_insert_map, update users.
8690         (pre_delete_map): Rename to st_delete_map, update users.
8691         (insert_store, build_store_vectors, free_store_memory,
8692         one_store_motion_pass): Update for abovementioned changes.
8693
8694         (gcse_subst_count, gcse_create_count): Remove.
8695         (one_store_motion_pass): New statistics counters "n_stores_deleted"
8696         and "n_stores_created", local variables.
8697
8698         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
8699         use for_each_rtx.
8700
8701         (regvec, compute_store_table_current_insn): Remove.
8702         (reg_set_info, reg_clear_last_set): Remove.
8703         (compute_store_table): Use DF caches instead of local dataflow
8704         solvers.
8705
8706 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
8707
8708         * c-objc-common.c (c_tree_printer): Print identifiers with
8709         pp_identifier, not pp_string.  Mark "({anonymous})" for
8710         translation.
8711         * c-pretty-print.c (pp_c_ws_string): New.
8712         (pp_c_cv_qualifier, pp_c_type_specifier,
8713         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
8714         pp_c_storage_class_specifier, pp_c_function_specifier,
8715         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
8716         pp_c_primary_expression, pp_c_postfix_expression,
8717         pp_c_unary_expression, pp_c_shift_expression,
8718         pp_c_relational_expression, pp_c_equality_expression,
8719         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
8720         use pp_string and pp_c_ws_string in place of pp_identifier and
8721         pp_c_identifier for non-identifiers.  Mark English strings for
8722         translation.
8723         * c-pretty-print.h (pp_c_ws_string): Declare.
8724
8725 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
8726             Roland McGrath <roland@redhat.com>
8727
8728         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
8729         (ENABLE_LD_BUILDID): New configuration option.
8730         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
8731         (LINK_BUILDID_SPEC): New macro.
8732         (init_spec): If defined, prepend it between LINK_EH_SPEC and
8733         link_spec.
8734         * doc/install.texi: Document --enable-linker-build-id option.
8735         * configure: Rebuild.
8736         * config.in: Rebuild.
8737
8738 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
8739
8740         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
8741         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
8742         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
8743         MIPS_GP_SAVE_AREA_SIZE.
8744         * config/mips/mips.c (struct mips_frame_info): Update comment
8745         before arg_pointer_offset and hard_frame_pointer_offset.
8746         (mips_compute_frame_info): Update diagram before function: to
8747         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
8748         indicate the position of frame_pointer_rtx with -fstack-protector and
8749         to show args_size.  Don't allocate cprestore area for leaf functions
8750         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
8751         cprestore_size.
8752         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
8753
8754 2009-04-30  Michael Matz  <matz@suse.de>
8755
8756         PR tree-optimization/39955
8757         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
8758
8759 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
8760
8761         * ira.c (setup_cover_and_important_classes):  Use safe macro
8762         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
8763         directly.
8764         * genpreds.c (write_tm_preds_h):  Output suitable definition of
8765         REG_CLASS_FOR_CONSTRAINT.
8766
8767 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
8768
8769         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
8770         instead of an int.
8771         * bitmap.c (bitmap_descriptor): Likewise.
8772         * ggc-common.c (loc_descriptor): Likewise.
8773         * varray.c (varray_descriptor): Likewise.
8774         * vec.c (vec_descriptor): Likewise.
8775
8776 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
8777
8778         * Makefile.in (dce.o): Add $(EXCEPT_H).
8779         * dce.c: Include except.h and delete redundant vector definitions.
8780         (deletable_insn_p): Return false for non-call insns that can throw
8781         if DF is running.
8782
8783 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
8784
8785         * gcse.c (ae_gen): Remove.
8786         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
8787         and make non-static function to make it available in store-motion.c.
8788         Update call sites with search-and-replace.
8789         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
8790         extract_mentioned_regs, extract_mentioned_regs_helper,
8791         find_moveable_store, compute_store_table, load_kills_store, find_loads,
8792         store_killed_in_insn, store_killed_after, store_killed_before,
8793         build_store_vectors, insert_insn_start_basic_block, insert-store,
8794         remove_reachable_equiv_notes, replace_store_insn, delete_store,
8795         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
8796         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
8797         * store-motion.c: ...new file.  Also copy data structures from gcse.c
8798         and clean up to remove parts not used by store motion.
8799         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
8800         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
8801
8802 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
8803
8804         PR target/38571
8805         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
8806         when optimizing for size.
8807
8808 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
8809
8810         * gcse.c (gcse_constant_p): Fix typo in last change.
8811
8812 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
8813
8814         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
8815
8816 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
8817
8818         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
8819
8820 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
8821
8822         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
8823         CONST_HIGH_PART result.
8824
8825 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
8826
8827         * config/avr/avr.c (initial_elimination_offset): Rename to
8828         avr_initial_elimination_offset.
8829         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
8830         change return type to bool.
8831         (avr_can_eliminate): New function.
8832         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
8833         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
8834         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
8835         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
8836         avr_initial_elimination_offset.
8837         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
8838         (avr_initial_elimination_offset): Define.
8839
8840 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
8841             Steven Bosscher  <steven@gcc.gnu.org>
8842
8843         PR rtl-optimization/39938
8844         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
8845         * cfgrtl.c: Include insn-attr.h.
8846         (rest_of_pass_free_cfg): New function.
8847         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
8848         * resource.c (init_resource_info): Remove call to df_analyze.
8849
8850 2009-04-29  Richard Guenther  <rguenther@suse.de>
8851
8852         PR target/39943
8853         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
8854         allow conversion to signed integers.
8855
8856 2009-04-29  Richard Guenther  <rguenther@suse.de>
8857
8858         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
8859         shifts of floating point vectors if the shift amount is
8860         a constant multiple of the element size.
8861
8862 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
8863             Michael Matz  <matz@suse.de>
8864
8865         PR middle-end/39927
8866         PR bootstrap/39929
8867         * tree-outof-ssa.c (emit_partition_copy): New function.
8868         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
8869         insert_part_to_rtx_on_edge): Perform the partition base var
8870         copy using emit_partition_copy.
8871         (insert_value_copy_on_edge): Convert constants to the right mode.
8872         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
8873         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
8874
8875 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
8876
8877         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
8878         scan backwards to try to find a constant to initialize it.
8879
8880         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
8881         insn before the loop_end instruction, don't look past labels.
8882
8883 2009-04-29  Richard Guenther  <rguenther@suse.de>
8884
8885         PR middle-end/39937
8886         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
8887         loose type conversions.
8888         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
8889         stmts only if there are no uses of its definition.
8890
8891 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
8892
8893         * config/bfin/bfin.h (splitting_loops): Declare.
8894         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
8895         Reorder bit definitions to be ascending.
8896         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
8897         * config/bfin/bfin.c (splitting_loops): New variable.
8898         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
8899         (struct loop_info): Remove members INIT and LOOP_INIT.
8900         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
8901         the LSETUP sequence.  Allow LC to be loaded from any register, but
8902         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
8903         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
8904         set to 1.
8905         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
8906         of reload_completed.
8907
8908         From Jie Zhang:
8909         * config/bfin/bfin.md (movsi_insn): Refine constraints.
8910
8911 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
8912
8913         * Makefile.in (PLUGIN_VERSION_H): New.
8914         (OBJS-common): Remove plugin-version.o.
8915         (plugin.o): Depend on (PLUGIN_VERSION_H).
8916         (plugin-version.o): Remove.
8917         * configure: Regenerate
8918         * configure.ac: Create plugin-version.h.
8919         * gcc-plugin.h (plugin_gcc_version): Remove.
8920         (plugin_default_version_check): Change signature.
8921         * plugin-version.c: Remove.
8922         * plugin.c: Include plugin-version.h.
8923         (str_plugin_gcc_version_name): Remove.
8924         (try_init_one_plugin): Pass gcc version to plugin_init.
8925         (plugin_default_version_check): Both gcc and plugin versions are now
8926         arguments.
8927
8928 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
8929         
8930         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
8931         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
8932         Remove special case testing for last insn of inner loops. Don't fail
8933         if the loop ends with a jump, emit an extra nop instead.
8934
8935         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
8936         DREGS rather than comparing directly.  Remove code that tries to
8937         account for latencies.
8938
8939 2009-04-29  Richard Guenther  <rguenther@suse.de>
8940
8941         PR tree-optimization/39941
8942         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
8943         eliminating an indirect call.
8944
8945 2009-04-29  Richard Guenther  <rguenther@suse.de>
8946
8947         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
8948         parameter.  Allow invariants as base if !require_lvalue.
8949         (verify_gimple_assign_single): Adjust.
8950
8951 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
8952
8953         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
8954         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
8955         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
8956         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
8957         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
8958         a VEC_SELECT.
8959         * config/bfin/bfin.c (bfin_expand_builtin,
8960         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
8961
8962 2009-04-28  Richard Guenther  <rguenther@suse.de>
8963
8964         * tree-vect-loop.c (get_initial_def_for_induction): Use
8965         correct types for pointer increment.
8966
8967 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8968
8969         * toplev.c (print_version): Update GMP version string calculation.
8970
8971 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
8972
8973         PR rtl-optimization/39938
8974         * resource.c (init_resource_info): Add call to df_analyze.
8975
8976 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
8977
8978         * config/alpha/alpha.md (usegp): Cast the result of
8979         alpha_find_lo_sum_using_gp to enum attr_usegp.
8980         * config/alpha/alpha.c (override_options): Remove end-of-structure
8981         marker element from cpu_table.  Use array size of cpu_table to handle
8982         -mcpu and -mtune options.
8983         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
8984
8985 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
8986
8987         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
8988         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
8989         tune_32 and tune_64.
8990         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
8991         support on PowerPC.
8992         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
8993         * config/rs6000/option-defaults.h: ... here.  New file.
8994         (OPT_64, OPT_32): Define.
8995         (MASK_64BIT): Define to 0 if not already defined.
8996         (OPT_ARCH64, OPT_ARCH32): Define.
8997         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
8998         and tune_64.
8999
9000 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9001
9002         * config/arm/arm.c (arm_override_options): Emit error on using
9003         fpa with AAPCS.
9004
9005 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
9006
9007         PR rtl-optimization/39914
9008         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
9009         registers for allocnos created from user-defined variables only
9010         when not optimizing.
9011
9012 2009-04-28  Richard Guenther  <rguenther@suse.de>
9013
9014         PR middle-end/39937
9015         * fold-const.c (fold_binary): Use distribute_real_division only
9016         on float types.
9017
9018 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
9019
9020         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
9021         add hpux-stdint.h to tm_file.
9022         (hppa[12]*-*-hpux11*): Ditto.
9023         (ia64*-*-hpux*): Ditto.
9024         * config/hpux-stdint.h: New.
9025         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
9026         __STDC_EXT__ for all compiles.
9027         * config/pa/pa-hpux.h: Ditto.
9028         * config/pa/pa-hpux10.h: Ditto.
9029         * config/pa/pa-hpux11.h: Ditto.
9030
9031 2009-04-28  Catherine Moore  <clm@codesourcery.com>
9032
9033         * debug.h (set_name): Add comment.
9034
9035 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
9036
9037         PR target/39929
9038         * config/darwin.c (machopic_gen_offset): Check
9039         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
9040         * config/arm/arm.c (require_pic_register): Likewise.
9041
9042 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
9043
9044         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
9045         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
9046         m32c_promote_prototypes): Delete.
9047
9048 2009-04-28  Michael Matz  <matz@suse.de>
9049
9050         PR middle-end/39922
9051         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
9052         constants.
9053
9054 2009-04-28  Richard Guenther  <rguenther@suse.de>
9055
9056         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
9057
9058 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9059
9060         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
9061         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
9062         * config/arm/arm-tune.md: Regenerate.
9063
9064 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
9065
9066         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
9067         block if there are complex incoming edges.
9068         (sel_merge_blocks): Remove useless assert.
9069         (sel_redirect_edge_and_branch): Check that edge was redirected.
9070         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
9071         (sel_find_rgns): Delete declaration.
9072         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
9073         the region when it is not a preheader.
9074
9075 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
9076
9077         PR c/39323
9078         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
9079
9080 2009-04-28  Richard Guenther  <rguenther@suse.de>
9081
9082         * tree.h (SSA_NAME_VALUE): Remove.
9083         (struct tree_ssa_name): Remove value_handle member.
9084         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
9085         array for jump threading.
9086         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
9087         SSA_NAME_VALUEs.
9088         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
9089         * tree-flow.h (threadedge_initialize_values): Declare.
9090         (threadedge_finalize_values): Likewise.
9091         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
9092         (SSA_NAME_VALUE): Define.
9093         (threadedge_initialize_values): New function.
9094         (threadedge_finalize_values): Likewise.
9095         * tree-ssa-dom.c (ssa_name_values): New global variable.
9096         (SSA_NAME_VALUE): Define.
9097         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
9098
9099 2009-04-28  Ira Rosen  <irar@il.ibm.com>
9100
9101         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
9102         Use REPORT_VECTORIZED_LOCATIONS instead 
9103         REPORT_VECTORIZED_LOOPS.
9104         * tree-vectorizer.c (vect_verbosity_level): Make static.
9105         (vect_loop_location): Rename to vect_location.
9106         (vect_set_verbosity_level): Update comment.
9107         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
9108         and vect_location.
9109         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
9110         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
9111         instead REPORT_UNVECTORIZED_LOOPS.
9112         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
9113         and vect_loop_def to vect_external_def and vect_internal_def.
9114         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
9115         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and 
9116         REPORT_UNVECTORIZED_LOCATIONS.
9117         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
9118         and vect_used_in_loop and to vect_unused_in_scope and 
9119         vect_used_in_scope.
9120         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
9121         (vect_verbosity_level): Remove declaration.
9122         (vect_analyze_operations): Likewise.
9123         (vect_analyze_stmt): Declare.
9124         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
9125         REPORT_UNVECTORIZED_LOCATIONS.
9126         (vect_get_loop_niters): Fix indentation.
9127         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
9128         (vect_analyze_loop_operations): New function.
9129         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
9130         vect_analyze_operations.
9131         (vect_is_simple_reduction): Use new names.
9132         (vectorizable_live_operation, vect_transform_loop): Likewise.
9133         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
9134         to specify whether the data references can be a part of interleaving
9135         chain.
9136         (vect_analyze_data_ref_dependence): Use new names.
9137         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
9138         (vect_create_addr_base_for_vector_ref): Remove redundant code.
9139         * tree-vect-patterns.c (widened_name_p): Use new names.
9140         (vect_recog_dot_prod_pattern): Likewise.
9141         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
9142         (process_use, vect_mark_stmts_to_be_vectorized, 
9143         vect_model_simple_cost, vect_model_store_cost,
9144         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
9145         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
9146         vectorizable_operation, vectorizable_type_demotion,
9147         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
9148         vectorizable_condition): Likewise.
9149         (vect_analyze_operations): Split into vect_analyze_loop_operations
9150         and ...
9151         (vect_analyze_stmt): ... new function.
9152         (new_stmt_vec_info): Use new names.
9153         (vect_is_simple_use): Use new names and fix comment.
9154         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
9155         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
9156
9157 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
9158
9159         PR target/39911
9160         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
9161         and integer modes for x87 operands.  Do not ICE for unsupported size,
9162         generate error instead.  Generate error for unsupported operand types.
9163         ['z']: Do not handle HImode memory operands specially.  Warning
9164         for floating-point operands.  Fallthru to 'Z' for unsupported operand
9165         types.  Do not ICE for unsupported size, generate error instead.
9166         (output_387_binary_op): Use %Z to output operands.
9167         (output_fp_compare): Ditto.
9168         (output_387_reg_move): Ditto.
9169
9170 2009-04-28  Ben Elliston  <bje@au.ibm.com>
9171
9172         PR c++/35652
9173         Revert:
9174
9175         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9176
9177         * builtins.c (c_strlen): Do not warn here.
9178         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
9179         * c-common.c (pointer_int_sum): Take an explicit location.
9180         Warn about offsets out of bounds.
9181         * c-common.h (pointer_int_sum): Adjust declaration.
9182
9183 2009-04-27  Ian Lance Taylor  <iant@google.com>
9184
9185         * collect2.c (is_ctor_dtor): Change type of ret field in struct
9186         names to symkind.
9187         * dce.c (run_fast_df_dce): Change type of old_flags to int.
9188         * df-core.c (df_set_flags): Change return type to int.  Change
9189         type of old_flags to int.
9190         (df_clear_flags): Likewise.
9191         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
9192         (df_get_conditional_uses): Likewise.
9193         * df.h (df_set_flags, df_clear_flags): Update declarations.
9194         * dwarf2out.c (struct indirect_string_node): Change type of form
9195         field to enum dwarf_form.
9196         (AT_string_form): Change return type to enum dwarf_form.
9197         * fixed-value.c (fixed_compare): Add cast to enum type.
9198         * fwprop.c (update_df): Change 0 to VOIDmode.
9199         * gensupport.c: Change 0 to UNKNOWN.
9200         * gimple.h (gimple_cond_code): Add cast to enum type.
9201         * haifa-sched.c (reemit_notes): Add cast to enum type.
9202         * hooks.c (hook_int_void_no_regs): Remove function.
9203         * hooks.h (hook_int_void_no_regs): Remove declaration.
9204         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
9205         * predict.c (combine_predictions_for_insn): Add casts to enum type.
9206         * real.c (real_arithmetic): Add cast to enum type.
9207         (real_compare): Likewise.
9208         * target.h (struct gcc_target): Change return type of
9209         branch_target_register_class to enum reg_class.
9210         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
9211         default_branch_target_register_class.
9212         * targhooks.c (default_branch_target_register_class): New function.
9213         * targhooks.h (default_branch_target_register_class): Declare.
9214         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
9215         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
9216         cast to int.
9217         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
9218         ERROR_MARK.
9219         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
9220         vect_uninitialized_def.  Change 0 to ERROR_MARK.
9221         * tree-vect-stmts.c (supportable_widening_operation): Don't
9222         initialize icode1 and icode2.
9223         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
9224         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
9225         and to STD_C89.
9226         (cmn_err_flag_specs): Change 0 to STD_C89.
9227         (cmn_err_char_table): Likewise.
9228         * config/arm/arm.c (get_arm_condition_code): Change type of code
9229         to enum arm_cond_code.
9230         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
9231         (IWMMXT_BUILTIN2): Likewise.
9232         (neon_builtin_type_bits): Don't define typedef.
9233         (neon_builtin_datum): Change type of bits field to int.
9234         (arm_expand_neon_args): Add cast to enum type.
9235         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
9236         TLS_MODEL_NONE.
9237         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
9238         casts to enum type.
9239         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
9240         MIPS_FP_COND_f.
9241         * config/mips/mips.md (jal_macro): Return enum constant.
9242         (single_insn): Likewise.
9243         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
9244         CODE_FOR_nothing.
9245         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
9246         casts to enum type.
9247         * config/s390/s390.c (s390_tune_flags): Change type to int.
9248         (s390_arch_flags): Likewise.
9249         (s390_handle_arch_option): Change flags field of struct pta to int.
9250         * config/s390/s390.h (s390_tune_flags): Update declaration.
9251         (s390_arch_flags): Likewise.
9252         * config/sh/sh.c (prepare_move_operands): Compare
9253         tls_symbolic_operand result with enum constant.
9254         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
9255         (sh_expand_prologue): Add cast to enum type.
9256         (sh_expand_epilogue): Likewise.
9257         (tls_symbolic_operand): Change return type to enum tls_model.
9258         (fpscr_set_from_mem): Add cast to enum type.
9259         (legitimize_pic_address): Compare tls_symbolic_operand result with
9260         enum constant.
9261         (sh_target_reg_class): Change return type to enum reg_class.
9262         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
9263         PROCESSOR_xxx.
9264         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
9265         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
9266         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
9267         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
9268         (delayed_branch, tls_call_delay): Likewise.
9269         (eligible_for_sibcall_delay): Likewise.
9270         (eligible_for_return_delay): Likewise. 
9271         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
9272         (spu_expand_builtin_1): Likewise.
9273
9274         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
9275         for all types of conversions.
9276         (output_init_element): Issue -Wc++-compat warning if needed when
9277         initializing a bitfield with enum type.
9278         * c-parser.c (c_parser_expression): Set original_type to
9279         original_type of right hand operand of comman operator.
9280
9281 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9282
9283         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
9284         grammar nits.
9285         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
9286         * doc/cpp.texi (Standard Predefined Macros)
9287         (Implementation-defined behavior): Likewise.
9288         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
9289         * doc/gimple.texi (GIMPLE Exception Handling)
9290         (@code{GIMPLE_ASSIGN}): Likewise.
9291         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
9292         * doc/invoke.texi (Warning Options, Optimize Options)
9293         (AVR Options, Darwin Options): Likewise.
9294         (Optimize Options): Reformulate -fwhole-program description.
9295         * doc/loop.texi (Lambda): Likewise.
9296         * doc/md.texi (Output Template, Define Constraints)
9297         (Standard Names, Insn Splitting): Likewise.
9298         * doc/options.texi (Option properties): Likewise.
9299         * doc/passes.texi (Tree-SSA passes): Likewise.
9300         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
9301         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
9302         (File Names and DBX): Likewise.
9303         * doc/trouble.texi (Incompatibilities): Likewise.
9304
9305 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9306
9307         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
9308         instruction is correct.
9309
9310 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9311
9312         Allow non-constant arguments to conversion intrinsics.
9313         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
9314         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
9315         * spu.c (print_operand): Handle 'v' and 'w'.
9316         (exp2_immediate_p, spu_gen_exp2): Define.
9317         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
9318         spu_convtf_1): Update parameter descriptions.
9319         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
9320         * constraints.md ('v', 'w'): New.
9321         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
9322         Remove.
9323         (i2f, I2F): New define_mode_attr.
9324         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
9325         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
9326         fixuns_truncv4sfv4si2):  Update to use mode attribute.
9327         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
9328         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
9329         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
9330         patterns for combine.
9331
9332 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
9333
9334         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
9335         (cprop, hoist, pre, store_motion): New debug counters.
9336         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
9337         is not an RTL pass anymore.
9338         (pass_profiling): Remove extern decl for pass removed in 2005.
9339         (pass_gcse, pass_jump_bypass): Remove.
9340         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
9341         to 0 for clean state.
9342         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
9343         * cse.c (gate_handle_cse_after_global_opts,
9344         rest_of_handle_cse_after_global_opts): New functions.
9345         (pass_cse_after_global_opts): New pass, does local CSE.
9346         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
9347         (TV_CPROP): New timevar.
9348         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
9349         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
9350         (gcse_main, recompute_all_luids): Remove.
9351         (compute_hash_table_work): Call max_reg_num instead of reading
9352         max_gcse_regno.
9353         (cprop_jump): Don't set run_jump_opt_after_gcse.
9354         (constprop_register): Always allow to alter jumps.
9355         (cprop_insn): Likewise.
9356         (do_local_cprop): Likewise.
9357         (local_cprop_pass): Likewise.  Return non-zero if something changed.
9358         (cprop): Remove function, fold interesting bits into one_cprop_pass.
9359         (find_implicit_sets): Add note about missed optimization opportunity.
9360         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
9361         pass_rtl_cprop execute function.
9362         Don't bother tracking the pass number, each pass gets its own dumpfile
9363         now anyway.
9364         Always allow to alter jumpsand bypass jumps.
9365         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
9366         will just find no suitable set.
9367         (pre_edge_insert): Fix dumping, this function is for PRE only.
9368         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
9369         pass_rtl_pre execute function.
9370         (hoist_code): Return non-zero if something changed.  Keep track of
9371         substitutions and insertions for statistics gathering similar to PRE.
9372         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
9373         called from the pass_rtl_hoist execute function.  Show pass statistics.
9374         (compute_store_table): Use max_reg_num directly instead of using the
9375         formerly global max_gcse_regno.
9376         (build_store_vectors): Likewise.
9377         (replace_store_insn): Fix dumping.
9378         (store_motion): Rename to ...
9379         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
9380         pass, called from the pass_rtl_store_motion execute function.  Keep
9381         track of substitutions and insertions for statistics gathering similar
9382         to PRE.
9383         (bypass_jumps): Remove, fold interesting bits into ...
9384         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
9385         from the pass_rtl_cprop execute function.
9386         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
9387         pass_jump_bypass): Remove.
9388         (gate_handle_gcse, rest_of_handle_gcse): Remove.
9389         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
9390         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
9391         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
9392         (gate_rtl_store_motion, execute_rtl_store_motion,
9393         pass_rtl_store_motion): New.
9394         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
9395         make it clear that -fcse-skip-blocks is a no-op for backward compat.
9396         * passes.c (init_optimization_passes): Remove pass_gcse and
9397         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
9398         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
9399         instead of pass_jump_bypass.
9400
9401 2009-04-27  Richard Guenther  <rguenther@suse.de>
9402
9403         PR middle-end/39928
9404         * gimplify.c (gimplify_expr): If we are required to create
9405         a temporary make sure it ends up as register.
9406
9407 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
9408
9409         PR target/39903
9410         * config/i386/i386.c (construct_container): Don't call
9411         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
9412         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
9413
9414 2009-04-27  Michael Matz  <matz@suse.de>
9415
9416         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
9417         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
9418         * tree-ssa-live.h: (find_replaceable_exprs): Return a bitmap.
9419         (dump_replaceable_exprs): Take a bitmap.
9420         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
9421         array.
9422         (expand_gimple_basic_block): Likewise.
9423         * tree-ssa-ter.c (struct temp_expr_table_d): Make
9424         replaceable_expressions member a bitmap.
9425         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
9426         (mark_replaceable): Likewise.
9427         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
9428         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
9429
9430 2009-04-27  Richard Guenther  <rguenther@suse.de>
9431
9432         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
9433         (verify_stmts): Dispatch to gimple/type verification code.
9434         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
9435         issue with call argument types.
9436
9437 2009-04-27  Michael Matz  <matz@suse.de>
9438
9439         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
9440         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
9441         to above.
9442
9443 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
9444             Eric Botcazou  <ebotcazou@adacore.com>
9445
9446         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
9447         a label's basic block.
9448         (mark_target_live_regs): Tidy and rework obsolete comments.
9449         Change back DF problem to LIVE.  If a label starts a basic block,
9450         assume that all registers that used to be live then still are.
9451         (init_resource_info): If a label starts a basic block, set its
9452         BLOCK_FOR_INSN accordingly.
9453         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
9454
9455 2009-04-27  Richard Guenther  <rguenther@suse.de>
9456
9457         * tree-flow-inline.h (function_ann): Remove.
9458         (get_function_ann): Likewise.
9459         * tree-dfa.c (create_function_ann): Remove.
9460         * tree-flow.h (struct static_var_ann_d): Remove.
9461         (struct function_ann_d): Likewise.
9462         (union tree_ann_d): Remove fdecl member.
9463         (function_ann_t): Remove.
9464         (function_ann, get_function_ann, create_function_ann): Remove
9465         declarations.
9466
9467 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
9468
9469         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
9470
9471 2009-04-27  Jan Hubicka  <jh@suse.cz>
9472
9473         * ipa-pure-const.c (struct funct_state_d): New fields
9474         state_previously_known, looping_previously_known; remove
9475         state_set_in_source.
9476         (analyze_function): Use new fields.
9477         (propagate): Avoid assumption that state_set_in_source imply
9478         nonlooping.
9479
9480         * tree-ssa-loop-niter.c (finite_loop_p): New function.
9481         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
9482         * cfgloop.h (finite_loop_p): Declare.
9483
9484 2009-04-26  Michael Matz  <matz@suse.de>
9485
9486         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
9487
9488 2009-04-26  Michael Matz  <matz@suse.de>
9489
9490         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
9491         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
9492         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
9493         pass_mark_used_blocks): Remove.
9494         * tree-optimize.c (pass_free_datastructures,
9495         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
9496         * passes.c (init_optimization_passes): Don't call
9497         pass_mark_used_blocks, remove dead code.
9498
9499 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
9500
9501         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
9502         * tree-ssa-live.h (register_ssa_partition): Likewise.
9503
9504 2009-04-26  Michael Matz  <matz@suse.de>
9505
9506         Expand from SSA.
9507         * builtins.c (fold_builtin_next_arg): Handle SSA names.
9508         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
9509         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
9510         SSA names. 
9511         (compare_pairs): Swap cost comparison.
9512         (coalesce_ssa_name): Don't use change_partition_var.
9513         * tree-nrv.c (struct nrv_data): Add modified member.
9514         (finalize_nrv_r): Set it.
9515         (tree_nrv): Use it to update statements.
9516         (pass_nrv): Require PROP_ssa.
9517         * tree-mudflap.c (mf_decl_cache_locals,
9518         mf_build_check_statement_for): Use make_rename_temp.
9519         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
9520         * alias.c (find_base_decl): Handle SSA names.
9521         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
9522         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
9523         * rtl.h (set_reg_attrs_for_parm): Declare.
9524         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
9525         to "optimized", remove unused locals at finish.
9526         (execute_free_datastructures): Make global, call
9527         delete_tree_cfg_annotations.
9528         (execute_free_cfg_annotations): Don't call
9529         delete_tree_cfg_annotations.
9530
9531         * ssaexpand.h: New file.
9532         * expr.c (toplevel): Include ssaexpand.h.
9533         (expand_assignment): Handle SSA names the same as register variables.
9534         (expand_expr_real_1): Expand SSA names.
9535         * cfgexpand.c (toplevel): Include ssaexpand.h.
9536         (SA): New global variable.
9537         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
9538         (SSAVAR): New macro.
9539         (set_rtl): New helper function.
9540         (add_stack_var): Deal with SSA names, use set_rtl.
9541         (expand_one_stack_var_at): Likewise.
9542         (expand_one_stack_var): Deal with SSA names.
9543         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
9544         before unique numbers.
9545         (expand_stack_vars): Use set_rtl.
9546         (expand_one_var): Accept SSA names, add asserts for them, feed them
9547         to above subroutines.
9548         (expand_used_vars): Expand all partitions (without default defs),
9549         then only the local decls (ignoring those expanded already).
9550         (expand_gimple_cond): Remove edges when jumpif() expands an
9551         unconditional jump.
9552         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
9553         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
9554         SSA name.
9555         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
9556         members of SA; deal with PARM_DECL partitions here; expand
9557         all PHI nodes, free tree datastructures and SA.  Commit instructions
9558         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
9559         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
9560         info and statements at start, collect garbage at finish.
9561         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
9562         (VAR_ANN_PARTITION) Remove.
9563         (change_partition_var): Don't declare.
9564         (partition_to_var): Always return SSA names.
9565         (var_to_partition): Only accept SSA names.
9566         (register_ssa_partition): Only check argument.
9567         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
9568         member.
9569         (delete_var_map): Don't free it.
9570         (var_union): Only accept SSA names, simplify.
9571         (partition_view_init): Mark only useful SSA names as used.
9572         (partition_view_fini): Only deal with SSA names.
9573         (change_partition_var): Remove.
9574         (dump_var_map): Use ssa_name instead of partition_to_var member.
9575         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
9576         basic blocks.
9577         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
9578         (struct _elim_graph): New member const_dests; nodes member vector of
9579         ints.
9580         (set_location_for_edge): New static helper.
9581         (create_temp): Remove.
9582         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
9583         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
9584         (new_elim_graph): Allocate const_dests member.
9585         (clean_elim_graph): Truncate const_dests member.
9586         (delete_elim_graph): Free const_dests member.
9587         (elim_graph_size): Adapt to new type of nodes member.
9588         (elim_graph_add_node): Likewise.
9589         (eliminate_name): Likewise.
9590         (eliminate_build): Don't take basic block argument, deal only with
9591         partition numbers, not variables.
9592         (get_temp_reg): New static helper.
9593         (elim_create): Use it, deal with RTL temporaries instead of trees.
9594         (eliminate_phi): Adjust all calls to new signature.
9595         (assign_vars, replace_use_variable, replace_def_variable): Remove.
9596         (rewrite_trees): Only do checking.
9597         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
9598         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
9599         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
9600         contains_tree_r, MAX_STMTS_IN_LATCH,
9601         process_single_block_loop_latch, analyze_edges_for_bb,
9602         perform_edge_inserts): Remove.
9603         (expand_phi_nodes): New global function.
9604         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
9605         functions, initialize new parameter, remember partitions having a
9606         default def.
9607         (finish_out_of_ssa): New global function.
9608         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
9609         don't reset in_ssa_p here, don't disable TER when mudflap.
9610         (pass_del_ssa): Remove.
9611         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
9612         partition members.
9613         (execute_free_datastructures): Declare.
9614         * Makefile.in (SSAEXPAND_H): New variable.
9615         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
9616         * basic-block.h (commit_one_edge_insertion): Declare.
9617         * passes.c (init_optimization_passes): Move pass_nrv and
9618         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
9619         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
9620         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
9621         (redirect_branch_edge): Deal with super block when expanding, split
9622         out jump patching itself into ...
9623         (patch_jump_insn): ... here, new static helper.
9624
9625 2009-04-26  Michael Matz  <matz@suse.de>
9626
9627         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
9628         beyond num_ssa_names.
9629         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
9630         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
9631
9632 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
9633
9634         PR inline-asm/39543
9635         * fwprop.c (forward_propagate_asm): New function.
9636         (forward_propagate_and_simplify): Propagate also into __asm, if it
9637         doesn't increase the number of referenced registers.
9638
9639         PR c/39889
9640         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
9641
9642 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
9643
9644         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
9645         note_nonlocal_vla_type for nonlocal VLAs.
9646         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
9647         contains_remapped_vars, remap_vla_decls): New functions.
9648         (convert_nonlocal_reference_stmt): If not optimizing, call
9649         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
9650         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
9651         if it wasn't found in var_map.
9652         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
9653         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
9654         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
9655         declare_vars.
9656         * gimplify.c (nonlocal_vlas): New variable.
9657         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
9658         referenced VLAs.
9659         (gimplify_body): Create and destroy nonlocal_vlas.
9660
9661         * dwarf2out.c (loc_descr_plus_const): New function.
9662         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
9663         mem_loc_descriptor, loc_descriptor_from_tree_1,
9664         descr_info_loc, gen_variable_die): Use it.
9665
9666         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
9667         !TREE_STATIC VAR_DECLs.
9668         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
9669         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
9670         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
9671         DECL_BY_REFERENCE is valid.
9672         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
9673         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
9674         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
9675         Copy DECL_BY_REFERENCE.
9676         (struct nesting_copy_body_data): New type.
9677         (nesting_copy_decl): New function.
9678         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
9679         if they have variable length.
9680
9681 2009-04-26  Michael Matz  <matz@suse.de>
9682
9683         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
9684         mark new temporaries for renaming.
9685
9686 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
9687
9688         PR c/39581
9689         * c-decl.c (global_bindings_p): Return negative value.
9690         (c_variable_size): New.  Based on variable_size from
9691         stor-layout.c.
9692         (grokdeclarator): Call c_variable_size not variable_size.
9693
9694 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
9695
9696         * config/i386/i386.c (print_operand) ['z']: Fix typo.
9697
9698 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
9699
9700         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
9701         Redefine it to just use mingw/include.
9702         (ASM_SPEC): Rules for -m32 and -m64.
9703         (LINK_SPEC): Use Likewise.
9704         (SPEC_32): New define.
9705         (SPEC_64): Likewise.
9706         (SUB_LINK_SPEC): Likewise.
9707         (MULTILIB_DEFAULTS): New define.
9708         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
9709         Add multilib options.
9710         (MULTILIB_DIRNAMES): Likewise.
9711         (MULTILIB_OSDIRNAMES): Likewise.
9712         (LIBGCC): Likewise.
9713         (INSTALL_LIBGCC): Likewise.
9714
9715 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
9716
9717         PR c/39556
9718         * c-tree.h (enum c_inline_static_type): New.
9719         (record_inline_static): Declare.
9720         * c-decl.c (struct c_inline_static, c_inline_statics,
9721         record_inline_static, check_inline_statics): New.
9722         (pop_file_scope): Call check_inline_statics.
9723         (start_decl): Call record_inline_static instead of pedwarning
9724         directly for static in inline function.
9725         * c-typeck.c (build_external_ref): Call record_inline_static
9726         instead of pedwarning directly for static referenced in inline
9727         function.
9728
9729 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
9730
9731         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
9732         not new but only being rescanned.
9733         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
9734         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
9735         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
9736         record_set_info, compute_set, grealloc): Remove.
9737         (recompute_all_luids): New function.
9738         (gcse_main): Don't compute sets, and don't do related memory
9739         allocations/free-ing.  If something changed before the end of the
9740         pass, update LUIDs using recompute_all_luids.
9741         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
9742         (free_gcse_mem): Don't free it either.
9743         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
9744         Use the df insn LUIDs.
9745         (load_killed_in_block): Likewise.
9746         (compute_hash_table_work): Don't compute reg_set_in_block.
9747         (compute_transp): Use DF_REG_DEF_CHAINs.
9748         (local_cprop_pass): Don't use compute_sets and related functions.
9749         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
9750         Use get_max_uid() instead of max_cuid.
9751         (insert_insn_end_basic_block, pre_insert_copy_insn,
9752         update_ld_motion_stores): Don't try to
9753         keep reg_set tables up to date.
9754         (pre_insert_copies): Use df insn LUIDs.
9755         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
9756         (reg_set_info): Don't use extra bitmap argument.
9757         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
9758         information to compute regs_set_in_block.
9759         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
9760         (bypass_jumps): Don't use compute_sets and friends.
9761
9762 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9763
9764         PR testsuite/39710
9765         * opts.c (undocumented_msg): Do not leave blank even with
9766         ENABLE_CHECKING.
9767
9768 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
9769
9770         * c-decl.c (build_enumerator): Allow values folding to integer
9771         constants but not integer constant expressions with a pedwarn if
9772         pedantic.
9773
9774 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
9775
9776         PR c/39582
9777         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
9778         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
9779         type is an integer constant.
9780
9781 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
9782
9783         PR target/39897
9784         * config/i386/i386.c (print_operand) ['z']: Revert handling of
9785         HImode operands.
9786
9787 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
9788
9789         PR c/39564
9790         * c-decl.c (grokdeclarator): Diagnose declarations of functions
9791         with variably modified return type and no storage class
9792         specifiers, except for the case of nested functions.  Distinguish
9793         extern declarations of functions with variably modified return
9794         types from those of objects with variably modified types.
9795
9796 2009-04-25  Jan Hubicka  <jh@suse.cz>
9797
9798         * tree.c (list_equal_p): New function.
9799         * tree.h (list_equal_p): Declare.
9800         * coretypes.h (edge_def, edge, const_edge, basic_block_def
9801         basic_block_def, basic_block, const_basic_block): New.
9802         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
9803         (redirect_eh_edge): New function.
9804         (make_eh_edge_update_phi): EH edges are not abnormal.
9805         * except.c: Include tree-flow.h.
9806         (list_match): New function.
9807         (eh_region_replaceable_by_p): New function.
9808         (replace_region): New function.
9809         (hash_type_list): New function.
9810         (hash_eh_region): New function.
9811         (eh_regions_equal_p): New function.
9812         (merge_peers): New function.
9813         (remove_unreachable_regions): Verify EH tree when checking;
9814         merge peers.
9815         (copy_eh_region_1): New function.
9816         (copy_eh_region): New function.
9817         (push_reachable_handler): New function.
9818         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
9819         regions without label but with live RESX.
9820         * except.h (redirect_eh_edge_to_label): New.
9821         * tree-flow.h (redirect_eh_edge): New.
9822         * coretypes.h (edge_def, edge, const_edge, basic_block_def
9823         basic_block_def, basic_block, const_basic_block): Remove.
9824         * Makefile.in (except.o): Add dependency on tree-flow.h
9825         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
9826         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
9827         Remove.
9828
9829 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
9830
9831         PR bootstrap/39645
9832         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
9833         on the destination of memcpy.
9834
9835 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
9836
9837         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
9838         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
9839         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
9840
9841 2009-04-25  Jan Hubicka  <jh@suse.cz>
9842
9843         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
9844         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
9845         to be reached by different label than left.
9846         (update_eh_edges): Update comment; remove edge_to_remove if possible
9847         and return true if suceeded.
9848         (cleanup_empty_eh): Accept sharing map; handle shared regions.
9849         (cleanup_eh): Compute sharing map.
9850         * except.c (remove_eh_handler_and_replace): Add argument if we should
9851         update regions.
9852         (remove_unreachable_regions): Update for label sharing.
9853         (label_to_region_map): Likewise.
9854         (get_next_region_sharing_label): New function.
9855         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
9856         prev_try pointers.
9857         (remove_eh_handler): Update.
9858         (remove_eh_region_and_replace_by_outer_of): New function.
9859         * except.h (struct eh_region): Add next_region_sharing_label.
9860         (remove_eh_region_and_replace_by_outer_of,
9861         get_next_region_sharing_label): Declare.
9862         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
9863
9864 2009-04-25  Jan Hubicka  <jh@suse.cz>
9865
9866         * tree-cfg.c (split_critical_edges): Split also edges where we can't
9867         insert code even if they are not critical.
9868
9869 2009-04-25  Jan Hubicka  <jh@suse.cz>
9870
9871         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
9872         (gimple_can_remove_branch_p): EH edges won't remove branch by
9873         redirection.
9874         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
9875         updating of non-abnormal EH edges.
9876         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
9877         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
9878         (split_critical_edges): Split also edges where emitting code on them
9879         will lead to splitting later.
9880
9881 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
9882             H.J. Lu  <hongjiu.lu@intel.com>
9883
9884         PR target/39590
9885         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
9886         the configured assembler supports fildq and fistpq mnemonics.
9887         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
9888         * configure: Regenerated.
9889         * config.in: Ditto.
9890
9891         * config/i386/i386.c (print_operand): Handle 'Z'.
9892         ['z']: Remove handling of special fild/fist suffixes.
9893         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
9894         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
9895         suffix of fild insn.
9896         (*floatsi<mode>2_vector_mixed): Ditto.
9897         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
9898         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
9899         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
9900         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
9901         * config/i386/gas.h (GAS_MNEMONICS): Remove.
9902
9903 2009-04-25  Ben Elliston  <bje@au.ibm.com>
9904  
9905         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
9906         the source of a set operation.
9907
9908 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
9909
9910         * target.h (struct gcc_target): Add case_values_threshold field.
9911         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
9912         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
9913         * targhooks.c (default_case_values_threshold): New function.
9914         * targhooks.h (default_case_values_threshold): Declare function.
9915         * stmt.c (expand_case): Use case_values_threshold target hook.
9916         * expr.h (case_values_threshold): Remove declartation.
9917         * expr.c (case_values_threshold): Remove function.
9918         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
9919
9920         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
9921         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
9922         (avr_case_values_threshold): Declare as static.
9923         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
9924
9925         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
9926         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
9927         (mn10300_case_values_threshold): New function.
9928
9929 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
9930
9931         * ira.c (setup_cover_and_important_classes): Add enum cast.
9932
9933 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
9934
9935         * genpreds.c (write_enum_constraint_num): Output definition of
9936         CONSTRAINT_NUM_DEFINED_P macro.
9937         * ira.c (setup_cover_and_important_classes): Use
9938         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
9939         
9940 2009-04-24  DJ Delorie  <dj@redhat.com>
9941
9942         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
9943         __SH2A_SINGLE_ONLY__ also.
9944
9945 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
9946
9947         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
9948         (movdf_internal): Ditto.
9949         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
9950         SFmode and DFmode constants.
9951         (ia64_print_operand): Add 'G' format for printing
9952         floating point constants.
9953
9954 2009-04-24  Richard Guenther  <rguenther@suse.de>
9955
9956         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
9957         from unsigned additions.
9958
9959 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
9960
9961         * c-typeck.c (set_init_index): Allow array designators that are
9962         not integer constant expressions with a pedwarn if pedantic.
9963
9964 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
9965
9966         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
9967         zero if no overlap in nonzero bits between the operands.
9968
9969 2009-04-24  Ian Lance Taylor  <iant@google.com>
9970
9971         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
9972         (record_dead_and_set_regs): Likewise.
9973         * df.h (struct df_mw_hardreg): Change flags field to int.
9974         (struct df_base_ref): Likewise.
9975         (struct df): Change changeable_flags field to int.
9976         * df-scan.c (df_defs_record): Change clobber_flags to int.
9977         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
9978         constants rather than #define macros.
9979         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
9980         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
9981         (enum dwarf_calling_convention): Likewise.
9982         (enum dwarf_line_number_x_ops): Likewise.
9983         (enum dwarf_call_frame_info): Likewise.
9984         (enum dwarf_source_language): Likewise.
9985         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
9986         (add_calling_convention_attribute): Likewise.
9987         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
9988         (combine_comparisons): Change compcode to int.  Add cast to enum type.
9989         * genrecog.c (maybe_both_true_2): Change c to int.
9990         (write_switch): Likewise.  Add cast to enum type.
9991         * gimplify.c (gimplify_omp_for): Handle return values from
9992         gimplify_expr using MIN rather than bitwise or.
9993         (gimplify_expr): Add cast to enum type.
9994         * ipa-prop.c (update_jump_functions_after_inlining): Change
9995         IPA_BOTTOM to IPA_JF_UNKNOWN.
9996         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
9997         Add casts to enum type.
9998         (setup_cover_and_important_classes): Change cl to int.  Add casts
9999         to enum type.
10000         (setup_class_translate): Change cl and mode to int.
10001         (ira_init_once): Change mode to int.
10002         (free_register_move_costs): Likewise.
10003         (setup_prohibited_mode_move_regs): Add casts to enum type.
10004         * langhooks.c (add_builtin_function_common): Rework assertion that
10005         value fits bitfield.
10006         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
10007         * omega.c (omega_do_elimination): Avoid math on enum types.
10008         * optabs.c (expand_vec_shift_expr): Remove casts to int.
10009         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
10010         int local to handle integral_argment value.
10011         * regmove.c (try_auto_increment): Change PUT_MODE to
10012         PUT_REG_NOTE_KIND.
10013         * reload.c (push_secondary_reload): Add casts to enum type.
10014         (secondary_reload_class, find_valid_class): Likewise.
10015         * reload1.c (emit_input_reload_insns): Likewise.
10016         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
10017         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
10018         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
10019         constant.
10020         * tree.c (build_common_builtin_nodes): Add casts to enum type.
10021         * tree-complex.c (complex_lattice_t): Typedef to int rather than
10022         enum type.
10023         (expand_complex_libcall): Add casts to enum type.
10024         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
10025         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
10026         with ERROR_MARK, not NUM_TREE_CODES.
10027         (vect_create_epilog_for_reduction): Likewise.
10028         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
10029         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
10030         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
10031         enum machine_mode.
10032         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
10033         vect_unused_in_loop.  Change 0 to loop_vect.
10034         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
10035         * var-tracking.c (get_init_value): Change return type to enum
10036         var_init_status.
10037         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
10038         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
10039         arm_fp_model.
10040         (arm_override_options): Add casts to enum type.
10041         (arm_emit_tls_decoration): Likewise.
10042         * config/i386/i386.c (ix86_function_specific_restore): Add casts
10043         to enum type.
10044         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
10045         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
10046         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
10047         enum type.
10048         * config/s390/s390.c (code_for_builtin_64): Change to array of
10049         enum insn_code.
10050         (code_for_builtin_31): Likewise.
10051         (s390_expand_builtin): Change code_for_builtin to enum insn_code
10052         const *.
10053         * config/sparc/sparc.c (sparc_override_options): Change value
10054         field in struct code_model to enum cmodel.  In initializer change
10055         0 to NULL and add cast to enum type.
10056
10057         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
10058         Change all callers.  Issue a -Wc++-compat warning using
10059         lhs_origtype if necessary.
10060         (convert_for_assignment): Issue -Wc++-compat warnings about
10061         invalid conversions to enum type on assignment.
10062         * c-common.h (build_modify_expr): Update declaration.
10063
10064 2009-04-24  Nick Clifton  <nickc@redhat.com>
10065
10066         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
10067         (function_arg_advance): Likewise.
10068         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
10069         5th alternative.
10070
10071 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10072
10073         * config/s390/constraints.md ('I', 'J'): Fix condition.
10074
10075 2009-04-24  Diego Novillo  <dnovillo@google.com>
10076
10077         * gengtype-parse.c (parse_error): Add newline after message.
10078
10079 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
10080
10081         * config/i386/sse.md (avxmodesuffixs): Removed.
10082         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
10083         (*avx_pinsr<ssevecsize>): This.
10084
10085 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
10086
10087         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
10088         follow chains of regs with a single definition, and allow expressions
10089         that are function_invariant_p.
10090         (simple_rhs_p): Allow expressions that are function_invariant_p.
10091
10092 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
10093
10094         PR middle-end/39867
10095         * fold-const.c (fold_cond_expr_with_comparison): When folding
10096         > and >= to MAX, make sure the MAX uses the same type as the
10097         comparison's operands.
10098
10099 2009-04-24  Nick Clifton  <nickc@redhat.com>
10100
10101         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
10102         addressing for DImode accesses.
10103         (frv_print_operand_address): Handle PLUS case.
10104         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
10105
10106 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
10107
10108         PR rtl-optimization/39794
10109         * alias.c (canon_true_dependence): Add x_addr argument.
10110         * rtl.h (canon_true_dependence): Adjust prototype.
10111         * cse.c (check_dependence): Adjust canon_true_dependence callers.
10112         * cselib.c (cselib_invalidate_mem): Likewise.
10113         * gcse.c (compute_transp): Likewise.
10114         * dse.c (scan_reads_nospill): Likewise.
10115         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
10116         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
10117         canon_base_addr of the group, plus optional offset.
10118         (struct group_info): Rename canon_base_mem to
10119         canon_base_addr.
10120         (get_group_info): Set canon_base_addr to canon_rtx of base, not
10121         canon_rtx of base_mem.
10122
10123 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
10124
10125         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
10126         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
10127
10128 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10129
10130         * config/spu/spu-builtins.h: Delete file.
10131
10132         * config/spu/spu.h (enum spu_builtin_type): Move here from
10133         spu-builtins.h.
10134         (struct spu_builtin_description): Likewise.  Add GTY marker.
10135         Do not use enum spu_function_code or enum insn_code.
10136         (spu_builtins): Add extern declaration.
10137
10138         * config/spu/spu.c: Do not include "spu-builtins.h".
10139         (enum spu_function_code, enum spu_builtin_type_index,
10140         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
10141         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
10142         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
10143         unsigned_V2DI_type_node): Move here from spu-builtins.h.
10144         (spu_builtin_types): Make static.  Add GTY marker.
10145         (spu_builtins): Add extern declaration with GTY marker.
10146         Include "gt-spu.h".
10147
10148         * config/spu/spu-c.c: Do not include "spu-builtins.h".
10149         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
10150         Check programmatically whether all parameters are scalar.
10151
10152         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
10153
10154 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
10155
10156         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
10157         assignment from the constructor either if the target is volatile.
10158
10159 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
10160
10161         * config/arm/arm.md (insv): Do not share operands[0].
10162
10163 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
10164
10165         * config/vxlib-tls.c (active_tls_threads): Delete.
10166         (delete_hook_installed): New.
10167         (tls_delete_hook): Don't delete the delete hook.
10168         (tls_destructor): Delete it here.
10169         (__gthread_set_specific): Adjust installing the delete hook.
10170         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
10171         __gthread_leave_tsd_dtor_context.
10172
10173 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
10174
10175         * c-format.c (gcc_tdiag_char_table): Add support for %E.
10176
10177 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
10178
10179         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
10180         enum type.
10181         (alpha_rtx_costs): Ditto.
10182         (emit_unlikely_jump): Use add_reg_note.
10183         (emit_frame_store_1): Ditto.
10184         (alpha_expand_prologue): Ditto.
10185         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
10186         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
10187
10188 2009-04-23  Nick Clifton  <nickc@redhat.com>
10189
10190         * config/v850/v850.md (epilogue): Remove suppressed code.
10191         (return): Rename to return_simple and remove test of frame size.
10192         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
10193         to gen_return_simple.
10194
10195 2009-04-22  Jing Yu  <jingyu@google.com>
10196
10197         PR testsuite/39781
10198         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
10199
10200 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10201
10202         PR C/31499
10203         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
10204         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
10205         value is a VECTOR_CST, the element type is the element type of the
10206         vector.
10207
10208 2009-04-22  DJ Delorie  <dj@redhat.com>
10209
10210         * config/m32c/m32c.h: Update GTY annotations to new syntax.
10211
10212 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
10213
10214         * alias.c (find_base_term): Move around LO_SUM case, so that
10215         CONST falls through into PLUS/MINUS handling.
10216
10217         PR c/39855
10218         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
10219         into 0, use omit_one_operand.
10220
10221 2009-04-23  Ben Elliston  <bje@au.ibm.com>
10222
10223         * config/rs6000/linux-unwind.h (get_regs): Remove type
10224         puns. Change the type of `pc' to an array of unsigned ints and
10225         update all users.  Constify frame24.
10226
10227 2009-04-22  DJ Delorie  <dj@redhat.com>
10228
10229         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
10230         declarations before code.
10231         (current_function_special_page_vector): Likewise.
10232         (m32c_expand_insv): Silence a warning.
10233
10234 2009-04-21  Taras Glek  <tglek@mozilla.com>
10235
10236         * alias.c: Update GTY annotations to new syntax.
10237         * basic-block.h: Likewise.
10238         * bitmap.h: Likewise.
10239         * c-common.h: Likewise.
10240         * c-decl.c: Likewise.
10241         * c-parser.c: Likewise.
10242         * c-pragma.c: Likewise.
10243         * c-tree.h: Likewise.
10244         * cfgloop.h: Likewise.
10245         * cgraph.h: Likewise.
10246         * config/alpha/alpha.c: Likewise.
10247         * config/arm/arm.h: Likewise.
10248         * config/avr/avr.h: Likewise.
10249         * config/bfin/bfin.c: Likewise.
10250         * config/cris/cris.c: Likewise.
10251         * config/darwin.c: Likewise.
10252         * config/frv/frv.c: Likewise.
10253         * config/i386/i386.c: Likewise.
10254         * config/i386/i386.h: Likewise.
10255         * config/i386/winnt.c: Likewise.
10256         * config/ia64/ia64.h: Likewise.
10257         * config/iq2000/iq2000.c: Likewise.
10258         * config/mips/mips.c: Likewise.
10259         * config/mmix/mmix.h: Likewise.
10260         * config/pa/pa.c: Likewise.
10261         * config/pa/pa.h: Likewise.
10262         * config/rs6000/rs6000.c: Likewise.
10263         * config/s390/s390.c: Likewise.
10264         * config/sparc/sparc.c: Likewise.
10265         * config/xtensa/xtensa.c: Likewise.
10266         * cselib.h: Likewise.
10267         * dbxout.c: Likewise.
10268         * dwarf2out.c: Likewise.
10269         * except.c: Likewise.
10270         * except.h: Likewise.
10271         * fixed-value.h: Likewise.
10272         * function.c: Likewise.
10273         * function.h: Likewise.
10274         * gimple.h: Likewise.
10275         * integrate.c: Likewise.
10276         * optabs.c: Likewise.
10277         * output.h: Likewise.
10278         * real.h: Likewise.
10279         * rtl.h: Likewise.
10280         * stringpool.c: Likewise.
10281         * tree-data-ref.c: Likewise.
10282         * tree-flow.h: Likewise.
10283         * tree-scalar-evolution.c: Likewise.
10284         * tree-ssa-address.c: Likewise.
10285         * tree-ssa-alias.h: Likewise.
10286         * tree-ssa-operands.h: Likewise.
10287         * tree.c: Likewise.
10288         * tree.h: Likewise.
10289         * varasm.c: Likewise.
10290         * varray.h: Likewise.
10291         * vec.h: Likewise.
10292         * coretypes.h: Do not define GTY macro if it is already defined.
10293         * doc/gty.texi: Update GTY documentation to new syntax.
10294         * gengtype-lex.l: Enforce attribute-like syntax for GTY
10295         annotations on structs.
10296         * gengtype-parse.c: Likewise.
10297
10298 2009-04-22  Mark Heffernan  <meheff@google.com>
10299
10300         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
10301
10302 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
10303
10304         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
10305         where appropriate.
10306
10307 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
10308
10309         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
10310         the same as a PLUS without a shift.  Increase the cost of a
10311         CONST_INT in MULT.
10312
10313 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10314
10315         * Makefile.in: Update dependencies.
10316         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
10317         * errors.h: Remove bogus comment about compatibility.
10318         (warning): Update declaration.
10319         * genautomata.c: Update all calls to warning.
10320         * gimple.c: Do not include errors.h. Include toplev.h.
10321         * tree-ssa-structalias.c: Do not include errors.h.
10322         * omega.c: Likewise.
10323         * tree-ssa-reassoc.c: Likewise.
10324         * config/spu/spu-c.c: Likewise.
10325         * config/spu/t-spu-elf: Update dependencies.
10326
10327 2009-04-22  Richard Guenther  <rguenther@suse.de>
10328
10329         PR tree-optimization/39824
10330         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
10331         make sure the types are compatible.
10332
10333 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10334
10335         PR c++/14875
10336         * c-common.c (c_parse_error): Take a token_flags parameter.
10337         Use token_type for the token type instead.
10338         Pass token_flags to cpp_type2name.
10339         * c-common.h (c_parse_error): Update declaration.
10340         * c-parser.c (c_parser_error): Pass 0 as token flags.
10341
10342 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
10343
10344         PR rtl-optimization/39580
10345         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert. 
10346         
10347 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10348
10349         * function.c (expand_function_end): Do not emit a jump to the "naked"
10350         return label for fall-through returns.
10351         * except.c (sjlj_emit_function_exit): Always place the call to the
10352         unregister function at the location installed by expand_function_end.
10353
10354 2009-04-22  Richard Guenther  <rguenther@suse.de>
10355
10356         PR tree-optimization/39845
10357         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
10358         (gen_inbound_check): Likewise.
10359
10360 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
10361
10362         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
10363         padding for PPC.
10364         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
10365         * config/vxlib.c (__gthread_once): Add race guard for PPC.
10366
10367 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
10368
10369         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
10370         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
10371         shift counts to avoid out-of-bounds array accesses.
10372
10373 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
10374
10375         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
10376         (Pmode): Move above.
10377
10378 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
10379
10380         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
10381         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
10382         GET_CODE macro.  Use IN_RANGE macro where appropriate.
10383         * config/alpha/alpha.h: Ditto.
10384         * config/alpha/alpha.md: Ditto.
10385         * config/alpha/constraints.md: Ditto.
10386         * config/alpha/predicates.md: Ditto.
10387         
10388 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
10389
10390         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
10391         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10392         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10393         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10394         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10395         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10396         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10397         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10398         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10399         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10400         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10401         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10402         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10403         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10404         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10405         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10406         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10407         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10408         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10409         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10410         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10411         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10412         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10413         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10414         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10415         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10416         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
10417
10418 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
10419
10420         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
10421         references from comments.
10422         * cfgbuild.c: (count_basic_blocks): Delete.
10423         (find_basic_blocks_1): Delete.
10424         (find_basic_blocks): Delete.
10425         * except.c (finish_eh_generation): Make static.  Move comment from
10426         except.h here.  Remove find_basic_blocks references from comments.
10427         * except.h (finish_eh_generation): Delete.
10428         * basic-block.h (find_basic_blocks): Delete.
10429         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
10430
10431 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
10432
10433         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
10434         (sdbout_parms):  Likewise.
10435
10436 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
10437
10438         * config/sh/sh.c (prepare_cbranch_operands): Use
10439         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
10440         (expand_cbranchdi4): Likewise.
10441         (from_compare): Add cast to enum type.
10442         (expand_cbranchsi4): Use add_reg_note.
10443         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
10444         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
10445         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
10446         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
10447         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
10448         instead of CODE_FOR_nothing.
10449         (cbranchdi4): Likewise.  Fix the order of arguments for
10450         gen_rtx_fmt_ee.
10451         (push_fpscr): Use add_reg_note.
10452         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
10453         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
10454         
10455 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
10456
10457         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
10458         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
10459         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
10460         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
10461         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
10462         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
10463         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
10464         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
10465         config/alpha/x-vms, config/arc/t-arc,
10466         config/arm/README-interworking, config/arm/arm-c.c,
10467         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
10468         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
10469         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
10470         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
10471         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
10472         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
10473         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
10474         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
10475         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
10476         config/cris/t-elfmulti, config/crx/t-crx,
10477         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
10478         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
10479         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
10480         config/h8300/t-h8300, config/i386/athlon.md,
10481         config/i386/darwin-libgcc.10.4.ver,
10482         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
10483         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
10484         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
10485         config/i386/t-linux64, config/i386/t-nwld,
10486         config/i386/t-rtems-i386, config/i386/t-sol2-10,
10487         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
10488         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
10489         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
10490         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
10491         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
10492         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
10493         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
10494         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
10495         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
10496         config/m68k/t-uclinux, config/mcore/t-mcore,
10497         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
10498         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
10499         config/mips/crtn.asm, config/mips/irix-crti.asm,
10500         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
10501         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
10502         config/mips/mips-fixed.md, config/mips/sb1.md,
10503         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
10504         config/mips/t-iris6, config/mips/t-isa3264,
10505         config/mips/t-libgcc-mips16, config/mips/t-linux64,
10506         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
10507         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
10508         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
10509         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
10510         config/mn10300/t-linux, config/mn10300/t-mn10300,
10511         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
10512         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
10513         config/picochip/libgccExtras/clzsi2.asm,
10514         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
10515         config/rs6000/darwin-libgcc.10.4.ver,
10516         config/rs6000/darwin-libgcc.10.5.ver,
10517         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
10518         config/rs6000/t-aix43, config/rs6000/t-aix52,
10519         config/rs6000/t-darwin, config/rs6000/t-fprules,
10520         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
10521         config/rs6000/t-lynx, config/rs6000/t-netbsd,
10522         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
10523         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
10524         config/rs6000/t-rtems, config/rs6000/t-spe,
10525         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
10526         config/score/t-score-elf, config/sh/divcost-analysis,
10527         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
10528         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
10529         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
10530         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
10531         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
10532         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
10533         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
10534         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
10535         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
10536         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
10537         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
10538         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
10539         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
10540         limitx.h, version.c, xcoff.h: Add copyright and license notices.
10541         * config/h8300/genmova.sh: Include copyright and license notices
10542         in generated output.
10543         * config/h8300/mova.md: Regenerate.
10544         * doc/install.texi2html: Include word "Copyright" in copyright
10545         notice and use name "Free Software Foundation, Inc.".
10546         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
10547         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
10548         ChangeLog-2007, ChangeLog-2008: Correct dates.
10549
10550 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
10551
10552         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
10553         NE_EXPR operations as well.
10554         * c-parser.c (c_parser_condition): Do not set location information on
10555         the condition.
10556         (c_parser_conditional_expression): Likewise.
10557         (c_parser_binary_expression): Set location information on operators.
10558         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
10559         TRUTH_NOT_EXPR has been folded.
10560         * fold-const.c (fold_truth_not_expr): Copy location information from
10561         the incoming expression to the outgoing one.
10562         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
10563         recursive calls on the LHS of the operator but pass that of the
10564         operator to recursive calls on the RHS of the operator.  Set it
10565         on the COND_EXPR.
10566         (shortcut_cond_expr): Set the locus of the operator on the second
10567         COND_EXPR and that of the expression on the first in degenerate cases.
10568         Pass the locus of the expression to calls to shortcut_cond_r.
10569         Set the locus of the 'then' block on the associated jump, if any.
10570         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
10571         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
10572         expression to call to gimplify_boolean_expr.
10573
10574 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
10575
10576         * config.gcc: Add additional configuration for
10577         i686-w64-mingw* and x86_64-w64-mingw* triplet.
10578         * config/i386/mingw-w64.h: New mingw-w64 specific header.
10579         (CPP_SPEC): Redefine for allowing -municode option.
10580         (STARTFILE_SPEC): Likewise.
10581         * config/i386/t-mingw-w64: New.
10582         * config/i386/mingw-w64.opt: New.
10583         (municode): Add new target option.
10584         * doc/invoke.texi (municode): Add documentation for new option.
10585
10586 2009-04-21  Ian Lance Taylor  <iant@google.com>
10587
10588         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10589         Correct test for number of arguments.
10590         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
10591
10592 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
10593
10594         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
10595         argument of emit_library_call.
10596
10597 2009-04-21  Richard Guenther  <rguenther@suse.de>
10598
10599         PR middle-end/39829
10600         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
10601         inside VIEW_CONVERT_EXPRs.
10602
10603 2009-04-21  Martin Jambor  <mjambor@suse.cz>
10604
10605         * tree-switch-conversion.c (build_constructors): Split a long line.
10606         (constructor_contains_same_values_p): New function.
10607         (build_one_array): Create assigns of constants if possible, do not
10608         call mark_sym_for_renaming, call update_stmt.
10609         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
10610         make_rename_temp.  Do not call mark_symbols_for_renaming, call
10611         update_stmt.
10612         (gen_def_assigns): Do not call mark_symbols_for_renaming or
10613         find_new_referenced_vars, call update_stmt.
10614         (gen_inbound_check): Use create_tmp_var and create ssa names manually
10615         instead of calling make_rename_temp.  Do not call
10616         find_new_referenced_vars or mark_symbols_for_renaming, call
10617         update_stmt.
10618
10619 2009-04-21  Richard Guenther  <rguenther@suse.de>
10620
10621         PR tree-optimization/39827
10622         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
10623         (tree_ssa_phiprop): Pass the correct array size.
10624
10625 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
10626
10627         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
10628
10629 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
10630
10631         PR 16202
10632         * c-typeck.c (lvalue_p): Move declaration ...
10633         * c-common.h (lvalue_p): ... to here.
10634         * c-common.c (candidate_equal_p): New.
10635         (add_tlist): Use it.
10636         (merge_tlist): Use it.
10637         (warn_for_collisions_1): Likewise.
10638         (warning_candidate_p): Accept more candidates.
10639         (verify_tree): A warning candidate can be an expression. Use
10640         candidate_equal_p.
10641
10642 2009-04-21  Ben Elliston  <bje@au.ibm.com>
10643
10644         PR target/5267
10645         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
10646         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
10647         options.  Remove -mcall-solaris documentation.
10648
10649 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10650
10651         PR c++/13358
10652         * doc/invoke.texi (-Wlong-long): Update description.
10653         * c-lex (interpret_integer): Only warn if there was no previous
10654         overflow and -Wlong-long is enabled.
10655         * c-decl.c (declspecs_add_type): Drop redundant flags.
10656         * c.opt (Wlong-long): Init to -1.
10657         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
10658         and front-end warn_long_long. Wlong-long only depends on other
10659         flags if it is uninitialized.
10660         * c-parser.c (disable_extension_diagnostics): warn_long_long is
10661         the same for CPP and FE.
10662         (restore_extension_diagnostics): Likewise.
10663
10664 2009-04-20  Ian Lance Taylor  <iant@google.com>
10665
10666         Fix enum conversions which are invalid in C++:
10667         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
10668         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
10669         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
10670         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
10671         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
10672         (dbxout_parms): Likewise.
10673         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
10674         (df_clear_flags): Likewise.
10675         * df-problems.c (df_rd_bb_local_compute_process_def): Change
10676         top_flag parameter to int.
10677         (df_chain_create_bb_process_use): Likewise.
10678         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
10679         Remove cast.
10680         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
10681         (df_ref_create_structure, df_def_record_1): Likewise.
10682         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
10683         (df_notes_rescan): Change 0 to VOIDmode in function call.
10684         (df_get_call_refs, df_insn_refs_collect): Likewise.
10685         (df_bb_regs_collect): Likewise.
10686         (df_entry_block_defs_collect): Likewise.
10687         (df_exit_block_uses_collect): Likewise.
10688         * df.h: Update declarations.
10689         * double-int.c (double_int_divmod): Add cast to enum type.
10690         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
10691         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
10692         (based_loc_descr): Likewise.
10693         (loc_descriptor_from_tree_1): Change first_op and second_op to
10694         enum dwarf_location_atom.  Add cast to enum type.
10695         * expmed.c (init_expmed): Change 0 to SET in function call.
10696         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
10697         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
10698         (do_store_flag): Likewise.
10699         * fixed-value.h (struct fixed_value): Change mode to enum
10700         machine_mode.
10701         * function.c (assign_parms): Change 0 to VOIDmode in function call.
10702         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
10703         function call.
10704         (insert_insn_decl, insert_decl, insert_state): Likewise.
10705         (automata_list_finish): Likewise.
10706         * genrecog.c (process_define_predicate): Add cast to enum type.
10707         * gensupport.c (init_predicate_table): Add cast to enum type.
10708         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
10709         function call.
10710         (gimple_build_call_1, gimple_build_label): Likewise.
10711         (gimple_build_goto, gimple_build_asm_1): Likewise.
10712         (gimple_build_switch_1, gimple_build_cdt): Likewise.
10713         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
10714         (enum fallback): Rename from enum fallback_t.
10715         (fallback_t): Typedef as int.
10716         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
10717         GSI_SAME_STMT in function call.
10718         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
10719         enum type.
10720         (setup_reg_class_relations): Likewise.
10721         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
10722         (setup_prohibited_class_mode_regs): Add cast to enum type.
10723         (setup_prohibited_mode_move_regs): Likewise.
10724         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
10725         (record_address_regs): Change i to enum reg_class.
10726         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
10727         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
10728         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
10729         (GET_MODE_2XWIDER_MODE): Likewise.
10730         (GET_CLASS_NARROWEST_MODE): Likewise.
10731         * omp-low.c (expand_omp_for): Add cast to enum type.
10732         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
10733         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
10734         * postreload.c (reload_cse_simplify_operands): Change rclass local
10735         to enum reg_class.
10736         * predict.c (combine_predictions_for_insn): Change best_predictor
10737         and predictor to enum br_predictor.
10738         (combine_predictions_for_bb): Likewise.
10739         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
10740         use SET_PREDICT_EXPR_OUTCOME.
10741         * real.c (real_arithmetic): Change icode to code in function call.
10742         * reginfo.c (init_move_cost): Add casts to enum type.
10743         (init_reg_sets_1, init_fake_stack_mems): Likewise.
10744         * regmove.c (regclass_compatible_p): Change class0 and class1 to
10745         enum reg_class.
10746         * reload.c (find_valid_class): Add casts to enum type.
10747         (push_reload): Change 0 to NO_REGS in function call.
10748         (find_reloads): Change this_alternative to array of enum
10749         reg_class.  Remove some now-unnecessary casts.
10750         (make_memloc): Change 0 to VOIDmode in function call.
10751         * reload1.c (reload): Change 0 to VOIDmode in function call.
10752         (eliminate_regs_1, elimination_effects): Likewise.
10753         (eliminate_regs_in_insn): Likewise.
10754         (emit_input_reload_insns): Add cast to enum type.
10755         (delete_output_reload): Change 0 to VOIDmode in function call.
10756         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
10757         to enum type in function call.
10758         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
10759         (SET_PREDICT_EXPR_OUTCOME): Define.
10760         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
10761         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
10762         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
10763         (dump_function): Likewise.
10764         * tree-dump.h: Update declarations.
10765         * tree-pass.h: Update declarations.
10766         * varasm.c (assemble_integer): Change mclass to enum mode_class.
10767         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
10768         enum type.
10769         (arm_rtx_costs_1): Correct parenthesization.
10770         (arm_rtx_costs): Add casts to enum type.
10771         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
10772         (vfp_emit_fstmd): Use add_rg_note.
10773         (emit_multi_reg_push, emit_sfm): Likewise.
10774         (thumb_set_frame_pointer): Likewise.
10775         (arm_expand_prologue): Likewise.
10776         (arm_regno_class): Change return type to enum reg_class.
10777         (thumb1_expand_prologue): Use add_reg_note.
10778         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
10779         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
10780         in function call.
10781         * config/arm/gentune.sh: Add cast to enum type.
10782         * config/arm/arm-tune.md: Rebuild.
10783         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
10784         (ix86_split_fp_branch, predict_jump): Likewise.
10785         (ix86_expand_multi_arg_builtin): Change sub_code from enum
10786         insn_code to enum rtx_code.
10787         (ix86_builtin_vectorized_function): Add cast to enum type.
10788         * config/i386/i386.md (truncdfsf2): Change slot to enum
10789         ix86_stack_slot.
10790         (truncxf<mode>2, isinf<mode>2): Likewise.
10791         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
10792         enum type.
10793         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
10794         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
10795         (insert_bundle_state): Change 1 to INSERT in function call.
10796         (ia64_add_bundle_selector_before): Likewise.
10797         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
10798         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
10799         (restore_stack_nonlocal): Likewise.
10800         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
10801         function call.
10802         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
10803         function call.
10804         (mips_rtx_costs): Likewise.
10805         (mips_override_options): Add casts to enum type.
10806         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
10807         in function call.
10808         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
10809         (store_reg, set_reg_plus_d): Likewise.
10810         (hppa_expand_prologue, hppa_profile_hook): Likewise.
10811         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
10812         cast to enum type.
10813         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
10814         function call.
10815         (emit_unlikely_jump): Use add_reg_note.
10816         (rs6000_emit_allocate_stack): Likewise.
10817         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
10818         (output_toc): Change 1 to INSERT in function call.
10819         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
10820         (rs6000_initialize_trampoline): Likewise.
10821         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
10822         function call.
10823         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
10824         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
10825         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
10826         (save_gprs): Use add_reg_note.
10827         (s390_emit_prologue): Likewise.
10828         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
10829         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
10830         (sparc_fold_builtin): Add cast to enum type.
10831         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
10832         enum insn_code.
10833         (spu_expand_prologue): Use add_reg_note.
10834         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
10835
10836 2009-04-20  Ian Lance Taylor  <iant@google.com>
10837
10838         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
10839         (c_parser_postfix_expression_after_primary): Get VEC for list of
10840         arguments.  Get original types of arguments.  Call
10841         build_function_call_vec.
10842         (cached_expr_list_1, cached_expr_list_2): New static variables.
10843         (c_parser_expr_list): Change return type to VEC *.  Add
10844         p_orig_types parameter.  Change all callers.
10845         (c_parser_release_expr): New static function.
10846         (c_parser_vec_to_tree_list): New static function.
10847         * c-typeck.c (build_function_call): Rewrite to build a VEC and
10848         call build_function_call_vec.
10849         (build_function_call_vec): New function, based on old
10850         build_function_call.
10851         (convert_arguments): Remove nargs and argarray parameters.  Change
10852         values to a VEC.  Add origtypes parameter.
10853         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
10854         (convert_for_assignment): Add origtype parameter.  Change all
10855         callers.  If warn_cxx_compat, check for conversion to an enum
10856         type when calling a function.
10857         (store_init_value): Add origtype parameter.  Change all callers.
10858         (digest_init): Likewise.
10859         (struct init_node): Add origtype field.
10860         (add_pending_init): Add origtype parameter.  Change all callers.
10861         (output_init_element): Likewise.
10862         (output_pending_init_elements): Pass origtype from init_node to
10863         output_init_element.
10864         (process_init_element): Pass origtype from c_expr to
10865         output_init_element.
10866         (c_finish_return): Add origtype parameter.  Change all callers.
10867         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
10868         caller.
10869         (sync_resolve_params): Likewise.
10870         (sync_resolve_return): Change params to first_param.  Change caller.
10871         (resolve_overloaded_builtins): Change params to VEC *.  Change
10872         callers.  Save first parameter around call to build_function_call_vec.
10873         * c-decl.c (finish_decl): Add origtype parameter.  Change all
10874         callers.  Call build_function_call_vec rather than
10875         build_function_call for cleanup.
10876         * c-tree.h: Update declarations.
10877         * c-common.h: Update declarations.
10878         * stub-objc.c (objc_rewrite_function_call): Change parameter from
10879         params to first_param.
10880         * target.h (struct gcc_target): Change resolve_overloaded_builtin
10881         params parameter from tree to void *.
10882         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
10883         Change arglist parameter to have type void *, and to be a pointer
10884         to a VEC.
10885         * config/rs6000/rs6000-protos.h
10886         (altivec_resolve_overloaded_builtin): Update declaration.
10887         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
10888         fnargs parameter to have type void *, and to be a pointer to a
10889         VEC.  Call build_function_call_vec instead of
10890         build_function_call.
10891         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
10892
10893 2009-04-20  Joey Ye  <joey.ye@intel.com>
10894             Xuepeng Guo  <xuepeng.guo@intel.com>
10895             H.J. Lu  <hongjiu.lu@intel.com>
10896
10897         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
10898
10899         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
10900         (IX86_LEA_PRIORITY): Likewise.
10901         (distance_non_agu_define): New function.
10902         (distance_agu_use): Likewise.
10903         (ix86_lea_for_add_ok): Likewise.
10904         (ix86_dep_by_shift_count): Likewise.
10905
10906         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
10907         should split for LEA.
10908
10909         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
10910         function.
10911         (ix86_dep_by_shift_count): Likewise.
10912
10913 2009-04-20  Richard Guenther  <rguenther@suse.de>
10914
10915         * expr.c (handled_component_p): Move ...
10916         * tree.h (handled_component_p): ... here.
10917         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
10918         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
10919         and REALPART_EXPR to be in one group.
10920
10921 2009-04-20  Richard Guenther  <rguenther@suse.de>
10922
10923         * basic-block.h (get_all_dominated_blocks): Declare.
10924         * dominance.c (get_all_dominated_blocks): New function.
10925         * tree-cfg.c (get_all_dominated_blocks): Remove.
10926         (remove_edge_and_dominated_blocks): Adjust.
10927         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
10928         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
10929         instead of recursing.
10930
10931 2009-04-20  Doug Kwan  <dougkwan@google.com>
10932
10933         * cgraph.h (cgraph_node_ptr): New type for vector functions.
10934         (struct cgraph_node_set_def): New type.
10935         (cgraph_node_set) New type. Also declare vector functions.
10936         (struct cgraph_node_set_element_def): New type.
10937         (cgraph_node_set_element): Ditto.
10938         (cgraph_node_set_iterator): New iterator type.
10939         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
10940         cgraph_node_set_remove, dump_cgraph_node_set,
10941         debug_cgraph_node_set): New prototypes.
10942         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
10943         cgraph_node_set_size): New inlines.
10944         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
10945         including cgraph.h.
10946         (struct ipa_opt_pass): Add struct cgraph_node_set_def
10947         argument to function 'write_summary'.
10948         * ipa.c: Include ggc.h.
10949         (hash_cgraph_node_set_element,
10950         eq_cgraph_node_set_element, cgraph_node_set_new,
10951         cgraph_node_set_add, cgraph_node_set_remove,
10952         cgraph_node_set_find, dump_cgraph_node_set,
10953         debug_cgraph_node_set): New functions.
10954         * Makefile.in (ipa.o): Add dependency on GGC_H.
10955
10956 2009-04-20  Ira Rosen  <irar@il.ibm.com>
10957
10958         PR tree-optimization/39675
10959         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
10960         check of the return code of vect_schedule_slp. Check that
10961         stmt_vec_info still exists for the statement, before checking its
10962         vectorization type.
10963
10964 2009-04-20  Michael Matz  <matz@suse.de>
10965
10966         * Makefile.in (generated_files): Take out $(simple_generated_c).
10967
10968 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
10969
10970         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
10971         (UINTPTR_TYPE):  Likewise.
10972
10973 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
10974
10975         PR c/37481
10976         * c-typeck.c (digest_init): Check for initializing an array with a
10977         string literal.
10978
10979 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
10980
10981         PR c/19771
10982         * c-semantics.c (pop_stmt_list): Propagate
10983         STATEMENT_LIST_HAS_LABEL to parent statement list.
10984
10985 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
10986
10987         * config/mips/mips.h (mips_tune_attr): New macro.
10988         * config/mips/mips.md (cpu): Use it.
10989
10990 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
10991
10992         PR c/38243
10993         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
10994         declaring a tag.
10995
10996 2009-04-19  Diego Novillo  <dnovillo@google.com>
10997
10998         * toplev.c (compile_file): Move call to coverage_finish ...
10999         * cgraphunit.c (ipa_passes): ... here.
11000         Call cgraph_process_new_functions.
11001         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
11002         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
11003
11004 2009-04-19  Jan Hubicka  <jh@suse.cz>
11005
11006         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
11007         cfun.
11008         (dump_cgraph_node): Dump can throw external flag.
11009         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
11010
11011 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11012
11013         PR c/32061
11014         PR c++/36954
11015         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
11016         * common.opt (Wlogical-op): Move from here...
11017         * c.opt (Wlogical-op): ... to here.
11018         * c-typeck.c (parser_build_binary_op): Update call to
11019         warn_logical_operator.
11020         * c-opts.c (c_common_post_options): Enable warn_logical_op with
11021         extra_warnings.
11022         * c-common.c (warn_logical_op): Update.
11023         * c-common.h (warn_logical_op): Update declaration.
11024
11025 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
11026
11027         * tree.c (protected_set_expr_location): Fix formatting.
11028
11029 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
11030
11031         PR c/27676
11032         * c-typeck.c (readonly_warning): new.
11033         (build_unary_op, build_modify_expr): Use readonly_warning for
11034         storing into something readonly but not const-qualified.
11035
11036 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
11037
11038         PR c/22367
11039         * c-typeck.c (build_unary_op): Check for taking address of
11040         expression of type void.
11041
11042 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
11043
11044         PR c/35210
11045         * c-typeck.c (build_function_call): Check for calling a function
11046         with qualified void return types.  Call require_complete_type when
11047         generating a trap.
11048
11049 2009-04-18  Jan Hubicka  <jh@suse.cz>
11050
11051         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
11052         Set nothrow flag.
11053         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
11054         can_throw_external flag.
11055         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
11056         * ipa-pure-const.c (ignore_edge): New function.
11057         (propagate): Compute order for NOTHROW computation; set NOTHROWs
11058         only over can_throw_external edges.
11059         (local_pure_const): Add nothrow flag.
11060         * ipa-utils.c (searchc): Add ignore_edge callback.
11061         (ipa_utils_reduced_inorder): Add ignore_edge callback.
11062         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
11063         (set_nothrow_function_flags): Update cgraph.
11064         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
11065
11066 2009-04-18  Richard Guenther  <rguenther@suse.de>
11067
11068         PR middle-end/39804
11069         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
11070         (fold_stmt): ... this and ...
11071         (fold_stmt_inplace): ... this.
11072         (fold_stmt_1): Fold references in calls and asms.
11073         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
11074
11075 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11076
11077         * tree-vrp.c (ssa_name_nonzero_p): Remove.
11078         * tree.h: Remove the prototype for ssa_name_nonzero_p.
11079
11080 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11081
11082         * tree.c (function_args_count): Remove.
11083         * tree.h: Remove the prototype for function_args_count.
11084
11085 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11086
11087         * tree-iterator.c (expr_only): Remove.
11088         * tree.h: Remove the prototype for expr_only.
11089
11090 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11091
11092         * reginfo.c (cannot_change_mode_set_regs): Remove.
11093         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
11094
11095 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
11096
11097         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
11098         whether operands 0 and 1 overlaps.
11099
11100 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
11101
11102         PR middle-end/36902
11103         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
11104         pointer. Use warning_at instead of warning.
11105         (search_for_addr_array): Likewise.
11106         (check_array_bounds): Likewise.
11107         (check_all_array_refs): Check that the incoming edge is not in the
11108         list of edges to be removed.
11109         (check_all_array_refs): Avoid the temporal pointer.
11110         (vrp_visit_cond_stmt): Fix typo.
11111         (simplify_switch_using_ranges): Handle the case where the switch
11112         index is an integer constant.
11113
11114 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
11115
11116         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
11117
11118 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
11119
11120         * doc/extend.texi, doc/invoke.texi: Fix typos.
11121
11122 2009-04-17  Cary Coutant  <ccoutant@google.com>
11123
11124         * tree-flow-inline.h (get_lineno): Fix inverted test.
11125
11126 2009-04-17  Diego Novillo  <dnovillo@google.com>
11127
11128         * tree-ssa-pre.c (create_expression_by_pieces): Remove
11129         assertion for AVAIL_OUT.
11130
11131 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
11132
11133         PR target/38627
11134         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
11135         * config/sh/linux-atomic.asm: Likewise.
11136
11137 2009-04-17  Diego Novillo  <dnovillo@google.com>
11138
11139         * except.c (debug_eh_tree): New.
11140         (struct eh_region, struct eh_status): Move ...
11141         * except.h: ... here.
11142         (add_type_for_runtime): Declare extern.
11143         (lookup_type_for_runtime): Likewise.
11144         (debug_eh_tree): Declare.
11145         * Makefile.in (GTFILES): List except.h before except.c
11146
11147 2009-04-17  Diego Novillo  <dnovillo@google.com>
11148
11149         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
11150         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
11151         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
11152         (find_vars_r): ... here.
11153         * tree-flow.h (find_referenced_vars_in): Declare.
11154         * tree-ssa-pre.c (create_expression_by_pieces): Assert
11155         that AVAIL_OUT exists for BLOCK.
11156         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
11157         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
11158         (tree-parloops.o): Likewise.
11159
11160 2009-04-17  Simon Baldwin  <simonb@google.com>
11161
11162         * toplev.c (default_tree_printer): Add handling for %E format.
11163
11164 2009-04-17  Diego Novillo  <dnovillo@google.com>
11165
11166         * tree-pretty-print.c (dump_generic_node): Add break after
11167         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
11168         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
11169         FUNCTION_TYPE together.  Call print_struct_decl when printing
11170         structures and TDF_SLIM is not given.
11171         (print_struct_decl): Fix logic for detecting recursion.
11172
11173 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
11174
11175         PR 31567
11176         * gcc.c (create_at_file): New.
11177         (compile_input_file_p): New.
11178         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
11179         * main.c (main): Update call to toplev_main.
11180         * toplev.c (toplev_main): Change signature. Call expandargv.
11181         * toplev.h (toplev_main): Change signature.
11182
11183 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
11184
11185         * dwarf2out.c (field_byte_offset): Use the type size as the field size
11186         if the latter is not constant.
11187
11188 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
11189
11190         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
11191
11192 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
11193
11194         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
11195         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
11196
11197 2009-04-17  Richard Guenther  <rguenther@suse.de>
11198
11199         * tree-ssa-structalias.c (get_constraint_for_component_ref):
11200         Handle component references view-converting an invariant address.
11201
11202 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
11203
11204         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
11205         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
11206         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
11207         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
11208         Use @deftypevr rather than @deftypevar.
11209
11210 2009-04-17  Richard Guenther  <rguenther@suse.de>
11211
11212         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
11213         (get_prop_source_stmt): Likewise.
11214         (can_propagate_from): Likewise.
11215
11216 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
11217
11218         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
11219         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
11220         (--with-multilib-list): Add default value.
11221         * configure: Regenerate.
11222         * Makefile.in (TM_ENDIAN_CONFIG): Define.
11223         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
11224         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
11225         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
11226         Don't add default cpu to multilib list unnecessarily, but do enable
11227         the relevant compiler option..
11228         Add support for --with-multilib-list=<blank> and
11229         --with-multilib-list=!<somelib> to supress unwanted multilibs.
11230         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
11231         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
11232         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
11233         TM_MULTILIB_CONFIG.
11234         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
11235         (MULTILIB_OSDIRNAMES): New variable.
11236         * config/sh/t-1e: Delete file.
11237         * config/sh/t-mlib-sh1: Delete file.
11238         * config/sh/t-mlib-sh2: Delete file.
11239         * config/sh/t-mlib-sh2a: Delete file.
11240         * config/sh/t-mlib-sh2a-nofpu: Delete file.
11241         * config/sh/t-mlib-sh2a-single: Delete file.
11242         * config/sh/t-mlib-sh2a-single-only: Delete file.
11243         * config/sh/t-mlib-sh2e: Delete file.
11244         * config/sh/t-mlib-sh3e: Delete file.
11245         * config/sh/t-mlib-sh4: Delete file.
11246         * config/sh/t-mlib-sh4-nofpu: Delete file.
11247         * config/sh/t-mlib-sh4-single: Delete file.
11248         * config/sh/t-mlib-sh4-single-only: Delete file.
11249         * config/sh/t-mlib-sh4a: Delete file.
11250         * config/sh/t-mlib-sh4a-nofpu: Delete file.
11251         * config/sh/t-mlib-sh4a-single: Delete file.
11252         * config/sh/t-mlib-sh4a-single-only: Delete file.
11253         * config/sh/t-mlib-sh4al: Delete file.
11254         * config/sh/t-mlib-sh5-32media: Delete file.
11255         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
11256         * config/sh/t-mlib-sh5-64media: Delete file.
11257         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
11258         * config/sh/t-mlib-sh5-compact: Delete file.
11259         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
11260         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
11261         * doc/install.texi (Options specification): Add
11262         --with-multilib-list and --with-endian.
11263
11264 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
11265
11266         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
11267         REVISION_c.
11268         (OBJS-common): Add plugin-version.o.
11269         (plugin-version.o): New.
11270         * gcc-plugin.h (plugin_gcc_version): New.
11271         (plugin_default_version_check): New.
11272         (plugin_init_func, plugin_init): Add version argument.
11273         * plugin-version.c: New.
11274         * plugin.c (str_plugin_gcc_version_name): New.
11275         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
11276         pass it to the init function.
11277         (plugin_default_version_check): New.
11278
11279 2009-04-17  Richard Guenther  <rguenther@suse.de>
11280
11281         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
11282         for decl-vs-decl disambiguation.
11283
11284 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
11285
11286         * config/s390/s390.h (s390_tune_attr): New macro definition.
11287         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
11288
11289 2009-04-17  Richard Guenther  <rguenther@suse.de>
11290
11291         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
11292         (fold_stmt_r): Likewise.
11293         (maybe_fold_reference): New function.
11294         (fold_gimple_assign): Handle cases fold_stmt_r did.
11295         (fold_stmt): Do not use fold_stmt_r.
11296         (fold_stmt_inplace): Likewise.
11297
11298 2009-04-17  Richard Guenther  <rguenther@suse.de>
11299
11300         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
11301         (record_equivalences_from_stmt): Remove useless checks and
11302         simplifications.
11303         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
11304         the type is already suitable.
11305
11306 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
11307
11308         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
11309
11310 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
11311
11312         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
11313         (CMPtype): Define as __gcc_CMPtype.
11314
11315 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
11316
11317         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
11318         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
11319
11320 2009-04-17  Richard Guenther  <rguenther@suse.de>
11321
11322         PR tree-optimization/39746
11323         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
11324         special-casing for builtins and static variable use/def.
11325         (call_may_clobber_ref_p_1): Likewise.
11326
11327 2009-04-16  Ian Lance Taylor  <iant@google.com>
11328
11329         * df.h: Include "timevar.h".
11330         (struct df_problem): Change tv_id field to timevar_id_t.
11331         * tree-pass.h: Include "timevar.h".
11332         (struct opt_pass): Change tv_id field to timevar_id_t.
11333         * timevar.h (timevar_id_t): Define TV_NONE.
11334         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
11335         TV_NONE rather than tv_id != 0.
11336         (execute_one_pass): Likewise.
11337         * Makefile.in (DF_H): Add $(TIMEVAR_H).
11338         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
11339         dependencies to $(TREE_PASS_H).
11340         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
11341         to TV_NONE.
11342         (pass_branch_target_load_optimize2): Likewise.
11343         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
11344         (pass_outof_cfg_layout_mode): Likewise.
11345         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
11346         (pass_rebuild_cgraph_edges): Likewise.
11347         (pass_remove_cgraph_callee_edges): Likewise.
11348         * df-core.c (pass_df_initialize_opt): Likewise.
11349         (pass_df_initialize_no_opt): Likewise.
11350         (pass_df_finish): Likewise.
11351         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
11352         * except.c (pass_set_nothrow_function_flags): Likewise.
11353         (pass_convert_to_eh_region_ranges): Likewise.
11354         * final.c (pass_compute_alignments): Likewise.
11355         * function.c (pass_instantiate_virtual_regs): Likewise.
11356         (pass_init_function): Likewise.
11357         (pass_leaf_regs): Likewise.
11358         (pass_match_asm_constraints): Likewise.
11359         * gimple-low.c (pass_lower_cf): Likewise.
11360         (pass_mark_used_blocks): Likewise.
11361         * init-regs.c (pass_initialize_regs): Likewise.
11362         * integrate.c (pass_initial_value_sets): Likewise.
11363         * ira.c (pass_ira): Likewise.
11364         * jump.c (pass_cleanup_barriers): Likewise.
11365         * omp-low.c (pass_expand_omp): Likewise.
11366         (pass_lower_omp): Likewise.
11367         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
11368         * recog.c (pass_split_all_insns): Likewise.
11369         (pass_split_after_reload): Likewise.
11370         (pass_split_before_regstack): Likewise.
11371         (pass_split_before_sched2): Likewise.
11372         (pass_split_for_shorten_branches): Likewise.
11373         * reginfo.c (pass_reginfo_init): Likewise.
11374         (pass_subregs_of_mode_init): Likewise.
11375         (pass_subregs_of_mode_finish): Likewise.
11376         * passes.c (pass_postreload): Likewise.
11377         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
11378         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
11379         (pass_warn_function_return): Likewise.
11380         (pass_warn_function_noreturn): Likewise.
11381         * tree-complex.c (pass_lower_complex): Likewise.
11382         (pass_lower_complex_O0): Likewise.
11383         * tree-if-conv.c (pass_if_conversion): Likewise.
11384         * tree-into-ssa.c (pass_build_ssa): Likewise.
11385         * tree-mudflap.c (pass_mudflap_1): Likewise.
11386         (pass_mudflap_2): Likewise.
11387         * tree-nomudflap.c (pass_mudflap_1): Likewise.
11388         (pass_mudflap_2): Likewise.
11389         * tree-nrv.c (pass_return_slot): Likewise.
11390         * tree-object-size.c (pass_object_sizes): Likewise.
11391         * tree-optimize.c (pass_all_optimizations): Likewise.
11392         (pass_early_local_passes): Likewise.
11393         (pass_all_early_optimizations): Likewise.
11394         (pass_cleanup_cfg): Likewise.
11395         (pass_cleanup_cfg_post_optimizing): Likewise.
11396         (pass_free_datastructures): Likewise.
11397         (pass_free_cfg_annotations): Likewise.
11398         (pass_fixup_cfg): Likewise.
11399         (pass_init_datastructures): Likewise.
11400         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
11401         (pass_late_warn_uninitialized): Likewise.
11402         (pass_update_address_taken): Likewise.
11403         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
11404         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
11405         (pass_cse_sincos): Likewise.
11406         (pass_convert_to_rsqrt): Likewise.
11407         * tree-ssa-structalias.c (pass_build_alias): Likewise.
11408         * tree-stdarg.c (pass_stdarg): Likewise.
11409         * tree-tailcall.c (pass_tail_recursion): Likewise.
11410         (pass_tail_calls): Likewise.
11411         * tree-vect-generic.c (pass_lower_vector): Likewise.
11412         (pass_lower_vector_ssa): Likewise.
11413         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
11414
11415 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
11416
11417         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
11418         XLR entry.
11419         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
11420         Handle -march=xlr.
11421         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
11422         logical and signext.
11423
11424 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
11425
11426         PR target/39767
11427         * config/sh/predicates.md (arith_operand): Check if the operand
11428         of TRUNCATE is a REG.
11429
11430 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11431
11432         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
11433         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
11434
11435 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11436
11437         * tree-iterator.c (tsi_split_statement_list_after,
11438         tsi_split_statement_list_before): Remove.
11439         * tree-iterator.h: Remove the prototypes for
11440         tsi_split_statement_list_after and tsi_split_statement_list_before.
11441
11442 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11443
11444         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
11445         * tree-ssa-propagate.h: Remove the prototype for
11446         stmt_makes_single_load.
11447
11448 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11449
11450         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
11451         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
11452
11453 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11454
11455         * tree-iterator.c (EXPR_LAST_BODY): Remove.
11456
11457 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11458
11459         * except.c (eh_region_outer_p): Remove.
11460         * except.h: Remove the prototype for eh_region_outer_p.
11461
11462 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
11463
11464         * function.c (current_function_assembler_name): Remove.
11465         * function.h: Remove the prototype for
11466         current_function_assembler_name.
11467
11468 2009-04-16  Ian Lance Taylor  <iant@google.com>
11469
11470         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
11471         (add_reg_note): Call alloc_reg_note.
11472         * rtl.h (alloc_reg_note): Declare.
11473         * combine.c (try_combine): Use alloc_reg_note.
11474         (recog_for_combine, move_deaths): Likewise.
11475         (distribute_notes): Use alloc_reg_note and add_reg_note.
11476         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
11477         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
11478         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
11479
11480 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
11481
11482         PR rtl-optimization/39762
11483         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
11484         ira_may_move_out_cost): Add comments about way of their usage.
11485         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
11486
11487         * ira-conflicts.c (process_regs_for_copy): Use function
11488         ira_get_register_move_cost instead of global
11489         ira_register_move_cost.
11490
11491         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
11492         color_pass, move_spill_restore, update_curr_costs): Ditto.
11493
11494         * ira-lives.c (process_single_reg_class_operands): Ditto.
11495
11496         * ira-emit.c (emit_move_list): Ditto.
11497
11498         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
11499         (record_reg_classes): Ditto.  Use functions
11500         ira_get_register_move_cost and ira_get_may_move_cost instead of
11501         global vars ira_register_move_cost, ira_may_move_out_cost and
11502         ira_may_move_in_cost.
11503         (record_address_regs): Don't call ira_init_register_move_cost.
11504         Use function ira_get_may_move_cost instead of global
11505         ira_may_move_in_cost.
11506         (process_bb_node_for_hard_reg_moves): Use function
11507         ira_get_register_move_cost instead of global ira_register_move_cost.
11508         (ira_costs): Don't call ira_init_register_move_cost.
11509
11510 2009-04-16  Richard Guenther  <rguenther@suse.de>
11511
11512         * tree-cfg.c (verify_gimple_assign_binary):
11513         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
11514         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
11515         (create_general_new_stmt): Note that this function is broken.
11516
11517 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
11518
11519         * common.opt (fhelp): Add Var(help_flag).
11520         * gcc-plugin.h (plugin_info): Add help.
11521         * plugin.c (plugin_name_args): Add help.
11522         (register_plugin_info): Set plugin->help.
11523         (print_help_one_plugin): New.
11524         (print_plugins_help): New.
11525         * plugin.h (print_plugins_help): New.
11526         * toplev.c (toplev_main): Call print_plugins_help if needed.
11527
11528 2009-04-16  Richard Guenther  <rguenther@suse.de>
11529
11530         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
11531         (gimple_ior_addresses_taken_1): New function.
11532         (gimple_ior_addresses_taken): Likewise.
11533         * gimple.h (struct gimple_statement_with_ops_base): Remove
11534         addresses_taken member.
11535         (gimple_ior_addresses_taken): Declare.
11536         (gimple_addresses_taken, gimple_addresses_taken_ptr,
11537         gimple_set_addresses_taken): Remove.
11538         * ipa-reference.c (mark_address): New function.
11539         (scan_stmt_for_static_refs): Use it for marking addresses taken.
11540         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
11541         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
11542         (gimple_add_to_addresses_taken): Remove.
11543         (get_tmr_operands): Call mark_address_taken.
11544         (get_asm_expr_operands): Likewise.
11545         (get_expr_operands): Likewise.
11546         (build_ssa_operands): Do not clear the addresses_taken bitmap.
11547         (free_stmt_operands): Do not free it.
11548         * tree-ssa.c (delete_tree_ssa): Likewise.
11549         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
11550
11551 2009-04-16  Richard Guenther  <rguenther@suse.de>
11552
11553         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
11554         (walk_stmt_load_store_ops): Likewise.
11555         * gimple.c (get_base_loadstore): New function.
11556         (walk_stmt_load_store_addr_ops): Likewise.
11557         (walk_stmt_load_store_ops): Likewise.
11558         * ipa-pure-const.c (check_op): Simplify.
11559         (check_load, check_store): New functions.
11560         (check_stmt): Use walk_stmt_load_store_ops.
11561         * ipa-reference.c (mark_load): Adjust signature.
11562         (mark_store): Likewise.
11563         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
11564
11565 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
11566
11567         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
11568         (plugin_info): New.
11569         * opts.c (common_handle_option): Don't call print_version.
11570         * plugin.c (plugin_name_args): Add version.
11571         (register_plugin_info): New.
11572         (register_callback): Handle PLUGIN_INFO.
11573         (try_init_one_plugin): New.
11574         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
11575         if failed to init.
11576         (finalize_one_plugin): New.
11577         (finalize_plugins): New.
11578         (print_one_plugin): New.
11579         (print_plugins_versions): New.
11580         * plugin.h (print_plugins_versions): New.
11581         (finalize_plugins): New.
11582         * toplev.c (compile_file): Don't call initialize_plugins.
11583         (print_version): Call print_plugins_versions.
11584         (toplev_main): Call initialize_plugins. Print version if needed.
11585         Call finalize_plugins.
11586
11587 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
11588
11589         * common.opt (fversion): New.
11590         * gcc.c (print_version): New.
11591         (process_command): Don't print the version. Just set print_version.
11592         (main): Print version. Call subprocesses if print_version and
11593         verbose_flag are set.
11594         * opts.c (common_handle_option): Handle OPT_fversion.
11595
11596 2009-04-16  Richard Guenther  <rguenther@suse.de>
11597             Ira Rosen  <irar@il.ibm.com>
11598
11599         PR tree-optimization/39698
11600         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
11601         type of the reduction variable.  Only generate the def if
11602         it is needed.
11603
11604         * omp-low.c (expand_omp_for_generic): When converting to a pointer
11605         make sure to first convert to an integer of the same precision.
11606         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
11607         the type of the evolution correctly in computing the new
11608         induction variable base.
11609
11610 2009-04-16  Richard Guenther  <rguenther@suse.de>
11611
11612         PR middle-end/39625
11613         * tree-cfg.c (make_blocks): Split statements with to-be
11614         abnormal SSA names on the lhs.
11615
11616 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
11617
11618         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
11619         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
11620         * c-typeck.c (really_start_incremental_init): Likewise.
11621         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
11622         (TARGET_INITIALIZER): Remove it.
11623         * target.h (struct target): Remove vector_opaque_p.
11624         * tree.c (build_opaque_vector_type): New.
11625         * tree.h (TYPE_VECTOR_OPAQUE): New.
11626         (build_opaque_vector_type): Declare.
11627         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
11628         * config/rs6000/rs6000.c (build_opaque_vector_type,
11629         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
11630         (rs6000_init_builtins): Use build_opaque_vector_type for
11631         opaque_V4SI_type_node.
11632
11633 2009-04-15  Catherine Moore  <clm@codesourcery.com>
11634
11635         * debug.h (set_name):  Declare.
11636         * dwarf2out.c (dwarf2out_set_name): Declare.
11637         (dwarf2_debug_hooks): Add set_name.
11638         (find_AT_string): New.
11639         (add_AT_string): Call find_AT_string.
11640         (dwarf2out_set_name): New.
11641         * cp/decl.c (grokdeclarator): Call set_name.
11642         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
11643         * debug.c (do_nothing_debug_hooks):  Likewise.
11644         * dbxout.c (dbx_debug_hooks): Likewise.
11645         * sdbout.c (sdb_debug_hooks): Likewise.
11646
11647 2009-04-15  Michael Eager  <eager@eagercon.com>
11648
11649         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
11650         reg for single-precision FPU.
11651         * config/rs6000/rs6000.md (movsi_internal1): Only for
11652         !TARGET_SINGLE_FPU.
11653         (movsi_internal1_single): New. Add pattern to move SI values to/from
11654         single-precision FP regs.
11655
11656 2009-04-15  Richard Guenther  <rguenther@suse.de>
11657
11658         * omp-low.c (lower_rec_input_clauses): Build correct address
11659         expressions.
11660         (expand_omp_for_generic): Fix multiplication type.
11661         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
11662         (generate_memset_zero): Fix types.
11663         * tree-profile.c (prepare_instrumented_value): Correctly
11664         widen a pointer.
11665
11666 2009-04-15  Ian Lance Taylor  <iant@google.com>
11667
11668         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
11669         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
11670         for -Wall and for -Wc++-compat.
11671         (c_common_post_options): For C++, set warn_enum_compare if not
11672         already set.
11673         * c-tree.h (struct c_expr): Add field original_type.
11674         (build_external_ref): Update declaration.
11675         * c-parser.c (c_parser_braced_init): Set original_type.
11676         (c_parser_initelt): Likewise.
11677         (c_parser_expr_no_commas): Likewise.
11678         (c_parser_conditional_expression): Likewise.
11679         (c_parser_cast_expression): Likewise.
11680         (c_parser_unary_expression): Likewise.  Pull setting of
11681         original_code to top of function.
11682         (c_parser_sizeof_expression): Set original_type.
11683         (c_parser_alignof_expression): Likewise.
11684         (c_parser_postfix_expression): Likewise.  Pull setting of
11685         original_code to top of function.
11686         (c_parser_postfix_expression_after_paren_type): Set original_type.
11687         (c_parser_postfix_expression_after_primary): Likewise.
11688         (c_parser_expression): Likewise.
11689         * c-typeck.c (build_external_ref): Add type parameter.  Change all
11690         callers.
11691         (c_expr_sizeof_expr): Set original_type field.
11692         (parser_build_unary_op): Likewise.
11693         (parser_build_binary_op): Likewise.  Optionally warn about
11694         comparisons of enums of different types.
11695         (digest_init): Set original_type field.
11696         (really_start_incremental_init): Likewise.
11697         (push_init_level, pop_init_level): Likewise.
11698         * doc/invoke.texi (Warning Options): -Wenum-compare now
11699         supported in C.
11700
11701 2009-04-15  Richard Guenther  <rguenther@suse.de>
11702
11703         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
11704         out a necessary conversion.
11705         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
11706         names we didn't value number.
11707         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
11708
11709 2009-04-15  Richard Guenther  <rguenther@suse.de>
11710
11711         PR tree-optimization/39764
11712         * tree-ssa-ccp.c (get_value): Canonicalize value with
11713         canonicalize_float_value.
11714
11715 2009-04-15  Jan Hubicka  <jh@suse.cz>
11716
11717         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
11718         Wrong version of patch.
11719
11720 2009-04-15  Jan Hubicka  <jh@suse.cz>
11721
11722         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
11723
11724 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
11725
11726         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
11727         our distinct integral and vector types.
11728
11729 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
11730
11731         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
11732         * init.c (build_vtbl_address): Remove call to assemble_external.
11733
11734 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
11735
11736         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
11737         output for other floating point modes.
11738
11739 2009-04-14  Diego Novillo  <dnovillo@google.com>
11740
11741         * diagnostic.c (diagnostic_report_diagnostic): Do not
11742         warn about loaded plugins for DK_ERROR and DK_WARNING.
11743         * c-decl.c (declspecs_add_type): Move call to
11744         invoke_plugin_callbacks ...
11745         * c-parser.c (c_parser_declspecs): ... here.
11746         * plugin.c (dump_active_plugins): Tidy output.
11747
11748 2009-04-14  Diego Novillo  <dnovillo@google.com>
11749             Le-Chun Wu  <lcwu@google.com>
11750
11751         * configure.ac: Add --enable-plugin support.
11752         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
11753         * Makefile.in (PLUGIN_H): Define.
11754         Export ENABLE_PLUGIN and GMPINC to site.exp.
11755         Add PLUGINLIBS to link command.
11756         Add/modify dependencies for plugin.o and files including plugin.h.
11757         (plugin.o): New.
11758         * config.in: Regenerate.
11759
11760         * opts.c (common_handle_option): Handle OPT_fplugin_ and
11761         OPT_fplugin_arg_.
11762
11763 2009-04-14  Le-Chun Wu  <lcwu@google.com>
11764
11765         * tree-pass.h (register_one_dump_file): Add a prototype for
11766         register_one_dump_file.
11767         * toplev.c (compile_file): Call initialize_plugins.
11768         (do_compile): Call invoke_plugin_callbacks.
11769         (toplev_main): Call invoke_plugin_callbacks.
11770         * common.opt: Add -fplugin= and -fplugin-arg-.
11771         * gcc-plugin.h: New public header file for plugins to include.
11772         * plugin.c: New source file.
11773         * plugin.h: New internal header file.
11774         * passes.c (register_one_dump_file): Make it external.
11775
11776         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
11777
11778 2009-04-14  Diego Novillo  <dnovillo@google.com>
11779
11780         * doc/plugins.texi: New.
11781         * doc/gccint.texi: Add reference to Plugins chapter.
11782         * doc/invoke.texi: Document -fplugin and -fplugin-arg
11783         * diagnostic.c (diagnostic_report_diagnostic): Warn about
11784         loaded plugins, if any.
11785         * timevar.def (TV_PLUGIN_INIT): Define.
11786         (TV_PLUGIN_RUN): Define.
11787         * plugin.c: Include timevar.h
11788         (plugins_active_p): New.
11789         (dump_active_plugins): New.
11790         (debug_active_plugins): New.
11791
11792 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
11793
11794         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
11795         library paths.
11796         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
11797
11798 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
11799
11800         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
11801         the same as a minus without a shift.
11802
11803 2009-04-14  Nick Clifton  <nickc@redhat.com>
11804
11805         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
11806         comparisons with small integers will always produce a short
11807         branch.
11808
11809 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
11810
11811         Merge:
11812         2008-12-19  Diego Novillo  <dnovillo@google.com>
11813
11814         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
11815
11816 2009-04-14  Richard Guenther  <rguenther@suse.de>
11817
11818         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
11819         verification.
11820         (verify_gimple_assign_binary): Likewise.  Handle shifts and
11821         rotates correctly.
11822         (verify_gimple_phi): Print the mismatched argument position.
11823         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
11824         Fix types.
11825         (vect_update_init_of_dr): Likewise.
11826         * matrix-reorg.c (transform_access_sites): Do what the
11827         comment suggests.
11828         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
11829
11830 2009-04-13  Michael Eager  <eager@eagercon.com>
11831
11832         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
11833         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
11834         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
11835         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
11836         remove duplicate config
11837
11838 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11839
11840         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
11841         file_name:line_number type locator of the call site.
11842
11843 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
11844
11845         * genautomata.c: Put blank after comma.
11846         (automaton_decls): New.
11847         (struct unit_usage): Add comments to member next.
11848         (store_alt_unit_usage): Keep the list ordered.
11849         (unit_present_on_list_p, equal_alternatives_p): New.
11850         (check_regexp_units_distribution): Check units distribution
11851         correctness correctly.
11852         (main): Don't write automata if error is found.  Return correct
11853         exit code.
11854
11855         * config/m68k/cf.md (cfv4_ds): Remove.
11856         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
11857         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
11858
11859         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
11860         power4-load-ext, power4-store, power4-store-update,
11861         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
11862         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
11863         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
11864         power4-sqrt, power4-isync): Modify reservation to make correct
11865         unit distribution to automata.
11866
11867         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
11868         power5-store-update, power5-two, power5-three, power5-lmul,
11869         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
11870
11871 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
11872
11873         * except.c (pass_set_nothrow_function_flags): Set name and add
11874         TODO_dump_func.
11875         (set_nothrow_function_flags): Mention in the dump file when
11876         changing a function to nothrow.
11877
11878 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
11879
11880         PR/39066
11881         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
11882         instead of unsigned long.
11883
11884 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
11885
11886         * config/arm/arm.c (return_used_this_function): Remove.
11887         (arm_output_function_prologue): Remove use of
11888         return_used_this_function.
11889         (output_return_instruction): Replace use of
11890         return_used_this_function
11891         by cfun->machine->return_used_this_function.
11892         (arm_output_epilogue): Likewise.
11893         (arm_output_function_epilogue): Likewise.
11894         (thumb_unexpanded_epilogue): Likewise.
11895         * config/arm/arm.h (struct machine_function):
11896         New member return_used_this_function.
11897
11898 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
11899
11900         * doc/install.texi: Correct description of default directory for
11901         --with-gxx-include-dir.
11902
11903 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
11904
11905         * fold-const.c (build_range_check): Properly deal with enumeral and
11906         boolean base types.
11907
11908 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
11909
11910         * doc/invoke.texi (max_gcse_passes): Remove documentation.
11911         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
11912         * params.h (MAX_GCSE_PASSES): Remove.
11913         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
11914         in sequence.  Remove ability to run multiple passes.
11915         (bypass_jumps): Report run as third CPROP pass.
11916
11917 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
11918
11919         PR middle-end/39651
11920         * except.c (can_throw_external): Look at each insn in a SEQUENCE
11921         when deciding whether the whole SEQUENCE can throw.
11922
11923 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
11924
11925         PR target/39740
11926         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
11927         offseted label references.
11928
11929 2009-04-11  Jan Hubicka  <jh@suse.cz>
11930
11931         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
11932
11933 2009-04-11  Richard Guenther  <rguenther@suse.de>
11934
11935         PR middle-end/39732
11936         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
11937         return variables as TREE_ADDRESSABLE.
11938
11939 2009-04-11  Richard Guenther  <rguenther@suse.de>
11940
11941         PR tree-optimization/39713
11942         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
11943         reference trees have SSA_NAME operands.
11944
11945 2009-04-11  Richard Guenther  <rguenther@suse.de>
11946
11947         PR c/39712
11948         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
11949         address expressions.
11950
11951 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
11952
11953         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
11954         match changes in Cygwin 1.7
11955         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
11956         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
11957
11958 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
11959
11960         PR tree-optimization/39701
11961         * doc/invoke.texi (Optimization Options): Document change in
11962         meaning and initialization of -fdelete-null-pointer-checks.
11963
11964 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
11965
11966         PR middle-end/39701
11967         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
11968
11969         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
11970         here.
11971
11972         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
11973
11974 2009-04-10  Chao-ying Fu  <fu@mips.com>
11975
11976         * doc/tm.texi (Instruction Output): Document
11977         TARGET_ASM_FINAL_POSTSCAN_INSN.
11978         * target.h (final_postscan_insn): New field in asm_out.
11979         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
11980         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
11981         * final.c (final_scan_insn): Call
11982         targetm.asm_out.final_postscan_insn after outputting
11983         an asm macro and a normal instruction.
11984
11985         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
11986         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
11987         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
11988         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
11989         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
11990
11991 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
11992
11993         PR middle-end/39701
11994         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
11995         variables as non-NULL even with -fdelete-null-pointer-checks.
11996
11997 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
11998
11999         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
12000
12001 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
12002
12003         PR target/39678
12004         * config/i386/i386.c (classify_argument): Handle SCmode with
12005         (bit_offset % 64) != 0.
12006
12007 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
12008
12009         * doc/invoke.texi (Optimize Options): Add cross-reference to
12010         -Q --help=optimizers examples.
12011
12012 2009-04-10  Ben Elliston  <bje@au.ibm.com>
12013
12014         PR target/36800
12015         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
12016         regalign for the reg == fpr and TDmode case.
12017
12018 2009-04-09  David Ayers  <ayers@fsfe.org>
12019
12020         PR objc/29200
12021         * objc/objc-act.c (warn_with_method): Remove helper function.
12022         (check_duplicates): Call warning and inform directly.
12023         (really_start_method): Likewise.
12024
12025 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
12026
12027         * expmed.c (expand_divmod): Always use a comparison for a division
12028         by a large unsigned integer.
12029
12030         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
12031         for things others than variables or functions as nonzero.
12032
12033 2009-04-09  Nick Clifton  <nickc@redhat.com>
12034
12035         * unwind-compat.c: Change copyright header to refer to version
12036         3 of the GNU General Public License with version 3.1 of the
12037         GCC Runtime Library Exception and to point readers at the
12038         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
12039         * config/alpha/crtfastmath.c: Likewise.
12040         * config/alpha/linux-unwind.h: Likewise.
12041         * config/alpha/qrnnd.asm: Likewise.
12042         * config/alpha/vms-crt0-64.c: Likewise.
12043         * config/alpha/vms-crt0.c: Likewise.
12044         * config/alpha/vms-dwarf2.asm: Likewise.
12045         * config/alpha/vms-dwarf2eh.asm: Likewise.
12046         * config/alpha/vms-psxcrt0-64.c: Likewise.
12047         * config/alpha/vms-psxcrt0.c: Likewise.
12048         * config/alpha/vms_tramp.asm: Likewise.
12049         * config/arc/initfini.c: Likewise.
12050         * config/arc/lib1funcs.asm: Likewise.
12051         * config/arm/bpabi-v6m.S: Likewise.
12052         * config/arm/bpabi.S: Likewise.
12053         * config/arm/bpabi.c: Likewise.
12054         * config/arm/crti.asm: Likewise.
12055         * config/arm/crtn.asm: Likewise.
12056         * config/arm/ieee754-df.S: Likewise.
12057         * config/arm/ieee754-sf.S: Likewise.
12058         * config/arm/lib1funcs.asm: Likewise.
12059         * config/arm/libunwind.S: Likewise.
12060         * config/arm/linux-atomic.c: Likewise.
12061         * config/arm/mmintrin.h: Likewise.
12062         * config/arm/pr-support.c: Likewise.
12063         * config/arm/unaligned-funcs.c: Likewise.
12064         * config/arm/unwind-arm.c: Likewise.
12065         * config/arm/unwind-arm.h: Likewise.
12066         * config/avr/libgcc.S: Likewise.
12067         * config/bfin/crti.s: Likewise.
12068         * config/bfin/crtlibid.s: Likewise.
12069         * config/bfin/crtn.s: Likewise.
12070         * config/bfin/lib1funcs.asm: Likewise.
12071         * config/bfin/linux-unwind.h: Likewise.
12072         * config/cris/arit.c: Likewise.
12073         * config/cris/cris_abi_symbol.c: Likewise.
12074         * config/darwin-64.c: Likewise.
12075         * config/darwin-crt2.c: Likewise.
12076         * config/darwin-crt3.c: Likewise.
12077         * config/darwin.h: Likewise.
12078         * config/dbxelf.h: Likewise.
12079         * config/dfp-bit.c: Likewise.
12080         * config/dfp-bit.h: Likewise.
12081         * config/elfos.h: Likewise.
12082         * config/fixed-bit.c: Likewise.
12083         * config/fixed-bit.h: Likewise.
12084         * config/fp-bit.c: Likewise.
12085         * config/fp-bit.h: Likewise.
12086         * config/fr30/crti.asm: Likewise.
12087         * config/fr30/crtn.asm: Likewise.
12088         * config/fr30/lib1funcs.asm: Likewise.
12089         * config/freebsd-spec.h: Likewise.
12090         * config/frv/cmovd.c: Likewise.
12091         * config/frv/cmovh.c: Likewise.
12092         * config/frv/cmovw.c: Likewise.
12093         * config/frv/frvbegin.c: Likewise.
12094         * config/frv/frvend.c: Likewise.
12095         * config/frv/lib1funcs.asm: Likewise.
12096         * config/glibc-stdint.h: Likewise.
12097         * config/h8300/clzhi2.c: Likewise.
12098         * config/h8300/crti.asm: Likewise.
12099         * config/h8300/crtn.asm: Likewise.
12100         * config/h8300/ctzhi2.c: Likewise.
12101         * config/h8300/fixunssfsi.c: Likewise.
12102         * config/h8300/lib1funcs.asm: Likewise.
12103         * config/h8300/parityhi2.c: Likewise.
12104         * config/h8300/popcounthi2.c: Likewise.
12105         * config/i386/ammintrin.h: Likewise.
12106         * config/i386/att.h: Likewise.
12107         * config/i386/avxintrin.h: Likewise.
12108         * config/i386/biarch64.h: Likewise.
12109         * config/i386/bmmintrin.h: Likewise.
12110         * config/i386/cpuid.h: Likewise.
12111         * config/i386/cross-stdarg.h: Likewise.
12112         * config/i386/crtfastmath.c: Likewise.
12113         * config/i386/crtprec.c: Likewise.
12114         * config/i386/cygming-crtbegin.c: Likewise.
12115         * config/i386/cygming-crtend.c: Likewise.
12116         * config/i386/cygwin.asm: Likewise.
12117         * config/i386/emmintrin.h: Likewise.
12118         * config/i386/gmm_malloc.h: Likewise.
12119         * config/i386/gthr-win32.c: Likewise.
12120         * config/i386/i386.h: Likewise.
12121         * config/i386/immintrin.h: Likewise.
12122         * config/i386/linux-unwind.h: Likewise.
12123         * config/i386/linux64.h: Likewise.
12124         * config/i386/mm3dnow.h: Likewise.
12125         * config/i386/mmintrin-common.h: Likewise.
12126         * config/i386/mmintrin.h: Likewise.
12127         * config/i386/nmmintrin.h: Likewise.
12128         * config/i386/pmm_malloc.h: Likewise.
12129         * config/i386/pmmintrin.h: Likewise.
12130         * config/i386/smmintrin.h: Likewise.
12131         * config/i386/sol2-c1.asm: Likewise.
12132         * config/i386/sol2-ci.asm: Likewise.
12133         * config/i386/sol2-cn.asm: Likewise.
12134         * config/i386/sol2-gc1.asm: Likewise.
12135         * config/i386/tmmintrin.h: Likewise.
12136         * config/i386/unix.h: Likewise.
12137         * config/i386/w32-unwind.h: Likewise.
12138         * config/i386/wmmintrin.h: Likewise.
12139         * config/i386/x86-64.h: Likewise.
12140         * config/i386/x86intrin.h: Likewise.
12141         * config/i386/xmmintrin.h: Likewise.
12142         * config/ia64/crtbegin.asm: Likewise.
12143         * config/ia64/crtend.asm: Likewise.
12144         * config/ia64/crtfastmath.c: Likewise.
12145         * config/ia64/crti.asm: Likewise.
12146         * config/ia64/crtn.asm: Likewise.
12147         * config/ia64/fde-glibc.c: Likewise.
12148         * config/ia64/lib1funcs.asm: Likewise.
12149         * config/ia64/linux-unwind.h: Likewise.
12150         * config/ia64/quadlib.c: Likewise.
12151         * config/ia64/unwind-ia64.c: Likewise.
12152         * config/linux.h: Likewise.
12153         * config/m32c/m32c-lib1.S: Likewise.
12154         * config/m32c/m32c-lib2-trapv.c: Likewise.
12155         * config/m32c/m32c-lib2.c: Likewise.
12156         * config/m32r/initfini.c: Likewise.
12157         * config/m68hc11/larith.asm: Likewise.
12158         * config/m68hc11/m68hc11-crt0.S: Likewise.
12159         * config/m68k/cf.md: Likewise.
12160         * config/m68k/crti.s: Likewise.
12161         * config/m68k/crtn.s: Likewise.
12162         * config/m68k/lb1sf68.asm: Likewise.
12163         * config/m68k/linux-unwind.h: Likewise.
12164         * config/mcore/crti.asm: Likewise.
12165         * config/mcore/crtn.asm: Likewise.
12166         * config/mcore/lib1.asm: Likewise.
12167         * config/mips/linux-unwind.h: Likewise.
12168         * config/mips/loongson.h: Likewise.
12169         * config/mips/mips16.S: Likewise.
12170         * config/mmix/crti.asm: Likewise.
12171         * config/mmix/crtn.asm: Likewise.
12172         * config/pa/fptr.c: Likewise.
12173         * config/pa/hpux-unwind.h: Likewise.
12174         * config/pa/lib2funcs.asm: Likewise.
12175         * config/pa/linux-atomic.c: Likewise.
12176         * config/pa/linux-unwind.h: Likewise.
12177         * config/pa/milli64.S: Likewise.
12178         * config/pa/quadlib.c: Likewise.
12179         * config/pa/stublib.c: Likewise.
12180         * config/picochip/libgccExtras/adddi3.asm: Likewise.
12181         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
12182         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
12183         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
12184         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
12185         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
12186         * config/picochip/libgccExtras/divmod15.asm: Likewise.
12187         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
12188         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
12189         * config/picochip/libgccExtras/longjmp.asm: Likewise.
12190         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
12191         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
12192         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
12193         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
12194         * config/picochip/libgccExtras/setjmp.asm: Likewise.
12195         * config/picochip/libgccExtras/subdi3.asm: Likewise.
12196         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
12197         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
12198         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
12199         * config/rs6000/750cl.h: Likewise.
12200         * config/rs6000/altivec.h: Likewise.
12201         * config/rs6000/biarch64.h: Likewise.
12202         * config/rs6000/crtresfpr.asm: Likewise.
12203         * config/rs6000/crtresgpr.asm: Likewise.
12204         * config/rs6000/crtresxfpr.asm: Likewise.
12205         * config/rs6000/crtresxgpr.asm: Likewise.
12206         * config/rs6000/crtsavfpr.asm: Likewise.
12207         * config/rs6000/crtsavgpr.asm: Likewise.
12208         * config/rs6000/darwin-asm.h: Likewise.
12209         * config/rs6000/darwin-fallback.c: Likewise.
12210         * config/rs6000/darwin-fpsave.asm: Likewise.
12211         * config/rs6000/darwin-ldouble.c: Likewise.
12212         * config/rs6000/darwin-tramp.asm: Likewise.
12213         * config/rs6000/darwin-unwind.h: Likewise.
12214         * config/rs6000/darwin-vecsave.asm: Likewise.
12215         * config/rs6000/darwin-world.asm: Likewise.
12216         * config/rs6000/e500crtres32gpr.asm: Likewise.
12217         * config/rs6000/e500crtres64gpr.asm: Likewise.
12218         * config/rs6000/e500crtres64gprctr.asm: Likewise.
12219         * config/rs6000/e500crtrest32gpr.asm: Likewise.
12220         * config/rs6000/e500crtrest64gpr.asm: Likewise.
12221         * config/rs6000/e500crtresx32gpr.asm: Likewise.
12222         * config/rs6000/e500crtresx64gpr.asm: Likewise.
12223         * config/rs6000/e500crtsav32gpr.asm: Likewise.
12224         * config/rs6000/e500crtsav64gpr.asm: Likewise.
12225         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
12226         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
12227         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
12228         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
12229         * config/rs6000/eabi-ci.asm: Likewise.
12230         * config/rs6000/eabi-cn.asm: Likewise.
12231         * config/rs6000/eabi.asm: Likewise.
12232         * config/rs6000/linux-unwind.h: Likewise.
12233         * config/rs6000/linux64.h: Likewise.
12234         * config/rs6000/paired.h: Likewise.
12235         * config/rs6000/paired.md: Likewise.
12236         * config/rs6000/ppc64-fp.c: Likewise.
12237         * config/rs6000/ppu_intrinsics.h: Likewise.
12238         * config/rs6000/rs6000.h: Likewise.
12239         * config/rs6000/si2vmx.h: Likewise.
12240         * config/rs6000/sol-ci.asm: Likewise.
12241         * config/rs6000/sol-cn.asm: Likewise.
12242         * config/rs6000/spe.h: Likewise.
12243         * config/rs6000/spu2vmx.h: Likewise.
12244         * config/rs6000/sysv4.h: Likewise.
12245         * config/rs6000/tramp.asm: Likewise.
12246         * config/rs6000/vec_types.h: Likewise.
12247         * config/s390/linux-unwind.h: Likewise.
12248         * config/s390/tpf-unwind.h: Likewise.
12249         * config/score/crti.asm: Likewise.
12250         * config/score/crtn.asm: Likewise.
12251         * config/sh/crt1.asm: Likewise.
12252         * config/sh/crti.asm: Likewise.
12253         * config/sh/crtn.asm: Likewise.
12254         * config/sh/divtab-sh4-300.c: Likewise.
12255         * config/sh/divtab-sh4.c: Likewise.
12256         * config/sh/divtab.c: Likewise.
12257         * config/sh/lib1funcs-4-300.asm: Likewise.
12258         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
12259         * config/sh/lib1funcs.asm: Likewise.
12260         * config/sh/lib1funcs.h: Likewise.
12261         * config/sh/linux-atomic.asm: Likewise.
12262         * config/sh/linux-unwind.h: Likewise.
12263         * config/sh/shmedia.h: Likewise.
12264         * config/sh/sshmedia.h: Likewise.
12265         * config/sh/ushmedia.h: Likewise.
12266         * config/sparc/crtfastmath.c: Likewise.
12267         * config/sparc/linux-unwind.h: Likewise.
12268         * config/sparc/sol2-c1.asm: Likewise.
12269         * config/sparc/sol2-ci.asm: Likewise.
12270         * config/sparc/sol2-cn.asm: Likewise.
12271         * config/spu/divmodti4.c: Likewise.
12272         * config/spu/divv2df3.c: Likewise.
12273         * config/spu/float_disf.c: Likewise.
12274         * config/spu/float_unsdidf.c: Likewise.
12275         * config/spu/float_unsdisf.c: Likewise.
12276         * config/spu/float_unssidf.c: Likewise.
12277         * config/spu/mfc_multi_tag_release.c: Likewise.
12278         * config/spu/mfc_multi_tag_reserve.c: Likewise.
12279         * config/spu/mfc_tag_release.c: Likewise.
12280         * config/spu/mfc_tag_reserve.c: Likewise.
12281         * config/spu/mfc_tag_table.c: Likewise.
12282         * config/spu/multi3.c: Likewise.
12283         * config/spu/spu_internals.h: Likewise.
12284         * config/spu/spu_intrinsics.h: Likewise.
12285         * config/spu/spu_mfcio.h: Likewise.
12286         * config/spu/vec_types.h: Likewise.
12287         * config/spu/vmx2spu.h: Likewise.
12288         * config/stormy16/stormy16-lib2.c: Likewise.
12289         * config/svr4.h: Likewise.
12290         * config/sync.c: Likewise.
12291         * config/v850/lib1funcs.asm: Likewise.
12292         * config/vxlib-tls.c: Likewise.
12293         * config/vxlib.c: Likewise.
12294         * config/vxworks-dummy.h: Likewise.
12295         * config/xtensa/crti.asm: Likewise.
12296         * config/xtensa/crtn.asm: Likewise.
12297         * config/xtensa/ieee754-df.S: Likewise.
12298         * config/xtensa/ieee754-sf.S: Likewise.
12299         * config/xtensa/lib1funcs.asm: Likewise.
12300         * config/xtensa/lib2funcs.S: Likewise.
12301         * config/xtensa/linux-unwind.h: Likewise.
12302         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
12303         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
12304         * coretypes.h: Likewise.
12305         * crtstuff.c: Likewise.
12306         * defaults.h: Likewise.
12307         * dwarf2.h: Likewise.
12308         * emutls.c: Likewise.
12309         * gbl-ctors.h: Likewise.
12310         * gcov-io.h: Likewise.
12311         * ginclude/float.h: Likewise.
12312         * ginclude/iso646.h: Likewise.
12313         * ginclude/stdarg.h: Likewise.
12314         * ginclude/stdbool.h: Likewise.
12315         * ginclude/stddef.h: Likewise.
12316         * ginclude/stdfix.h: Likewise.
12317         * ginclude/stdint-gcc.h: Likewise.
12318         * ginclude/tgmath.h: Likewise.
12319         * gthr-aix.h: Likewise.
12320         * gthr-dce.h: Likewise.
12321         * gthr-gnat.c: Likewise.
12322         * gthr-gnat.h: Likewise.
12323         * gthr-lynx.h: Likewise.
12324         * gthr-mipssde.h: Likewise.
12325         * gthr-nks.h: Likewise.
12326         * gthr-posix.c: Likewise.
12327         * gthr-posix.h: Likewise.
12328         * gthr-posix95.h: Likewise.
12329         * gthr-rtems.h: Likewise.
12330         * gthr-single.h: Likewise.
12331         * gthr-solaris.h: Likewise.
12332         * gthr-tpf.h: Likewise.
12333         * gthr-vxworks.h: Likewise.
12334         * gthr-win32.h: Likewise.
12335         * gthr.h: Likewise.
12336         * libgcc2.c: Likewise.
12337         * libgcc2.h: Likewise.
12338         * libgcov.c: Likewise.
12339         * tsystem.h: Likewise.
12340         * typeclass.h: Likewise.
12341         * unwind-c.c: Likewise.
12342         * unwind-compat.h: Likewise.
12343         * unwind-dw2-fde-compat.c: Likewise.
12344         * unwind-dw2-fde-darwin.c: Likewise.
12345         * unwind-dw2-fde-glibc.c: Likewise.
12346         * unwind-dw2-fde.c: Likewise.
12347         * unwind-dw2-fde.h: Likewise.
12348         * unwind-dw2.c: Likewise.
12349         * unwind-dw2.h: Likewise.
12350         * unwind-generic.h: Likewise.
12351         * unwind-pe.h: Likewise.
12352         * unwind-sjlj.c: Likewise.
12353         * unwind.inc: Likewise.
12354         * config/arm/neon-gen.ml: Change generated copyright header to
12355         refer to version 3 of the GNU General Public License with
12356         version 3.1 of the GCC Runtime Library Exception and to point
12357         readers at the COPYING3 and COPYING3.RUNTIME files and the
12358         FSF's license web page.
12359         * config/arm/arm_neon.h: Regenerate.
12360
12361 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
12362
12363         * config/cris/cris.md: Change copyright header to refer to version
12364         3 of the GNU General Public License.
12365         * doc/install.texi2html: Change copyright header to refer to version
12366         3 of the GNU General Public License and to point readers at the
12367         COPYING3 file and the FSF's license web page.
12368         * config/vax/linux.h: Likewise.
12369
12370 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
12371
12372         * config/i386/i386.md (cmpcc): New.
12373         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
12374         (sync_compare_and_swap_cc*): Delete.
12375
12376         * config/s390/s390.c (s390_compare_emitted): Remove.
12377         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
12378         s390_compare_emitted used to be handled.  Assert that modes match.
12379         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
12380         refer to sync_compare_and_swap_ccsi.
12381         * config/s390/s390.h (s390_compare_emitted): Remove.
12382         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
12383         instead of s390_compare_emitted.
12384         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
12385         instead of s390_compare_emitted.
12386         * config/s390/s390.md (cmpcc): New.
12387         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
12388         CC_REGNUM, do not pretend it's set.
12389         (sync_compare_and_swap_cc*): Delete.
12390         * config/s390/predicates.md (cc_reg_operand): New.
12391
12392         * expr.c (sync_compare_and_swap_cc): Delete.
12393         * optabs.h (sync_compare_and_swap_cc): Delete.
12394         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
12395         is being used with can_compare_p.
12396         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
12397         (find_cc_set): New.
12398         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
12399         look for a MODE_CC set instead.  Use emit_store_flag.
12400         (expand_compare_and_swap_loop): Likewise, with some additional
12401         complication to avoid a force_reg when useless.  Use
12402         emit_cmp_and_jump_insns.
12403         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
12404         * doc/md.texi (sync_compare_and_swap_cc): Merge with
12405         sync_compare_and_swap documentation.
12406
12407 2009-04-09  Jan Hubicka  <jh@suse.cz>
12408
12409         * except.c (find_prev_try): Break out from ....
12410         (duplicate_eh_regions): ... here; properly update prev_try pointers
12411         when duplication part of tree.
12412         (dump_eh_tree): Improve dumping.
12413         (verify_eh_region): New.
12414         (verify_eh_tree): Use it.
12415
12416 2009-04-06  Richard Guenther  <rguenther@suse.de>
12417
12418         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
12419         &ARRAY addresses by adjusting their types and prepending
12420         a conversion.
12421         * tree-cfg.c (verify_gimple_assign_single): Verify that
12422         addresses are correct.
12423
12424 2009-04-09  Richard Guenther  <rguenther@suse.de>
12425
12426         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
12427         indices into an array reference if possible.
12428         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
12429         Fold POINTER_PLUS_EXPR statements with invariant address.
12430
12431 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
12432
12433         PR target/39634
12434         * config.gcc (powerpc64-*-linux*): Always build biarch.
12435
12436 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
12437
12438         PR c/39613
12439         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
12440         it and pedwarn if this results in an INTEGER_CST.
12441
12442 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12443
12444         * doc/install.texi: Update minimum GMP version.  Remove obsolete
12445         text in MPFR section.
12446
12447 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
12448
12449         * dwarf2out.c (class_scope_p): New static inline.
12450         (class_or_namespace_scope_p): Use it.
12451         (gen_variable_die): Use DW_TAG_member tag for static data member
12452         declarations instead of DW_TAG_variable.
12453
12454         PR middle-end/39573
12455         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
12456         variables.
12457
12458 2009-04-08  Richard Guenther  <rguenther@suse.de>
12459
12460         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
12461         valueize random data.
12462
12463 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
12464
12465         * config.gcc (aix tm_file):  Add aix-stdint.h.
12466         (aix tm clause use_gcc_stdint):  Set to wrap.
12467         * config/rs6000/aix-stdint.h:  New file.
12468
12469 2009-04-08  Richard Guenther  <rguenther@suse.de>
12470
12471         PR middle-end/36291
12472         * tree-dfa.c (add_referenced_var): Do not recurse into
12473         global initializers.
12474         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
12475         exposed variables.
12476         (fold_const_aggregate_ref): Likewise.
12477
12478 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
12479
12480         * recog.c (ordered_comparison_operator): New.
12481         * gensupport.c (std_preds): Add it.
12482         * doc/md.texi (Machine-Independent Predicates): Document it.
12483
12484 2009-04-08  Jan Hubicka  <jh@suse.cz>
12485
12486         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
12487         * function.h (rtl_eh): Remove exception_handler_label_map.
12488         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
12489         remove_exception_handler_label, for_each_eh_label_1): Remove.
12490         (rtl_remove_unreachable_regions): Remove.
12491         (convert_from_eh_region_ranges): Do not remove unreachable regions.
12492         (find_exception_handler_labels): Don't build the hashtable.
12493         (maybe_remove_eh_handler): Remove.
12494         (for_each_eh_label): Rewrite to walk the tree.
12495         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
12496         * except.h (maybe_remove_eh_handler): Remove.
12497         * passes.c (init_optimization_passes): Schedule second EH cleanup
12498         before out-of-ssa.
12499         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
12500         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
12501
12502 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
12503
12504         * genoutput.c (validate_optab_operands): New.
12505         (gen_insn, gen_expand): Call it.
12506
12507         * genflags.c (gen_insn): Detect misused iterators.
12508         (main): Pass line_no to gen_insn, exit with status 1 on error.
12509
12510         * genextract.c (line_no): Make global.
12511         (VEC_safe_set_locstr): Change assertion to error message.
12512         (main): Exit with status 1 on error.
12513
12514 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
12515
12516         PR c/39614
12517         PR c/39673
12518         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
12519         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
12520         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
12521         * c-convert.c (convert): Do not call fold on results of conversion
12522         functions when the result is a C_MAYBE_CONST_EXPR.
12523         * c-parser.c (c_parser_postfix_expression): Do not fold condition
12524         of __builtin_choose_expr.
12525         * c-typeck.c (remove_c_maybe_const_expr): New.
12526         (build_unary_op, build_conditional_expr, build_compound_expr,
12527         build_binary_op, c_objc_common_truthvalue_conversion): Call
12528         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
12529         integer operands.
12530
12531 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
12532
12533         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
12534         CODE to produce a new one. Add a prototype to use fold_convert_const
12535
12536 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
12537
12538         PR bootstrap/39660
12539         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
12540         mix declarations and code.
12541
12542 2009-04-08  Ben Elliston  <bje@au.ibm.com>
12543
12544         * gcc.c: Replace `CC' with `GCC' throughout.
12545
12546 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
12547
12548         * doc/invoke.texi: Document Atom support.
12549
12550 2009-04-07  Jason Merrill  <jason@redhat.com>
12551
12552         PR c++/25185
12553         * c-common.h, c-common.c: Add flag_pretty_templates.
12554         * c-opts.c (c_common_handle_option): Set it.
12555         * c.opt: Add -fno-pretty-templates.
12556         * doc/invoke.texi (C++ Dialect Options): Likewise.
12557
12558 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
12559
12560         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
12561         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
12562         (ia64_expand_builtin): Likewise.
12563
12564 2009-04-07  Martin Jambor  <mjambor@suse.cz>
12565
12566         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
12567         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
12568         ADDR_EXPRS are include too.
12569
12570 2009-04-07  Richard Guenther  <rguenther@suse.de>
12571
12572         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
12573         decls are only used if passes as parameters or if they are
12574         local statics and the call is not to a builtin.
12575         (call_may_clobber_ref_p_1): Likewise.
12576
12577 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
12578
12579         * expr.c (do_store_flag): Remove last argument.  Simplify code
12580         to avoid duplication of tests already done by can_compare_p.
12581         (expand_expr_real_1): Adjust caller.
12582
12583 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
12584
12585         * optabs.c (can_compare_p): Test the predicate of a
12586         cbranch and cstore pattern.
12587
12588 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
12589
12590         * expr.c (convert_move): Use emit_store_flag instead of
12591         "emulating" it.
12592
12593 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
12594
12595         * config/i386/i386.c (ix86_compare_emitted): Remove.
12596         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
12597         ix86_compare_op0 like ix86_compare_emitted used to be handled.
12598         * config/i386/i386.h (ix86_compare_emitted): Remove.
12599         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
12600         instead of ix86_compare_emitted.
12601         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
12602
12603 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
12604
12605         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
12606         Add t-sysroot-suffix to tmake_file.
12607         * config/print-sysroot-suffix.sh: New file.
12608         * config/t-sysroot-suffix: New file.
12609
12610 2009-04-07  Ben Elliston  <bje@au.ibm.com>
12611
12612         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
12613         as the latter produces a warning when the target does not support
12614         infinity.
12615
12616 2009-04-07  Ben Elliston  <bje@au.ibm.com>
12617
12618         * dfp.c: Replace type punning assignments with memcpy throughout.
12619         * Makefile.in (dfp.o-warn): Remove.
12620
12621 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
12622
12623         PR target/39634
12624         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
12625         Include soft-fp/t-softfp after rs6000/t-linux64.
12626
12627 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
12628
12629         * stor-layout.c (set_sizetype): Use the full precision of their
12630         machine mode for bitsize types.
12631
12632 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
12633
12634         * config/i386/i386.md: Revert 2 accidental checkins.
12635
12636 2009-04-06  Joey Ye  <joey.ye@intel.com>
12637             Xuepeng Guo  <xuepeng.guo@intel.com>
12638             H.J. Lu  <hongjiu.lu@intel.com>
12639
12640         Atom pipeline model, tuning and insn selection.
12641         * config.gcc (atom): Add atom config options and target.
12642
12643         * config/i386/atom.md: New.
12644
12645         * config/i386/i386.c (atom_cost): New cost.
12646         (m_ATOM): New macro flag.
12647         (initial_ix86_tune_features): Set m_ATOM.
12648         (x86_accumulate_outgoing_args): Likewise.
12649         (x86_arch_always_fancy_math_387): Likewise.
12650         (processor_target): Add Atom cost.
12651         (cpu_names): Add Atom cpu name.
12652         (override_options): Set Atom ISA.
12653         (ix86_issue_rate): New case PROCESSOR_ATOM.
12654         (ix86_adjust_cost): Likewise.
12655
12656         * config/i386/i386.h (TARGET_ATOM): New target macro.
12657         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
12658         (TARGET_OPT_AGU): New target option.
12659         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
12660         (processor_type): Add PROCESSOR_ATOM.
12661
12662         * config/i386/i386.md (cpu): Add new value "atom".
12663         (use_carry, movu): New attr.
12664         (atom.md): Include atom.md.
12665         (adddi3_carry_rex64): Set attr "use_carry".
12666         (addqi3_carry): Likewise.
12667         (addhi3_carry): Likewise.
12668         (addsi3_carry): Likewise.
12669         (*addsi3_carry_zext): Likewise.
12670         (subdi3_carry_rex64): Likewise.
12671         (subqi3_carry): Likewise.
12672         (subhi3_carry): Likewise.
12673         (subsi3_carry): Likewise.
12674         (x86_movdicc_0_m1_rex64): Likewise.
12675         (*x86_movdicc_0_m1_se): Likewise.
12676         (x86_movsicc_0_m1): Likewise.
12677         (*x86_movsicc_0_m1_se): Likewise.
12678         (*adddi_1_rex64): Emit add insn as much as possible.
12679         (*addsi_1): Likewise.
12680         (return_internal): Set atom_unit.
12681         (return_internal_long): Likewise.
12682         (return_pop_internal): Likewise.
12683         (*rcpsf2_sse): Set atom_sse_attr attr.
12684         (*qrt<mode>2_sse): Likewise.
12685         (*prefetch_sse): Likewise.
12686
12687         * config/i386/i386-c.c (ix86_target_macros_internal): New case
12688         PROCESSOR_ATOM.
12689         (ix86_target_macros_internal): Likewise.
12690
12691         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
12692         (*prefetch_sse_rex): Likewise.
12693         (sse_rcpv4sf2): Likewise.
12694         (sse_vmrcpv4sf2): Likewise.
12695         (sse_sqrtv4sf2): Likewise.
12696         (<sse>_vmsqrt<mode>2): Likewise.
12697         (sse_ldmxcsr): Likewise.
12698         (sse_stmxcsr): Likewise.
12699         (*sse_sfence): Likewise.
12700         (sse2_clflush): Likewise.
12701         (*sse2_mfence): Likewise.
12702         (*sse2_lfence): Likewise.
12703         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
12704         (<sse>_movup<ssemodesuffixf2c>): Likewise.
12705         (avx_movdqu<avxmodesuffix>): Likewise.
12706         (avx_lddqu<avxmodesuffix>): Likewise.
12707         (sse2_movntv2di): Change attr "type" to "ssemov".
12708         (sse2_movntsi): Likewise.
12709         (rsqrtv8sf2): Change attr "type" to "sseadd".
12710         (sse3_addsubv2df3): Set attr "atom_unit".
12711         (sse3_h<plusminus_insn>v4sf3): Likewise.
12712         (*sse2_pmaddwd): Likewise.
12713         (*vec_extractv2di_1_rex64): Likewise.
12714         (*vec_extractv2di_1_avx): Likewise.
12715         (sse2_psadbw): Likewise.
12716         (ssse3_phaddwv8hi3): Likewise.
12717         (ssse3_phaddwv4hi3): Likewise.
12718         (ssse3_phadddv4si3): Likewise.
12719         (ssse3_phadddv2si3): Likewise.
12720         (ssse3_phaddswv8hi3): Likewise.
12721         (ssse3_phaddswv4hi3): Likewise.
12722         (ssse3_phsubwv8hi3): Likewise.
12723         (ssse3_phsubwv4hi3): Likewise.
12724         (ssse3_phsubdv4si3): Likewise.
12725         (ssse3_phsubdv2si3): Likewise.
12726         (ssse3_phsubswv8hi3): Likewise.
12727         (ssse3_phsubswv4hi3): Likewise.
12728         (ssse3_pmaddubsw128): Likewise.
12729         (sse3_pmaddubsw: Likewise.
12730         (ssse3_palignrti): Likewise.
12731         (ssse3_palignrdi): Likewise.
12732
12733 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
12734
12735         * doc/install.texi (Specific): Fix two cross-references to MinGW.
12736
12737 2009-04-06  Richard Guenther  <rguenther@suse.de>
12738
12739         PR tree-optimization/28868
12740         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
12741         of which PHI results we inserted.
12742         (insert_into_preds_of_block): Record inserted PHIs.
12743         (eliminate): Eliminate redundant PHI nodes.
12744         (init_pre): Init inserted_phi_names.
12745
12746 2009-04-06  Richard Guenther  <rguenther@suse.de>
12747
12748         PR tree-optimization/39643
12749         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
12750         IMAGPART_EXPRs of complex constants.
12751         (execute_fold_all_builtins): If we folded a call queue
12752         TODO_update_address_taken.
12753
12754 2009-04-06  Jan Hubicka  <jh@suse.cz>
12755
12756         PR middle-end/39659
12757         * except.c (remove_unreachable_regions): Propagate may_contain_throw
12758         flag.
12759
12760 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
12761
12762         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
12763         delay slot.
12764         (ic_invalidate_array): Likewise.
12765
12766 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
12767
12768         * calls.c (emit_library_call_value_1): Fix a problem with parameter
12769         alignment for library calls.
12770
12771 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
12772
12773         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
12774         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
12775         * config/i386/mingw-stdint.h:  New file.
12776
12777 2009-04-05  Richard Guenther  <rguenther@suse.de>
12778
12779         PR tree-optimization/39648
12780         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
12781         our &A vs. &A[0] IL deficiencies.
12782
12783 2009-04-04  Jan Hubicka  <jh@suse.cz>
12784
12785         * except.c (sjlj_find_directly_reachable_regions): Be ready for
12786         removed toplevel regions.
12787         (sjlj_mark_call_sites): Likewise.
12788
12789 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
12790
12791         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
12792         (cygwin tm clause use_gcc_stdint):  Set to wrap.
12793         * config/i386/cygwin-stdint.h:  New file.
12794
12795 2009-04-04  Richard Guenther  <rguenther@suse.de>
12796
12797         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
12798         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
12799         single-argument PHIs if we are in loop-closed SSA form.
12800         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
12801         for the pre-condition.
12802         (slpeel_tree_peel_loop_to_edge): Likewise.
12803         (vect_build_loop_niters): Take an optional sequence to append stmts.
12804         (vect_generate_tmps_on_preheader): Likewise.
12805         (vect_do_peeling_for_loop_bound): Take extra guards for the
12806         pre-condition.
12807         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
12808         the cost model check.
12809         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
12810         guards if we are going to peel.  Do not apply versioning in that case.
12811         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
12812         (vect_do_peeling_for_loop_bound): Likewise.
12813         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
12814         loop bound only record extra pre-conditions, do not apply loop
12815         versioning.
12816
12817 2009-04-04  Richard Guenther  <rguenther@suse.de>
12818
12819         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
12820         renaming code.
12821
12822 2009-04-04  Jan Hubicka  <jh@suse.cz>
12823
12824         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
12825         last_basic_block for size of bb->index indexed array.
12826         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
12827         compute_out, link_btr_uses, build_btr_def_use_webs,
12828         build_btr_def_use_webs, migrate_btr_defs): Likewise.
12829
12830 2009-04-04  Jan Hubicka  <jh@suse.cz>
12831
12832         * except.c (remove_eh_handler_and_replace): Break out from ...
12833         (remove_eh_handler): ... here.
12834         (bring_to_root): New function.
12835         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
12836         handled ones, bring others to root of tree.
12837
12838 2009-04-04  Jan Hubicka  <jh@suse.cz>
12839
12840         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
12841         (all_phis_safe_to_merge): New function.
12842         (update_info): New structure.
12843         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
12844         (cleanup_empty_eh): Update SSA if possible.
12845
12846 2009-04-04  Richard Guenther  <rguenther@suse.de>
12847
12848         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
12849         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
12850         (append_vuse): Likewise.
12851
12852 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
12853
12854         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
12855         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
12856         instead of REG_UNSAVED for DW_CFA_undefined.
12857         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
12858         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
12859         outermost frame.
12860
12861 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
12862
12863         PR target/39501
12864         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
12865         * testsuite/gcc.c-torture/execute/pr39501.c: New file.
12866         * testsuite/gcc.c-torture/execute/pr39501.x: New file.
12867
12868 2009-04-04  Richard Guenther  <rguenther@suse.de>
12869
12870         PR tree-optimization/8781
12871         PR tree-optimization/37892
12872         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
12873         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
12874         (valueize_refs): Call it for *& valueizations.
12875         (shared_reference_ops_from_ref): Rename to ...
12876         (valueize_shared_reference_ops_from_ref): ... this and valueize.
12877         (shared_reference_ops_from_call): Rename to ...
12878         (valueize_shared_reference_ops_from_call): ... this and valueize.
12879         (vn_reference_lookup): Update.
12880         (visit_reference_op_call): Likewise.
12881         * tree-ssa-pre.c (phi_translate_1): Fold *&.
12882         (eliminate): Value-replace the call address in call statements.
12883
12884 2009-04-04  Richard Guenther  <rguenther@suse.de>
12885
12886         PR tree-optimization/39636
12887         * tree-ssa-forwprop.c
12888         (forward_propagate_addr_into_variable_array_index): Check for
12889         GIMPLE_ASSIGN before accessing the rhs code.
12890
12891 2009-04-03  Jason Merrill  <jason@redhat.com>
12892
12893         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
12894
12895 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
12896
12897         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
12898         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
12899         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
12900         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
12901         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
12902         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
12903         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
12904         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
12905         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
12906         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
12907         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
12908         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
12909         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
12910         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
12911         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
12912         Use fr_reg_or_fp01_operand instead of fr_register_operand
12913
12914         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
12915         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
12916         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
12917
12918 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
12919
12920         PR rtl-optimization/39607
12921         PR rtl-optimization/39631
12922
12923         Revert:
12924
12925         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
12926         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
12927         instead of DF_LR_OUT.
12928         * ira-lives.c (process_bb_node_lives): Ditto.
12929         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
12930         instead of DF_LR_{OUT,IN}.
12931         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
12932         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
12933
12934 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
12935
12936         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
12937         (execute_lower_omp): Always run but take the short way out if -fopenmp
12938         is not given.
12939         (gate_lower_omp): Remove, forcing the pass manager to always run the
12940         pass and always set PROP_gimple_lomp.
12941         (pass_lower_omp): Remove gate function.
12942         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
12943         PROP_trees.  Instead, require it.
12944         * ipa-cp.c (pass_ipa_cp): Likewise.
12945         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
12946         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
12947         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
12948         and PROP_gimple_leh.
12949
12950 2009-04-03  Richard Guenther  <rguenther@suse.de>
12951
12952         PR middle-end/13146
12953         PR tree-optimization/23940
12954         PR tree-optimization/33237
12955         PR middle-end/33974
12956         PR middle-end/34093
12957         PR tree-optimization/36201
12958         PR tree-optimization/36230
12959         PR tree-optimization/38049
12960         PR tree-optimization/38207
12961         PR tree-optimization/38230
12962         PR tree-optimization/38301
12963         PR tree-optimization/38585
12964         PR middle-end/38895
12965         PR tree-optimization/38985
12966         PR tree-optimization/39299
12967         * tree-ssa-structalias.h: Remove.
12968         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
12969         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
12970         (struct vuse_element_d): Remove.
12971         (struct vuse_vec_d): Likewise.
12972         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
12973         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
12974         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
12975         VUSE_ELEMENT_VAR): Likewise.
12976         (struct voptype_d): Likewise.
12977         (NUM_VOP_FREE_BUCKETS): Likewise.
12978         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
12979         (struct stmt_operands_d): Remove.
12980         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
12981         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
12982         VDEF_NUM, VDEF_VECT): Likewise.
12983         (copy_virtual_operands): Remove.
12984         (operand_build_cmp): Likewise.
12985         (create_ssa_artificial_load_stmt): Likewise.
12986         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
12987         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
12988         vuse_index and mayuse_index members.  Pack and move done and iter_type
12989         members to the front.
12990         (SSA_OP_VMAYUSE): Remove.
12991         (SSA_OP_VIRTUAL_USES): Adjust.
12992         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
12993         (unlink_stmt_vdef): Declare.
12994         (add_to_addressable_set): Remove.
12995         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
12996         (vrp_visit_stmt): Likewise.
12997         * doc/tree-ssa.texi (Alias analysis): Update.
12998         * doc/invoke.texi (max-aliased-vops): Remove docs.
12999         (avg-aliased-vops): Likewise.
13000         * tree-into-ssa.c (syms_to_rename): Remove.
13001         (need_to_update_vops_p): Likewise.
13002         (need_to_initialize_update_ssa_p): Rename to ...
13003         (update_ssa_initialized_fn): ... this.  Track function we are
13004         initialized for.
13005         (symbol_marked_for_renaming): Simplify.
13006         (add_new_name_mapping): Do not set need_to_update_vops_p.
13007         (dump_currdefs): Use SYMS_TO_RENAME.
13008         (rewrite_update_stmt): Always walk all uses/defs.
13009         (dump_update_ssa): Adjust.
13010         (init_update_ssa): Take function argument.  Track what we are
13011         initialized for.
13012         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
13013         (create_new_def_for): Initialize for cfun, assert we are initialized
13014         for cfun.
13015         (mark_sym_for_renaming): Simplify.
13016         (mark_set_for_renaming): Do not initialize update-ssa.
13017         (need_ssa_update_p): Simplify.  Take function argument.
13018         (name_mappings_registered_p): Assert we ask for the correct function.
13019         (name_registered_for_update_p): Likewise.
13020         (ssa_names_to_replace): Likewise.
13021         (release_ssa_name_after_update_ssa): Likewise.
13022         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
13023         (dump_decl_set): Do not print a newline.
13024         (debug_decl_set): Do it here.
13025         (dump_update_ssa): And here.
13026         * tree-ssa-loop-im.c (move_computations): Adjust.
13027         (movement_possibility): Likewise.
13028         (determine_max_movement): Likewise.
13029         (gather_mem_refs_stmt): Likewise.
13030         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
13031         or NAME_MEMORY_TAG.
13032         * tree-complex.c (update_all_vops): Remove.
13033         (expand_complex_move): Adjust.
13034         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
13035         Simplify test for memory referencing statement.  Exclude
13036         non-invariant ADDR_EXPRs.
13037         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
13038         * tree-loop-distribution.c (generate_memset_zero): Adjust.
13039         (rdg_flag_uses): Likewise.
13040         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
13041         related code.
13042         (tree_optimize_tail_calls_1): Also split the
13043         edge from the entry block if we have degenerate PHI nodes in
13044         the first basic block.
13045         * tree.c (init_ttree): Remove memory-tag related code.
13046         (tree_code_size): Likewise.
13047         (tree_node_structure): Likewise.
13048         (build7_stat): Re-write to be build6_stat.
13049         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
13050         (SSA_VAR_P): Adjust.
13051         (struct tree_memory_tag): Remove.
13052         (struct tree_memory_partition_tag): Likewise.
13053         (union tree_node): Adjust.
13054         (build7): Re-write to be build6.
13055         * tree-pass.h (pass_reset_cc_flags): Remove.
13056         (TODO_update_address_taken): New flag.
13057         (pass_simple_dse): Remove.
13058         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
13059         * params.h (MAX_ALIASED_VOPS): Remove.
13060         (AVG_ALIASED_VOPS): Likewise.
13061         * omp-low.c (expand_omp_taskreg): Update SSA form.
13062         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
13063         aliases the lhs in a copy stmt.
13064         * tree-ssa-dse.c (struct address_walk_data): Remove.
13065         (memory_ssa_name_same): Likewise.
13066         (memory_address_same): Likewise.
13067         (get_kill_of_stmt_lhs): Likewise.
13068         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
13069         unused stores.  Look through PHI nodes into post-dominated regions.
13070         (dse_optimize_stmt): Simplify.  Properly remove stores.
13071         (tree_ssa_dse): Compute dominators.
13072         (execute_simple_dse): Remove.
13073         (pass_simple_dse): Likewise.
13074         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
13075         gimple_loaded_syms and gimple_stored_syms computation.
13076         * toplev.c (dump_memory_report): Dump alias and pta stats.
13077         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
13078         (vn_reference_eq): Likewise.
13079         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
13080         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
13081         valueize_vuses): Remove.
13082         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
13083         (get_def_ref_stmt_vuse): ... this.
13084         (vn_reference_lookup_2): New function.
13085         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
13086         walking equivalent vuses.  Simplify.
13087         (vn_reference_lookup): Likewise.
13088         (vn_reference_insert): Likewise.
13089         (vn_reference_insert_pieces): Likewise.
13090         (visit_reference_op_call): Simplify.
13091         (visit_reference_op_load): Likewise.
13092         (visit_reference_op_store): Likewise.
13093         (init_scc_vn): Remove shared_lookup_vuses initialization.
13094         (free_scc_vn): Remove shared_lookup_vuses freeing.
13095         (sort_vuses, sort_vuses_heap): Remove.
13096         (get_ref_from_reference_ops): Export.
13097         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
13098         vector with single vuse pointer.
13099         (vn_reference_lookup_pieces, vn_reference_lookup,
13100         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
13101         (shared_vuses_from_stmt): Remove.
13102         (get_ref_from_reference_ops): Declare.
13103         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
13104         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
13105         memory-tag related code.
13106         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
13107         (likely_value): Add comment, skip static-chain of call statements.
13108         (surely_varying_stmt_p): Adjust.
13109         (gimplify_and_update_call_from_tree): Likewise.
13110         (execute_fold_all_builtins): Do not rebuild alias info.
13111         (gimplify_and_update_call_from_tree): Properly update VOPs.
13112         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
13113         (copy_ref_info): Remove memory-tag related code.
13114         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
13115         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
13116         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
13117         computation.
13118         * tree-ssa-dom.c (gimple_p): Remove typedef.
13119         (eliminate_redundant_computations): Adjust.
13120         (record_equivalences_from_stmt): Likewise.
13121         (avail_expr_hash): Likewise.
13122         (avail_expr_eq): Likewise.
13123         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
13124         (stmt_makes_single_load): Likewise.
13125         (stmt_makes_single_store): Likewise.
13126         * tree-ssa-alias.c: Rewrite completely.
13127         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
13128         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
13129         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
13130         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
13131         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
13132         Remove public functions.
13133         (pass_reset_cc_flags): Remove.
13134         (pass_build_alias): Move ...
13135         * tree-ssa-structalias.c (pass_build_alias): ... here.
13136         * tree-ssa-alias.c (may_be_aliased): Move ...
13137         * tree-flow-inline.h (may_be_aliased): ... here.
13138         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
13139         count_uses_and_derefs): Move ...
13140         * gimple.c: ... here.
13141         * gimple.h (count_uses_and_derefs): Declare.
13142         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
13143         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
13144         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
13145         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
13146         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
13147         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
13148         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
13149         New functions.
13150         * tree-dfa.c (refs_may_alias_p): Move ...
13151         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
13152         * tree-ssa-alias.h: New file.
13153         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
13154         (statement_sink_location): Likewise.
13155         * opts.c (decode_options): Do not adjust max-aliased-vops or
13156         avg-aliased-vops values.
13157         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
13158         (TV_CALL_CLOBBER): Likewise.
13159         (TV_FLOW_SENSITIVE): Likewise.
13160         (TV_FLOW_INSENSITIVE): Likewise.
13161         (TV_MEMORY_PARTITIONING): Likewise.
13162         (TV_ALIAS_STMT_WALK): New timevar.
13163         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
13164         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
13165         (get_address_description): Remove memory-tag related code.
13166         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
13167         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
13168         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
13169         and immediate uses in statements.  Document.
13170         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
13171         (dump_symbols): Remove.
13172         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
13173         * alias.c (get_deref_alias_set): New function split out from ...
13174         (get_alias_set): ... here.
13175         * alias.h (get_deref_alias_set): Declare.
13176         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
13177         type parameter.  Remove restrict pointer handling.  Create a
13178         ref-all pointer in case type-based alias sets do not conflict.
13179         (vect_analyze_data_refs): Remove SMT related code.
13180         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
13181         (vectorizable_load): Likewise.
13182         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
13183         (DR_SYMBOL_TAG, DR_VOPS): Remove.
13184         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
13185         Ignore vops and SMTs.
13186         (dr_analyze_alias): Likewise..
13187         (free_data_ref): Likewise.
13188         (create_data_ref): Likewise.
13189         (analyze_all_data_dependences): Likewise.
13190         (get_references_in_stmt): Adjust.
13191         * tree-flow-inline.h (gimple_aliases_computed_p,
13192         gimple_addressable_vars, gimple_call_clobbered_vars,
13193         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
13194         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
13195         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
13196         gimple_mem_ref_stats): Remove.
13197         (gimple_vop): New function.
13198         (op_iter_next_use): Remove vuses and mayuses cases.
13199         (op_iter_next_def): Remove vdefs case.
13200         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
13201         (clear_and_done_ssa_iter): Do not set removed fields.
13202         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
13203         Assert we are not iterating over vuses or vdefs if not also
13204         iterating over uses or defs.
13205         (op_iter_init_use): Likewise.
13206         (op_iter_init_def): Likewise.
13207         (op_iter_next_vdef): Remove.
13208         (op_iter_next_mustdef): Likewise.
13209         (op_iter_init_vdef): Likewise.
13210         (compare_ssa_operands_equal): Likewise.
13211         (link_use_stmts_after): Handle vuse operand.
13212         (is_call_used): Use is_call_clobbered.
13213         (is_call_clobbered): Global variables are always call clobbered,
13214         query the call-clobbers bitmap.
13215         (mark_call_clobbered): Ignore global variables.
13216         (clear_call_clobbered): Likewise.
13217         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
13218         virtual operands sanity check.
13219         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
13220         Remove.
13221         (TARGET_MEM_REF): Remove TMR_TAG operand.
13222         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
13223         Remove call-clobber related code.
13224         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
13225         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
13226         partitions or escape reason.
13227         (get_single_def_stmt, get_single_def_stmt_from_phi,
13228         get_single_def_stmt_with_phi): Remove.
13229         (dump_referenced_vars): Tidy.
13230         (get_ref_base_and_extent): Allow bare decls.
13231         (collect_dfa_stats): Adjust.
13232         * graphite.c (rename_variables_in_stmt): Adjust.
13233         (graphite_copy_stmts_from_block): Likewise.
13234         (translate_clast): Likewise.
13235         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
13236         (EXPR_DIES): New.
13237         (translate_vuse_through_block): Use the oracle.
13238         (phi_translate_1): Adjust.
13239         (value_dies_in_block_x): Use the oracle.  Cache the outcome
13240         in EXPR_DIES.
13241         (valid_in_sets): Check if the VUSE for
13242         a REFERENCE is available.
13243         (eliminate): Do not remove stmts during elimination,
13244         instead queue and remove them afterwards.
13245         (do_pre): Do not rebuild alias info.
13246         (pass_pre): Run TODO_rebuild_alias before PRE.
13247         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
13248         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
13249         (mark_all_v_defs_stmt): Remove.
13250         (mark_all_v_defs_seq): Adjust.
13251         (sra_replace): Likewise.
13252         (scalarize_use): Likewise.
13253         (scalarize_copy): Likewise.
13254         (scalarize_init): Likewise.
13255         (scalarize_ldst): Likewise.
13256         (todoflags): Remove.
13257         (tree_sra): Do not rebuild alias info.
13258         (tree_sra_early): Adjust.
13259         (pass_sra): Run TODO_update_address_taken before SRA.
13260         * tree-predcom.c (set_alias_info): Remove.
13261         (prepare_initializers_chain): Do not call it.
13262         (mark_virtual_ops_for_renaming): Adjust.
13263         (mark_virtual_ops_for_renaming_list): Remove.
13264         (initialize_root_vars): Adjust.
13265         (initialize_root_vars_lm): Likewise.
13266         (prepare_initializers_chain): Likewise.
13267         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
13268         (may_propagate_copy_into_stmt): Likewise.
13269         (merge_alias_info): Do nothing for now.
13270         (propagate_tree_value_into_stmt): Adjust.
13271         (stmt_may_generate_copy): Likewise.
13272         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
13273         not mark symbols for renaming.
13274         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
13275         with the same statement, make sure to update the new pointed-to one.
13276         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
13277         call statements, do not mark symbols for renaming.
13278         (mark_operand_necessary): Dump something.
13279         (ref_may_be_aliased): New function.
13280         (mark_aliased_reaching_defs_necessary_1): New helper function.
13281         (mark_aliased_reaching_defs_necessary): Likewise.
13282         (mark_all_reaching_defs_necessary_1): Likewise.
13283         (mark_all_reaching_defs_necessary): Likewise.
13284         (propagate_necessity): Do not process virtual PHIs.  For
13285         non-aliased loads mark all reaching definitions as necessary.
13286         For aliased loads and stores mark the immediate dominating
13287         aliased clobbers as necessary.
13288         (visited): New global static.
13289         (perform_tree_ssa_dce): Free visited bitmap after propagating
13290         necessity.
13291         (remove_dead_phis): Perform simple dead virtual PHI removal.
13292         (remove_dead_stmt): Properly unlink virtual operands when
13293         removing stores.
13294         (eliminate_unnecessary_stmts): Schedule PHI removal after
13295         stmt removal.
13296         * tree-ssa-ter.c (is_replaceable_p): Adjust.
13297         (process_replaceable): Likewise.
13298         (find_replaceable_in_bb): Likewise.
13299         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
13300         based on the single gimple vop.
13301         (verify_flow_insensitive_alias_info): Remove.
13302         (verify_flow_sensitive_alias_info): Likewise.
13303         (verify_call_clobbering): Likewise.
13304         (verify_memory_partitions): Likewise.
13305         (verify_alias_info): Likewise.
13306         (verify_ssa): Adjust..
13307         (execute_update_addresses_taken): Export.  Update SSA
13308         manually.  Optimize only when optimizing.  Use a local bitmap.
13309         (pass_update_address_taken): Remove TODO_update_ssa, add
13310         TODO_dump_func.
13311         (pass_update_address_taken): Just use TODO_update_address_taken.
13312         (init_tree_ssa): Do not initialize addressable_vars.
13313         (verify_ssa): Verify new VUSE / VDEF properties.
13314         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
13315         Do not call verify_alias_info.
13316         (delete_tree_ssa): Clear the VUSE, VDEF operands.
13317         Do not free the loaded and stored syms bitmaps.  Reset the escaped
13318         and callused solutions.  Do not free addressable_vars.
13319         Remove memory-tag related code.
13320         (warn_uninitialized_var): Aliases are always available.
13321         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
13322         * lambda-code.c (can_put_in_inner_loop): Adjust.
13323         (can_put_after_inner_loop): Likewise.
13324         (perfect_nestify): Likewise.
13325         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
13326         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
13327         (vectorizable_conversion): Do not mark symbols for renaming.
13328         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
13329         (expand_call_inline): Unlink the calls virtual operands before
13330         replacing it.
13331         (tree_function_versioning): Do not call update_ssa if we are not
13332         updating clones.  Simplify.
13333         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
13334         (propagate_with_phi): Likewise..
13335         * tree-outof-ssa.c (create_temp): Remove memory tag and call
13336         clobber code.  Assert we are not aliased or global.
13337         * tree-flow.h: Include tree-ssa-alias.h
13338         (enum escape_type): Remove.
13339         (struct mem_sym_stats_d): Likewise.
13340         (struct mem_ref_stats_d): Likewise.
13341         (struct gimple_df): Add vop member.  Remove global_var,
13342         call_clobbered_vars, call_used_vars, addressable_vars,
13343         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
13344         escaped and callused members.
13345         (struct ptr_info_def): Remove all members, add points-to solution
13346         member pt.
13347         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
13348         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
13349         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
13350         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
13351         (tree-ssa-alias.o): Likewise.
13352         (toplev.o): Add tree-ssa-alias.h
13353         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
13354         * gimple.c (gimple_set_bb): Fix off-by-one error.
13355         (is_gimple_reg): Do not handle memory tags.
13356         (gimple_copy): Also copy virtual operands.
13357         Delay updating the statement.  Do not reset loaded and stored syms.
13358         (gimple_set_stored_syms): Remove.
13359         (gimple_set_loaded_syms): Likewise.
13360         (gimple_call_copy_skip_args): Copy the virtual operands
13361         and mark the new statement modified.
13362         * tree-ssa-structalias.c (may_alias_p): Remove.
13363         (set_uids_in_ptset): Take the alias set to prune with as
13364         parameter.  Fold in the alias test of may_alias_p.
13365         (compute_points_to_sets): Compute whether a ptr is dereferenced
13366         in a local sbitmap.
13367         (process_constraint): Deal with &ANYTHING on the lhs, reject all
13368         other ADDRESSOF constraints on the lhs.
13369         (get_constraint_for_component_ref): Assert that we don't get
13370         ADDRESSOF constraints from the base of the reference.
13371         Properly generate UNKNOWN_OFFSET for DEREF if needed.
13372         (struct variable_info): Remove collapsed_to member.
13373         (get_varinfo_fc): Remove.
13374         (new_var_info): Do not set collapsed_to.
13375         (dump_constraint): Do not follow cycles.
13376         (dump_constraint_graph): Likewise.
13377         (build_pred_graph): Likewise.
13378         (build_succ_graph): Likewise.
13379         (rewrite_constraints): Likewise.
13380         (do_simple_structure_copy): Remove.
13381         (do_rhs_deref_structure_copy): Remove.
13382         (do_lhs_deref_structure_copy): Remove.
13383         (collapse_rest_of_var): Remove.
13384         (do_structure_copy): Re-implement.
13385         (pta_stats): New global variable.
13386         (dump_pta_stats): New function.
13387         (struct constraint_expr): Make offset signed.
13388         (UNKNOWN_OFFSET): Define special value.
13389         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
13390         (solution_set_expand): New helper function split out from ...
13391         (do_sd_constraint): ... here.
13392         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
13393         (do_ds_constraint): Likewise.
13394         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
13395         and CALLUSED = *CALLUSED.
13396         (set_union_with_increment): Make inc argument signed.
13397         (type_safe): Remove.
13398         (get_constraint_for_ptr_offset): Handle unknown and negative
13399         constant offsets.
13400         (first_vi_for_offset): Handle offsets before start.  Bail
13401         out early for offsets beyond the variable extent.
13402         (first_or_preceding_vi_for_offset): New function.
13403         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
13404         Together with ESCAPED = *ESCAPED this properly computes reachability.
13405         (find_what_var_points_to): New function.
13406         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
13407         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
13408         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
13409         pt_solutions_intersect): New functions.
13410         (compute_call_used_vars): Remove.
13411         (compute_may_aliases): New main entry into PTA computation.
13412         * gimple.h (gimple_p): New typedef.
13413         (struct gimple_statement_base): Remove references_memory_p.
13414         (struct gimple_statement_with_memory_ops_base): Remove
13415         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
13416         members.
13417         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
13418         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
13419         gimple_set_references_memory): Remove.
13420         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
13421         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
13422         New functions.
13423         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
13424         (verify_expr): Allow RESULT_DECL.
13425         (gimple_duplicate_bb): Do not copy virtual operands.
13426         (gimple_duplicate_sese_region): Adjust.
13427         (gimple_duplicate_sese_tail): Likewise.
13428         (mark_virtual_ops_in_region): Remove.
13429         (move_sese_region_to_fn): Do not call it.
13430         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
13431         and pass_simple_dse.
13432         (execute_function_todo): Handle TODO_update_address_taken,
13433         call execute_update_addresses_taken for TODO_rebuild_alias.
13434         (execute_todo): Adjust.
13435         (execute_one_pass): Init dump files early.
13436         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
13437         call-clobbered.
13438         (create_general_new_stmt): Clear vops.
13439         * tree-ssa-reassoc.c (get_rank): Adjust.
13440         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
13441         symbols for renaming.
13442         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
13443         (PARAM_AVG_ALIASED_VOPS): Likewise.
13444         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
13445         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
13446         * tree-ssa-operands.c: Simplify for new virtual operand representation.
13447         (operand_build_cmp, copy_virtual_operands,
13448         create_ssa_artificial_load_stmt, add_to_addressable_set,
13449         gimple_add_to_addresses_taken): Remove public functions.
13450         (unlink_stmt_vdef): New function.
13451
13452 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
13453
13454         * config.gcc (powerpc-*-linux*): Merge variants.
13455
13456 2009-04-02  Chao-ying Fu  <fu@mips.com>
13457             James Grosbach  <james.grosbach@microchip.com>
13458
13459         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
13460         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
13461         cop0_sp_offset.
13462         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
13463         keep_interrupts_masked_p, use_debug_exception_return_p.
13464         (mips_attribute_table): Add interrupt, use_shadow_register_set,
13465         keep_interrupts_masked, use_debug_exception_return.
13466         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
13467         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
13468         New functions.
13469         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
13470         (mips_print_operand): Process COP0 registers to print $0 .. $31
13471         correctly for GAS to process.
13472         (mips_interrupt_extra_call_saved_reg_p): New function.
13473         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
13474         extra registers.
13475         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
13476         (mips_compute_frame_info): Add supports for interrupt context that
13477         includes doubleword accumulators and COP0 registers.
13478         (mips_for_each_saved_acc): New function.
13479         (mips_for_each_saved_gpr_and_fpr): Change the function name from
13480         mips_for_each_saved_reg.
13481         (mips_save_reg): Save accumulators.
13482         (mips_kernel_reg_p): A new for_each_rtx callback.
13483         (mips_expand_prologue): Support interrupt handlers.
13484         (mips_restore_reg): Restore accumulators.
13485         (mips_expand_epilogue): Support interrupt handlers.
13486         (mips_can_use_return_insn): Return false for interrupt handlers.
13487         (mips_epilogue_uses): New function.
13488         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
13489         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
13490         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
13491         cop0_move): New instructions.
13492         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
13493         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
13494         defines.
13495         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
13496         New defines.
13497         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
13498         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
13499         interrupt handlers, we use K0 as the temporary register.
13500         (EPILOGUE_USES): Change to a function call.
13501         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
13502         handlers, we use K0 as the temporary register.
13503
13504         * doc/extend.texi (Function Attributes): Document interrupt,
13505         use_shadow_register_set, keep_interrupts_masked,
13506         use_debug_exception_return for MIPS attributes.
13507
13508 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
13509
13510         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
13511         Remove a number of t-files from tmake_file.
13512         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
13513         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
13514         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
13515         target_prototype, not TARGET_PROTOTYPE.
13516         (LINK_OS_GNU_SPEC): Define.
13517         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
13518         and darwin-ldoubdle.c.
13519
13520 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
13521
13522         PR driver/39293
13523         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
13524         (cpp_options): Ditto.
13525         (default_compilers): Ditto.
13526         (display_help): Ditto.
13527         (process_command): Ditto.
13528         (do_spec_1): Ditto.
13529         (set_input): Use lbasename instead of duplicate code.
13530         (save_temps_prefix): New static for -save-temps=obj.
13531         (save_temps_length): Ditto.
13532
13533         * doc/invoke.texi (-save-temps=obj): Document new variant to
13534         -save-temps switch.
13535
13536 2009-04-02  Jeff Law  <law@redhat.com>
13537
13538         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
13539         variable.
13540
13541 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
13542
13543         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
13544         * configure: Regenerated.
13545
13546 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
13547
13548         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
13549         share the argument list.
13550
13551 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
13552
13553         Merge
13554
13555         2009-02-12  Diego Novillo  <dnovillo@google.com>
13556
13557         * varpool.c (debug_varpool): New.
13558         * cgraph.h (debug_varpool): Declare.
13559
13560 2009-04-02  Jan Hubicka  <jh@suse.cz>
13561
13562         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
13563         pass.
13564
13565 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
13566
13567         * config/i386/i386.c (ix86_abi): Move initialization to ...
13568         (override_options): Here.
13569
13570 2009-04-02  Christian Bruel  <christian.bruel@st.com>
13571
13572         * config/sh/sh.c (sh_dwarf_register_span): New function.
13573         (TARGET_DWARF_REGISTER_SPAN): Define.
13574         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
13575
13576 2009-04-02  Ira Rosen  <irar@il.ibm.com>
13577
13578         PR tree-optimization/39595
13579         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
13580         interleaved loads group is not  greater than the SLP group size.
13581
13582 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
13583
13584         * builtins.c (is_builtin_name): New.
13585         (called_as_built_in): Use is_builtin_name.
13586         * tree.h (is_builtin_name): New.
13587         * varasm.c (incorporeal_function_p): Use is_builtin_name
13588
13589 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
13590
13591         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
13592
13593 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
13594
13595         PR c++/26693
13596         * c-decl.c (clone_underlying_type): Move this ...
13597         * c-common.c (set_underlying_type): ... here.
13598         Also, make sure the function properly sets TYPE_STUB_DECL() on
13599         the newly created typedef variant type.
13600         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
13601         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
13602         points.
13603
13604 2009-04-02  Richard Guenther  <rguenther@suse.de>
13605
13606         PR tree-optimization/37221
13607         * tree-flow.h (degenerate_phi_result): Declare.
13608         * tree-ssa-dom.c (degenerate_phi_result): Export.
13609         * tree-scalar-evolution.c (analyze_initial_condition): If
13610         the initial condition is defined by a degenerate PHI node
13611         use the degenerate value.
13612
13613 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
13614
13615         PR rtl-optimization/39588
13616         * combine.c (merge_outer_ops): Do not set the constant when this
13617         is not necessary.
13618         (simplify_shift_const_1): Do not modify it either in this case.
13619
13620 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
13621
13622         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
13623         tuning is deprecated if -mtune value is set to an Itanium1 variant.
13624
13625 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
13626
13627         PR c/29027
13628         * c-lex.c (interpret_float): Default (no suffix) is double.
13629
13630 2009-04-1  Xinliang David Li  <davidxl@google.com>
13631
13632         * config/i386/i386.c (legitimate_constant_p): Recognize
13633         all one vector constant.
13634
13635 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13636
13637         * config/vax/vax.c: Add #includes to silence warnings.
13638         Change #include order to silence two warnings.
13639
13640 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13641
13642         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
13643         (ASM_SPEC): Pass -k to the assembler for PIC code.
13644
13645 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13646
13647         * config.gcc: Add vax-*-linux* to the switch.
13648         * config/vax/linux.h: New file. (TARGET_VERSION,
13649         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
13650
13651 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13652
13653         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
13654         Use predicate macros instead of GET_CODE() == foo.
13655         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
13656         ashlsi3, rotrsi3, <unnamed>): Likewise.
13657
13658 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13659
13660         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
13661         jbbccihi, jbbccisi): Remova trailing whitespace.
13662         * config/vax/constraints.md: Likewise.
13663         * config/vax/elf.h: (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
13664         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
13665         * config/vax/predicates.md: Likewise.
13666         * config/vax/vax.c (print_operand_address, vax_output_int_move,
13667         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
13668         * config/vax/vax.h: Likewise.
13669         * config/vax/vax.md (nonlocal_goto): Likewise.
13670
13671 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13672
13673         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
13674         (indirectable_address_p, adjacent_operands_p): Add spaces around
13675         braces.
13676         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
13677
13678 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13679
13680         * config/vax/vax.c (legitimate_constant_address_p,
13681         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
13682         index_term_p, reg_plus_index_p, legitimate_address_p,
13683         vax_mode_dependent_address_p): Update comments to match functions
13684         modified by the recent int->bool conversion.
13685
13686 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13687
13688         * config/vax/builtins.md: Update copyright message.
13689         * config/vax/constraints.md: Likewise.
13690         * config/vax/netbsd-elf.h: Likewise.
13691         * config/vax/predicates.md: Likewise.
13692         * config/vax/vax-protos.h: Likewise.
13693         * config/vax/vax.c: Likewise.
13694         * config/vax/vax.h: Likewise.
13695         * config/vax/vax.md: Likewise.
13696         * config/vax/vax.opt: Likewise.
13697
13698 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
13699
13700         * config/vax/builtins.md (ffssi2, ffssi2_internal,
13701         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
13702         * config/vax/constraints.md (B, R): Likewise.
13703         * config/vax/predicates.md (external_memory_operand,
13704         nonimmediate_addsub_di_operand): Likewise.
13705         * config/vax/vax.c (vax_output_int_add): Likewise.
13706         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
13707         untyped_call): Likewise.
13708
13709 2009-04-01  Matt Thomas  <matt@3am-software.com>
13710
13711         * config/vax/predicates.md: New file.
13712         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
13713         external_const_operand, nonsymbolic_operand, external_memory_operand,
13714         indirect_memory_operand, indexed_memory_operand,
13715         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
13716         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
13717         predicate.
13718         * config/vax/constraints.md: New file.
13719         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
13720         New constraint.
13721         * config/vax/builtins.md: New file.
13722         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
13723         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
13724         jbbccisi): Define.
13725         * config/vax/vax.opt (mqmath): Add option.
13726         * config/vax/vax.md (isfx): Extend with DI.
13727         (VAXintQH, VAXintQHSD): Define.
13728         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
13729         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
13730         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
13731         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
13732         (movdi): Update constraints and use vax_output_int_move().
13733         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
13734         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
13735         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
13736         nonlocal_goto): New.
13737         (mov<mode>): Extend accepted operand types.
13738         (subdi3_old): Rename from subdi3, change update constraints and use
13739         a new implementation.
13740         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
13741         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
13742         MOVE_RATIO, CLEAR_RATIO): Define.
13743         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
13744         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
13745         (PRINT_OPERAND): Redefine using a function instead of inlined code.
13746         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
13747         (split_quadword_operands): Make static and really allow variable
13748         splitting.
13749         (print_operand_address): Update for PIC generation.
13750         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
13751         indexable_address_p, fixup_mathdi_operand,
13752         vax_expand_addsub_di_operands, adjacent_operands_p): New.
13753         (vax_float_literal, legitimate_constant_p,
13754         indirectable_constant_address_p, index_term_p,
13755         reg_plus_index_p): Return bool instead of int.
13756         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
13757         where needed.
13758         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
13759         generation.
13760         (vax_output_conditional_branch): Indent.
13761         (legitimate_constant_address_p, indirectable_constant_address_p,
13762         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
13763         vax_mode_dependent_address_p): Return bool instead of int, update for
13764         PIC generation.
13765         * config/vax/vax-protos.h (legitimate_constant_address_p,
13766         legitimate_constant_p, legitimate_address_p,
13767         vax_mode_dependent_address_p): Change declaration to bool.
13768         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
13769         vax_expand_addsub_di_operands, vax_output_int_subtract,
13770         vax_output_movmemsi): Declare.
13771         (split_quadword_operands, vax_float_literal): Delete declaration.
13772         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
13773         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
13774         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
13775         ASM_OUTPUT_DWARF_PCREL): Define.
13776         (ASM_SPEC): Change definition to allow PIC generation.
13777
13778 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
13779
13780         * doc/sourcebuild.texi: Update front-end requirements.
13781
13782 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
13783
13784         PR target/39226
13785         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
13786         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
13787         (booldi3_internal3): Use boolean_or_operator instead of
13788         boolean_operator.
13789
13790 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
13791
13792         PR c/39605
13793         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
13794         declarator whose size is not an integer constant expression but
13795         folds to an integer constant, then treat it as a constant
13796         subsequently.
13797
13798 2009-04-01  Richard Guenther  <rguenther@suse.de>
13799
13800         * fold-const.c (fold_plusminus_mult_expr): Do not fold
13801         i * 4 + 2 to (i * 2 + 1) * 2.
13802
13803 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
13804
13805         PR c/37772
13806         * c-parser.c (c_parser_asm_statement): Skip until close paren and
13807         return if c_parser_asm_string_literal returned NULL.
13808
13809 2009-04-01  Nick Clifton  <nickc@redhat.com>
13810
13811         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
13812         already defined.
13813         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
13814         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
13815         other typedefs to avoid conflicts with libgcc2.c.  Define labels
13816         to gain 16-bit bit-manipulation functions from libgcc2.c and then
13817         include it.
13818         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
13819         to gain 16-bit trapping arithmetic functions from libgcc2.c and
13820         then include it.
13821
13822 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
13823
13824         * varasm.c (default_function_rodata_section): Declare DOT as
13825         const char*.
13826
13827 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
13828             Andrey Galkin  <agalkin@hypercom.com>
13829
13830         PR/39492
13831         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
13832         Make object_name unique for each process.
13833
13834 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
13835
13836         PR other/39591
13837         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
13838         addressable variables in the parallel that could go out of scope while
13839         running queued tasks.
13840
13841 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
13842
13843         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
13844         (CASE_VALUES_THRESHOLD): Redefine.
13845         * config/avr/avr.c (avr_override_options): Remove initialization of
13846         avr_case_values_threshold variable.
13847         (avr_case_values_threshold): Remove variable. Add new function.
13848         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
13849         * config/avr/avr.opt (mno-tablejump): Remove option.
13850         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
13851
13852 2009-04-01  DJ Delorie  <dj@redhat.com>
13853
13854         * varasm.c (default_function_rodata_section): Don't assume
13855         anything about where the first '.' in the section name is.
13856
13857 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
13858
13859         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
13860         rs6000_emit_stack_tie.
13861
13862 2009-03-31  Ian Lance Taylor  <iant@google.com>
13863
13864         * tree-eh.c (tree_remove_unreachable_handlers): Compare
13865         gimple_code with GIMPLE_RESX, not RESX.
13866
13867 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
13868
13869         * c-common.c (c_get_ident): New.
13870         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
13871
13872 2009-04-01  Ben Elliston  <bje@au.ibm.com>
13873
13874         * config/rs6000/sysv4.opt (msdata): Improve option description.
13875
13876 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
13877
13878         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
13879         (divdf3_internal_lat): Remove.
13880         (divxf3_internal_lat): Remove.
13881         (divxf3_internal_thr): Remove.
13882         (divxf): Use divxf3_internal.
13883         * config/ia64/div.md (divsf3_internal_lat): New.
13884         (divdf3_internal_lat): New.
13885         (divxf3_internal): New.
13886
13887 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
13888
13889         PR c/448
13890         * Makefile.in (USE_GCC_STDINT): Define.
13891         (stmp-int-hdrs): Install stdint.h if applicable.
13892         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
13893         if known.
13894         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
13895         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
13896         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
13897         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
13898         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
13899         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
13900         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
13901         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
13902         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
13903         (c_common_nodes_and_builtins): Initialize
13904         underlying_wchar_type_node.  Do not initialize
13905         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
13906         nodes for new types.
13907         (c_stddef_cpp_builtins): Define macros for new types.
13908         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
13909         Remove.
13910         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
13911         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
13912         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
13913         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
13914         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
13915         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
13916         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
13917         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
13918         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
13919         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
13920         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
13921         int16_type_node, int32_type_node, int64_type_node,
13922         uint8_type_node, uint16_type_node, c_uint32_type_node,
13923         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
13924         int_least32_type_node, int_least64_type_node,
13925         uint_least8_type_node, uint_least16_type_node,
13926         uint_least32_type_node, uint_least64_type_node,
13927         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
13928         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
13929         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
13930         uintptr_type_node): Define.
13931         * c-cppbuiltin.c (builtin_define_constants,
13932         builtin_define_type_minmax): New.
13933         (builtin_define_stdint_macros): Define more macros.
13934         (c_cpp_builtins): Define more limit macros.
13935         (type_suffix): New.
13936         (builtin_define_type_max): Define in terms of
13937         builtin_define_type_minmax.  Remove is_long parameter.  All
13938         callers changed.
13939         * config.gcc (use_gcc_stdint): Define.
13940         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
13941         Add newlib-stdint.h for generic targets.
13942         * config/glibc-stdint.h, config/newlib-stdint.h,
13943         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
13944         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
13945         * config/score/score.h (UINTPTR_TYPE): Define.
13946         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
13947         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
13948         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
13949         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
13950         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
13951         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
13952         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
13953         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
13954         * config/spu/spu.h (STDINT_LONG32): Define.
13955         * configure.ac (use_gcc_stdint): Substitute.
13956         * configure: Regenerate.
13957         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
13958         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
13959         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
13960         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
13961         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
13962         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
13963         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
13964         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
13965         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
13966         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
13967         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
13968         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
13969         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
13970         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
13971         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
13972         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
13973         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
13974         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
13975         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
13976         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
13977         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
13978         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
13979         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
13980         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
13981         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
13982         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
13983         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
13984         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
13985         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
13986
13987 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
13988
13989         * loop-iv.c (suitable_set_for_replacement): Renamed from
13990         simplify_using_assignment; changed to return bool and to accept new
13991         args DEST and SRC.  Return true iff we find a source/destination pair
13992         that can be used to make a replacement, and fill SRC and DEST if so.
13993         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
13994         changed.
13995         (simplify_using_initial_values): Deal with altered regs here and track
13996         more precisely the effect they have on the validity of our expression.
13997
13998         * loop-iv.c (simplify_using_condition): A condition of the form
13999         (EQ REG CONST) can be used to simply make a substitution.
14000         (simplify_using_initial_values): Keep track of conditions we have seen
14001         and keep using them to simplify new expressions, while applying the
14002         same substitutions to them as to the expression.
14003
14004         * simplify-rtx.c (simplify_relational_operation_1): Simplify
14005         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
14006         GEU/LTU reversed.
14007
14008         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
14009         changed.  Use this when trying to improve the upper bound.
14010         Generate the comparison by using simplify_gen_relational.
14011
14012         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
14013
14014         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
14015         functions.
14016         (simplify_using_assignment, simplify_using_initial_values): Call
14017         replace_in_expr to make replacements.  Call replace_single_def_regs
14018         once on the initial version of the expression.
14019
14020 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
14021
14022         PR target/27237
14023         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
14024
14025 2009-03-31  Richard Guenther  <rguenther@suse.de>
14026
14027         PR middle-end/31029
14028         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
14029         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
14030
14031 2009-03-31  Richard Guenther  <rguenther@suse.de>
14032
14033         * tree.h (div_if_zero_remainder): Declare.
14034         * fold-const.c (div_if_zero_remainder): Export.
14035         * tree-ssa-forwprop.c
14036         (forward_propagate_addr_into_variable_array_index): Handle
14037         constant array index addition outside of the variable index.
14038
14039 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
14040
14041         PR target/39592
14042         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
14043         define_splits, floatunssi<mode>2): Require x87 conversions from
14044         DImode to be permitted.
14045
14046 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
14047
14048         PR preprocessor/15638
14049         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
14050
14051 2009-03-31  Richard Guenther  <rguenther@suse.de>
14052
14053         PR middle-end/23401
14054         PR middle-end/27810
14055         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
14056         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
14057         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
14058         a separate statement.
14059         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
14060         (lookup_tmp_var): Likewise.
14061         (is_gimple_formal_tmp_or_call_rhs): Remove.
14062         (is_gimple_reg_or_call_rhs): Rename to ...
14063         (is_gimple_reg_rhs_or_call): ... this.
14064         (is_gimple_mem_or_call_rhs): Rename to ...
14065         (is_gimple_mem_rhs_or_call): ... this.
14066         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
14067         DECL_GIMPLE_REG_P only if is_formal is true.
14068         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
14069         for non-proper post-modify expression gimplification.
14070         (gimplify_self_mod_expr): For post-modify expressions gimplify
14071         the lvalue to a minimal lvalue.
14072         (rhs_predicate_for): Remove formal temp case.
14073         (gimplify_modify_expr_rhs): Likewise.
14074         (gimplify_addr_expr): Use is_gimple_reg.
14075         (gimplify_expr): Remove formal temp cases.
14076         (gimple_regimplify_operands): Likewise.
14077         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
14078         and FILTER_EXPR like constants.
14079         * gimple.c (walk_gimple_op): Fix val_only initialization, use
14080         is_gimple_reg.
14081         (is_gimple_formal_tmp_rhs): Remove.
14082         (is_gimple_reg_rhs): Remove special casing.
14083         (is_gimple_mem_rhs): Fix.
14084         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
14085         (is_gimple_formal_tmp_var): Remove.
14086         (is_gimple_formal_tmp_reg): Likewise.
14087         (is_gimple_min_lval): Allow invariant component ref parts.
14088         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
14089         is_gimple_formal_tmp_reg): Remove declarations.
14090         * tree-cfg.c (verify_expr): Verify that variables with address
14091         taken do not have DECL_GIMPLE_REG_P set.
14092         * tree-mudflap.c (mf_build_check_statement_for): Use
14093         force_gimple_operand instead of gimplify_expr.
14094
14095 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
14096
14097         * modulo-sched.c (sms_schedule_by_order): Pass the actual
14098         schedulable rows to compute_split_row.
14099
14100 2009-03-31  Ben Elliston  <bje@au.ibm.com>
14101
14102         PR target/31635
14103         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
14104         OPT_mvrsave.
14105
14106 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
14107
14108         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
14109         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
14110         * configure: Regenerate.
14111         * config.in: Regenerate.
14112         * config/rs6000/rs6000.opt (mtls-markers): Add.
14113         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
14114         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
14115         (tls_ld_aix, tls_ld_sysv): Likewise.
14116         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
14117         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
14118
14119 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
14120
14121         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
14122
14123 2009-03-30  Jan Hubicka  <jh@suse.cz>
14124
14125         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
14126         out of RESX.
14127         (tree_remove_unreachable_handlers): Cleanup EH predecestor
14128         detection and label handling.
14129
14130 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
14131
14132         * ira-int.h (ira_allocno): Rename left_conflicts_num to
14133         left_conflicts_size.
14134         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
14135         ALLOCNO_LEFT_CONFLICTS_SIZE.
14136
14137         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
14138         remove_allocno_from_bucket_and_push,
14139         allocno_spill_priority_compare, push_allocnos_to_stack,
14140         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
14141         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
14142         (setup_allocno_left_conflicts_num): Ditto.  Rename to
14143         setup_allocno_left_conflicts_size.
14144         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
14145         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
14146         setup_allocno_left_conflicts_size instead of
14147         setup_allocno_left_conflicts_num.
14148
14149         * ira-build.c (ira_create_allocno): Use
14150         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
14151         ALLOCNO_LEFT_CONFLICTS_NUM.
14152
14153 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
14154
14155         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
14156         instead of DF_LR_OUT.
14157
14158         * ira-lives.c (process_bb_node_lives): Ditto.
14159
14160         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
14161         instead of DF_LR_{OUT,IN}.
14162
14163         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
14164
14165         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
14166
14167 2009-03-30  Jan Hubicka  <jh@suse.cz>
14168
14169         * except.c (label_to_region_map): Fix thinko.
14170
14171 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
14172
14173         PR middle-end/38237
14174         * tree.h (tree_find_value): New declaration.
14175         * tree.c (tree_find_value): New function.
14176         * varasm.c (assemble_external): Avoid duplicate entries on lists.
14177
14178 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
14179
14180         PR debug/39563
14181         * c-decl.c (struct c_binding): Add locus field.
14182         (bind): Add locus argument, set locus field from it.
14183         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
14184         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
14185         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
14186         implicitly_declare, undeclared_variable, lookup_label,
14187         declare_label, c_make_fname_decl, c_builtin_function,
14188         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
14189         bind callers.
14190
14191 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
14192
14193         PR target/38781
14194         * config/i386/i386.c (classify_argument): Check total size of
14195         structure.
14196
14197 2009-03-30  Martin Jambor  <mjambor@suse.cz>
14198
14199         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
14200         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
14201         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
14202         respectively.
14203
14204         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
14205         seen_variable_array_ref while also traversing a union.
14206
14207         * tree-inline.c (optimize_inline_calls): Do not call
14208         cgraph_node_remove_callees.
14209         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
14210         (pass_remove_cgraph_callee_edges): New variable.
14211         * passes.c (init_optimization_passes): Add
14212         pass_remove_cgraph_callee_edges after early inlining and before all
14213         late intraprocedural passes.
14214
14215         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
14216
14217 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14218
14219         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
14220         Fix typos in names.
14221
14222 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14223
14224         * combine.c (simplify_comparison): Use have_insn_for.
14225         * dojump.c (do_jump): Likewise.
14226
14227 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14228
14229         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
14230         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
14231         sparc_compare_op0 like sparc_compare_emitted used to be handled.
14232         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
14233         instead of sparc_compare_emitted.
14234         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
14235         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
14236         instead of sparc_compare_emitted.
14237
14238 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14239
14240         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
14241         enter/exit cfglayout mode.
14242         (pass_partition_block): Require it.
14243         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
14244         (combine_instructions): Track basic blocks instead of labels.
14245         (update_cfg_for_uncondjump): New.
14246         (try_combine): Use it.  Update jumps after rescanning.
14247         (pass_combine): Require PROP_cfglayout.
14248         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
14249
14250 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14251
14252         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
14253         Provide/destroy PROP_cfglayout respectively.
14254         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
14255         * tree-pass.h (PROP_cfglayout): New.
14256
14257 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
14258
14259         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
14260         fold_convert_const_fixed_from_fixed,
14261         fold_convert_const_fixed_from_int,
14262         fold_convert_const_fixed_from_real, fold_negate_const): Do not
14263         set TREE_CONSTANT_OVERFLOW.
14264         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
14265         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
14266
14267 2009-03-30  Ira Rosen  <irar@il.ibm.com>
14268
14269         * tree-vect-loop-manip.c: New file.
14270         * tree-vectorizer.c: Update documentation and included files.
14271         (vect_loop_location): Make extern.
14272         (rename_use_op): Move to tree-vect-loop-manip.c
14273         (rename_variables_in_bb, rename_variables_in_loop,
14274         slpeel_update_phis_for_duplicate_loop,
14275         slpeel_update_phi_nodes_for_guard1,
14276         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
14277         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
14278         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
14279         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
14280         find_loop_location): Likewise.
14281         (new_stmt_vec_info): Move to tree-vect-stmts.c.
14282         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
14283         get_vectype_for_scalar_type, vect_is_simple_use,
14284         supportable_widening_operation, supportable_narrowing_operation):
14285         Likewise.
14286         (bb_in_loop_p): Move to tree-vect-loop.c.
14287         (new_loop_vec_info, destroy_loop_vec_info,
14288         reduction_code_for_scalar_code, report_vect_op,
14289         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
14290         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
14291         (vect_supportable_dr_alignment): Likewise.
14292         * tree-vectorizer.h (tree-data-ref.h): Include.
14293         (vect_loop_location): Declare.
14294         Reorganize function declarations according to the new file structure.
14295         * tree-vect-loop.c: New file.
14296         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
14297         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
14298         * tree-vect-data-refs.c: New file.
14299         * tree-vect-patterns.c (timevar.h): Don't include.
14300         * tree-vect-stmts.c: New file.
14301         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
14302         tree-vect-slp.c, tree-vect-loop.c.
14303         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
14304         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
14305         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
14306         (tree-vect-analyze.o): Remove.
14307         (tree-vect-transform.o): Likewise.
14308         (tree-vect-data-refs.o): Add rule.
14309         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
14310         tree-vect-slp.o): Likewise.
14311         (tree-vect-patterns.o): Remove redundant dependencies.
14312         (tree-vectorizer.o): Likewise.
14313         * tree-vect-slp.c: New file.
14314
14315 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14316
14317         * optc-gen.awk: Warn if an option flag has multiple different
14318         help strings.
14319
14320 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
14321
14322         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
14323         -floop-block): Document dependences on PPL, CLooG and Graphite.
14324
14325 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
14326
14327         PR rtl-optimization/323
14328         * c-common.c (c_fully_fold, convert_and_check,
14329         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
14330         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
14331         * c-common.def (EXCESS_PRECISION_EXPR): New.
14332         * c-cppbuiltin.c (builtin_define_float_constants): Define
14333         constants with enough digits for long double.
14334         * c-lex.c (interpret_float): Interpret constant with excess
14335         precision where appropriate.
14336         * c-opts.c (c_common_post_options): Set
14337         flag_excess_precision_cmdline.  Give an error for
14338         -fexcess-precision=standard for C++ for processors where the
14339         option is significant.
14340         * c-parser.c (c_parser_conditional_expression): Handle excess
14341         precision in condition.
14342         * c-typeck.c (convert_arguments): Handle arguments with excess
14343         precision.
14344         (build_unary_op): Move excess precision outside operation.
14345         (build_conditional_expr): Likewise.
14346         (build_compound_expr): Likewise.
14347         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
14348         (build_modify_expr): Handle excess precision in RHS.
14349         (convert_for_assignment): Handle excess precision in converted
14350         value.
14351         (digest_init, output_init_element, process_init_element): Handle
14352         excess precision in initializer.
14353         (c_finish_return): Handle excess precision in return value.
14354         (build_binary_op): Handle excess precision in operands and add
14355         excess precision as needed for operation.
14356         * common.opt (-fexcess-precision=): New option.
14357         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
14358         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
14359         For standard excess precision, output explicit conversion to and
14360         truncation from XFmode.
14361         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
14362         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
14363         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
14364         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
14365         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
14366         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
14367         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
14368         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
14369         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
14370         define_splits, sqrt<mode>2): Disable where appropriate for
14371         standard excess precision.
14372         * convert.c (convert_to_real): Do not shorten arithmetic to type
14373         for which excess precision would be used.
14374         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
14375         * doc/invoke.texi (-fexcess-precision=): Document option.
14376         (-mfpmath=): Correct index entry.
14377         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
14378         flag_excess_precision): New.
14379         * langhooks.c (lhd_post_options): Set
14380         flag_excess_precision_cmdline.
14381         * opts.c (common_handle_option): Handle -fexcess-precision=.
14382         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
14383         init_excess_precision): New.
14384         (lang_dependent_init_target): Call init_excess_precision.
14385         * tree.c (excess_precision_type): New.
14386         * tree.h (excess_precision_type): Declare.
14387
14388 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
14389
14390         PR c/35235
14391         * c-typeck.c (build_component_ref): Do not copy qualifiers from
14392         non-lvalue to component.
14393
14394 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
14395
14396         PR preprocessor/34695
14397         * Makefile.in (c-opts.o): Depend on c-tree.h.
14398         * c-common.c: Move down include of diagnostic.h.
14399         (done_lexing, c_cpp_error): New.
14400         * c-common.h (done_lexing): Declare.
14401         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
14402         (parse_in).
14403         * c-opts.c: Include c-tree.h.
14404         (c_common_init_options): Set preprocessor error callback.
14405         (c_common_handle_option): Do not set preprocessor
14406         inhibit_warnings, warnings_are_errors, warn_system_headers,
14407         pedantic_errors or inhibit_warnings flags.
14408         (c_common_post_options): Do not check cpp_errors (parse_in).
14409         (c_common_finish): Do not output dependencies if there were
14410         errors.  Do not check return value of cpp_finish.
14411         * c-ppoutput.c (pp_file_change): Set input_location.
14412         * c-tree.h (c_cpp_error): Declare.
14413         * diagnostic.c (diagnostic_set_info_translated): Also initialize
14414         override_column.
14415         (diagnostic_build_prefix): Check override_column.
14416         * diagnostic.h (diagnostic_info): Add override_column field.
14417         (diagnostic_override_column): Define.
14418
14419 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
14420
14421         * c-common.c (c_expand_expr, c_staticp): Remove.
14422         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
14423         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
14424         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
14425         * c-gimplify.c (gimplify_compound_literal_expr,
14426         optimize_compound_literals_in_ctor): Remove.
14427         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
14428         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
14429         * c-semantics.c (emit_local_var): Remove.
14430
14431         * langhooks-def.h (lhd_expand_expr): Remove.
14432         * langhooks.c (lhd_expand_expr): Remove.
14433         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
14434
14435         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
14436         handling from c-semantics.c; don't call into langhook.
14437         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
14438         * gimplify.c (gimplify_compound_literal_expr,
14439         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
14440         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
14441         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
14442         as was done in c-gimplify.c.
14443         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
14444         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
14445         Move from c-common.h.
14446         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
14447
14448         * tree.c (staticp): Do not call langhook.
14449         * langhooks.c (lhd_staticp): Delete.
14450         * langhooks-def.h (lhd_staticp): Delete prototype.
14451         (LANG_HOOKS_STATICP): Delete.
14452         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
14453
14454         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
14455         instead of DECL_STMTs.
14456
14457 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
14458
14459         PR c/456
14460         PR c/5675
14461         PR c/19976
14462         PR c/29116
14463         PR c/31871
14464         PR c/35198
14465         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
14466         void_type_node.
14467         (fold_call_expr): Return a NOP_EXPR from folding rather than the
14468         contained expression.
14469         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
14470         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
14471         conditional expressions for C.
14472         (decl_constant_value_for_optimization): Move from
14473         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
14474         whether optimizing and that the expression is a VAR_DECL not of
14475         array type instead of doing such checks in the caller.  Do not
14476         check pedantic.  Call gcc_unreachable for C++.
14477         * c-common.def (C_MAYBE_CONST_EXPR): New.
14478         * c-common.h (c_fully_fold, c_save_expr,
14479         decl_constant_value_for_optimization): New prototypes.
14480         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
14481         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
14482         EXPR_INT_CONST_OPERANDS): Define.
14483         * c-convert.c (convert): Strip nops from expression.
14484         * c-decl.c (groktypename): Take extra parameters expr and
14485         expr_const_operands.  Update call to grokdeclarator.
14486         (start_decl): Update call to grokdeclarator.  Add statement for
14487         expressions used in type of decl.
14488         (grokparm): Update call to grokdeclarator.
14489         (push_parm_decl): Update call to grokdeclarator.
14490         (build_compound_literal): Add parameter non_const and build a
14491         C_MAYBE_COSNT_EXPR if applicable.
14492         (grokdeclarator): Take extra parameters expr and
14493         expr_const_operands.  Track expressions used in declaration
14494         specifiers and declarators.  Fold array sizes and track whether
14495         they are constant expressions and whether they are integer
14496         constant expressions.
14497         (parser_xref_tag): Set expr and expr_const_operands fields in
14498         return value.
14499         (grokfield): Update call to grokdeclarator.
14500         (start_function): Update call to grokdeclarator.
14501         (build_null_declspecs): Set expr and expr_const_operands fields in
14502         return value.
14503         (declspecs_add_type): Handle expressions in typeof specifiers.
14504         * c-parser.c (c_parser_declspecs): Set expr and
14505         expr_const_operands fields for declaration specifiers.
14506         (c_parser_enum_specifier): Likewise.
14507         (c_parser_struct_or_union_specifier): Likewise.
14508         (c_parser_typeof_specifier): Likewise.  Update call to
14509         groktypename.  Fold expression as needed.  Return expressions with
14510         type instead of adding statements.
14511         (c_parser_attributes): Update calls to c_parser_expr_list.
14512         (c_parser_statement_after_labels): Fold expression before passing
14513         to objc_build_throw_stmt.
14514         (c_parser_condition): Fold expression.
14515         (c_parser_asm_operands): Fold expression.
14516         (c_parser_conditional_expression): Use c_save_expr.  Update call
14517         to build_conditional_expr.
14518         (c_parser_alignof_expression): Update call to groktypename.
14519         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
14520         original_code.  Fold expression argument of va_arg.  Create
14521         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
14522         argument to va_arg.  Update calls to groktypename.  Fold array
14523         index for offsetof.  Verify that first argument to
14524         __builtin_choose_expr has integer type.
14525         (c_parser_postfix_expression_after_paren_type): Update calls to
14526         groktypename and build_compound_literal.  Handle expressions with
14527         side effects in type name.
14528         (c_parser_postfix_expression_after_primary): Update call to
14529         c_parser_expr_list.  Set original_code for calls to
14530         __builtin_constant_p.
14531         (c_parser_expr_list): Take extra parameter fold_p.  Fold
14532         expressions if requested.
14533         (c_parser_objc_type_name): Update call to groktypename.
14534         (c_parser_objc_synchronized_statement): Fold expression.
14535         (c_parser_objc_receiver): Fold expression.
14536         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
14537         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
14538         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
14539         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
14540         (struct c_typespec): Add elements expr and expr_const_operands.
14541         (struct c_declspecs): Add elements expr and expr_const_operands.
14542         (groktypename, build_conditional_expr, build_compound_literal):
14543         Update prototypes.
14544         (in_late_binary_op): Declare.
14545         * c-typeck.c (note_integer_operands): New function.
14546         (in_late_binary_op): New variable.
14547         (decl_constant_value_for_broken_optimization): Move to c-common.c
14548         and rename to decl_constant_value_for_optimization.
14549         (default_function_array_conversion): Do not strip nops.
14550         (default_conversion): Do not call
14551         decl_constant_value_for_broken_optimization.
14552         (build_array_ref): Do not fold result.
14553         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
14554         result when operand is a VLA.
14555         (c_expr_sizeof_type): Update call to groktypename.  Handle
14556         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
14557         result when operand names a VLA type.
14558         (build_function_call): Update call to build_compound_literal.
14559         Only fold result for calls to __builtin_* functions.  Strip
14560         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
14561         the function designator.
14562         (convert_arguments): Fold arguments.  Update call to
14563         convert_for_assignment.
14564         (build_unary_op): Handle increment and decrement of
14565         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
14566         decrement earlier.  Fold operand of increment and decrement.
14567         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
14568         built for integer operand.  Wrap returns that are INTEGER_CSTs
14569         without being integer constant expressions or that have integer
14570         constant operands without being INTEGER_CSTs.
14571         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
14572         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
14573         result is an integer constant expression or can be used in
14574         unevaluated parts of one and avoid folding and wrap as
14575         appropriate.  Fold operands before possibly doing -Wsign-compare
14576         warnings.
14577         (build_compound_expr): Wrap result for C99 if operands can be used
14578         in integer constant expressions.
14579         (build_c_cast): Update call to digest_init.  Do not ignore
14580         overflow from casting floating-point constants to integers.  Wrap
14581         results that could be confused with integer constant expressions,
14582         null pointer constants or floating-point constants.
14583         (c_cast_expr): Update call to groktypename.  Handle expressions
14584         included in type name.
14585         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
14586         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
14587         Update calls to convert_for_assignment.
14588         (convert_for_assignment): Take new parameter
14589         null_pointer_constant.  Do not strip nops or call
14590         decl_constant_value_for_broken_optimization.  Set
14591         in_late_binary_op for conversions to boolean.
14592         (store_init_value): Update call to digest_init.
14593         (digest_init): Take new parameter null_pointer_constant.  Do not
14594         call decl_constant_value_for_broken_optimization.  pedwarn for
14595         initializers not constant expressions.  Update calls to
14596         convert_for_assignment.
14597         (constructor_nonconst): New.
14598         (struct constructor_stack): Add nonconst element.
14599         (really_start_incremental_init, push_init_level, pop_init_level):
14600         Handle constructor_nonconst and nonconst element.
14601         (set_init_index): Call constant_expression_warning for array
14602         designators.
14603         (output_init_element): Fold value.  Set constructor_nonconst as
14604         applicable.  pedwarn for initializers not constant expressions.
14605         Update call to digest_init.  Call constant_expression_warning
14606         where constant initializers are required.
14607         (process_init_element): Use c_save_expr.
14608         (c_finish_goto_ptr): Fold expression.
14609         (c_finish_return): Fold return value.  Update call to
14610         convert_for_assignment.
14611         (c_start_case): Fold switch expression.
14612         (c_process_expr_stmt): Fold expression.
14613         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
14614         ensure statement expression is not evaluated in constant expression.
14615         (build_binary_op): Track whether results are integer constant
14616         expressions or may occur in such, disable folding and wrap results
14617         as applicable.  Fold operands for -Wsign-compare warnings unless
14618         in_late_binary_op.
14619         (c_objc_common_truthvalue_conversion): Handle results folded to
14620         integer constants that are not integer constant expressions.
14621         * doc/extend.texi: Document when typeof operands are evaluated,
14622         that condition of __builtin_choose_expr is an integer constant
14623         expression, and more about use of __builtin_constant_p in
14624         initializers.
14625
14626 2009-03-29  Richard Guenther  <rguenther@suse.de>
14627
14628         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
14629         propagate addresses of array references.
14630
14631 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
14632
14633         * regmove.c (perhaps_ends_bb_p): Remove.
14634         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
14635         from INSN and check that the main loop stays within that basic block.
14636         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
14637         (regmove_forward_pass): Split out from regmove_optimize.  Use
14638         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
14639         (regmove_backward_pass): Split out from regmove_optimize.  Use
14640         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
14641         (regmove_optimize): Simplify.
14642
14643 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
14644
14645         PR target/39545
14646         * config/i386/i386.c (classify_argument): Ignore flexible array
14647         member in struct and warn ABI change.
14648
14649 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
14650
14651         * config/i386/i386-protos.h (ix86_agi_dependent): New.
14652
14653         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
14654         (ix86_adjust_cost): Updated.
14655
14656 2009-03-29  Jan Hubicka  <jh@suse.cz>
14657
14658         PR middle-end/28850
14659         * tree-pass.h (pass_cleanup_eh): New function.
14660         (remove_unreachable_regions): Break code handling RTL
14661         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
14662         that can not be reached by runtime.
14663         (can_be_reached_by_runtime): New function.
14664         (label_to_region_map): New function.
14665         (num_eh_regions): New function.
14666         (rtl_remove_unreachable_regions): New function.
14667         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
14668         (remove_eh_region): New function.
14669         * except.h: Include sbitmap and vecprim.
14670         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
14671         num_eh_regions): Declare.
14672         * passes.c (init_optimization_passes): Schedule cleanup_eh.
14673         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
14674         * tree-eh.c (tree_remove_unreachable_handlers): New function.
14675         (tree_empty_eh_handler_p): New function.
14676         (cleanup_empty_eh): New function.
14677         (cleanup_eh): New function.
14678         (pass_cleanup_eh): New function.
14679
14680 2009-03-29  Jan Hubicka  <jh@suse.cz>
14681
14682         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
14683         for removed regions.
14684
14685 2009-03-29  Jan Hubicka  <jh@suse.cz>
14686
14687         * except.c (dump_eh_tree): Dump all datastructures.
14688
14689 2009-03-29  Jan Hubicka  <jh@suse.cz>
14690
14691         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
14692         (duplicate_eh_regions_1): Likewise.
14693         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
14694         vector; call EH verification.
14695         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
14696         Be ready for region being removed.
14697
14698 2009-03-29  Jan Hubicka  <jh@suse.cz>
14699
14700         * bitmap.c (bitmap_last_set_bit): New function.
14701         * bitmap.h (bitmap_last_set_bit): Declare.
14702
14703 2009-03-29  David Ayers  <ayers@fsfe.org>
14704
14705         PR objc/27377
14706         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
14707         by calling objc_compare_types and surpress warnings about
14708         incompatible C pointers that are compatible ObjC pointers.
14709
14710 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
14711
14712         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
14713         call initialize_inline_failed.
14714         (initialize_inline_failed): Move it from here ...
14715         * cgraph.c (initialize_inline_failed): ... to here.
14716         (cgraph_create_edge): Call initialize_inline_failed rather than
14717         setting inline_failed directly.
14718
14719 2009-03-29  Ben Elliston  <bje@au.ibm.com>
14720
14721         PR target/32542
14722         * sysv4.opt (msdata): Improve comment.
14723         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
14724         * sysv4.h (SVR4_ASM_SPEC): Likewise.
14725
14726 2009-03-29  Ben Elliston  <bje@au.ibm.com>
14727
14728         PR target/30451
14729         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
14730         load and store attributes.
14731
14732 2009-03-29  Ben Elliston  <bje@au.ibm.com>
14733
14734         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
14735         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
14736         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
14737         * doc/extend.texi (X86 Built-in Functions): Add index entries for
14738         __builtin_infq and __builtin_huge_valq.
14739
14740 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
14741
14742         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
14743         atmega8m1 devices.
14744         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
14745         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
14746
14747 2009-03-28  Xinliang David Li  <davidxl@google.com>
14748
14749         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
14750         (do_dbg_cnt): New function.
14751
14752 2009-03-28  Jan Hubicka  <jh@suse.cz>
14753
14754         Merge from pretty-ipa:
14755
14756         2009-03-27  Jan Hubicka  <jh@suse.cz>
14757
14758         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
14759         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
14760         * passes.c (function_called_by_processed_nodes_p): New.
14761         * ipa-pure-const.c (check_call): Fix handling of operands.
14762         (analyze_function): Dump debug output for skipped bodies.
14763         (local_pure_const): Use function_called_by_processed_nodes_p.
14764         * dwarf2out.c (reference_to_unused): Use output.
14765         * passes.c (do_per_function_toporder): Likewise.
14766
14767         2008-11-12  Jan Hubicka  <jh@suse.cz>
14768
14769         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
14770         * ipa-pure-const.c (funct_state_d): Add can throw field; make
14771         state_set_in_source enum
14772         (check_decl): Ignore memory tags; do not set fake looping flags;
14773         dump diagnostics.
14774         (check_operand, check_tree, check_rhs_var, check_lhs_var,
14775         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
14776         (check_call, analyze_function): Rewrite.
14777         (check_stmt): New.
14778         (add_new_function): Update call of analyze_function.
14779         (generate_summary): Add call of analyze_function.
14780         (propagate): Propagate can_throw; handle state_set_in_source correctly.
14781         (local_pure_const): New function.
14782         (pass_local_pure_const): New pass.
14783         * ipa-inline.c (inline_transform): Set after_inlining.
14784         * tree-eh.c (stmt_can_throw_external): New.
14785         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
14786         work with aliasing built.
14787         * tree-flow.h (stmt_can_throw_external): New.
14788         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
14789         and local pure/const pass in early and late optimization queue.
14790
14791 2009-03-28  Martin Jambor  <mjambor@suse.cz>
14792
14793         * fold-const.c (get_pointer_modulus_and_residue): New parameter
14794         allow_func_align.
14795         (fold_binary): Allow function decl aligment consideration is the
14796         second argument is integer constant one.
14797         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
14798         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
14799         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
14800
14801 2009-03-28  Jan Hubicka  <jh@suse.cz>
14802
14803         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
14804         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
14805         * function.h (rtl_data): Add nothrow flag.
14806         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
14807         set DECL_NOTHROW for AVAILABLE functions.
14808
14809 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
14810
14811         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
14812         following vector keyword has expansion starting with pixel or bool
14813         keyword, expand vector to __vector and pixel or bool to __pixel or
14814         __bool.
14815
14816         PR c++/39554
14817         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
14818         warn_if_disallowed_function_p): Removed.
14819         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
14820         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
14821         warning_if_disallowed_function_p.
14822         * flags.h (warn_if_disallowed_function_p,
14823         warn_disallowed_functions): Removed.
14824         * common.opt (Wdisallowed-function-list=): Removed.
14825         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
14826
14827 2009-03-28  Richard Guenther  <rguenther@suse.de>
14828
14829         PR tree-optimization/38723
14830         * tree-ssa-pre.c (compute_avail): Add all default definitions to
14831         the entry block.
14832
14833 2009-03-28  Jan Hubicka  <jh@suse.cz>
14834
14835         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
14836         test introduced by my previous patch.
14837
14838 2009-03-28  Richard Guenther  <rguenther@suse.de>
14839
14840         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
14841         the PHIs value undefined.
14842
14843 2009-03-28  Jan Hubicka  <jh@suse.cz>
14844
14845         * tree-pass.h (pass_fixup_cfg): New pass.
14846         * ipa-inline.c (inline_transform): Set
14847         always_inline_functions_inlined/after_inlining.
14848         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
14849         (pass_fixup_cfg): New pass.
14850         * passes.c (init_optimization_passes): Add fixup_cfg.
14851
14852 2009-03-28  Richard Guenther  <rguenther@suse.de>
14853
14854         PR tree-optimization/38458
14855         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
14856         argument use the arguments copy-of value.
14857
14858 2009-03-28  Richard Guenther  <rguenther@suse.de>
14859
14860         PR tree-optimization/38180
14861         * tree-ssa-ccp.c (get_default_value): Simplify.
14862         (likely_value): Likewise.
14863         (surely_varying_stmt_p): Properly handle VOP case.
14864         (ccp_initialize): Likewise.
14865         (ccp_fold): Handle propagating through *&.
14866         (fold_const_aggregate_ref): Also handle decls.
14867
14868 2009-03-28  Jan Hubicka  <jh@suse.cz>
14869
14870         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
14871         * cgraph.h (cgraph_node): Likewise.
14872         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
14873         (cgraph_reset_node): Use process flag.
14874         (cgraph_mark_functions_to_output): Likewise.
14875         (cgraph_expand_function): Likewise.
14876         (cgraph_expand_all_functions): Likewise.
14877         (cgraph_output_in_order): Likewise.
14878         * dwarf2out.c (reference_to_unused): Likewise.
14879         * passes.c do_per_function_toporder): Likewise.
14880
14881 2009-03-28  Jan Hubicka  <jh@suse.cz>
14882
14883         Bring from lto-branch:
14884
14885         2008-09-03  Doug Kwan  <dougkwan@google.com>
14886
14887         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
14888         enums instead of reason strings.
14889         * cgraph.c (cgraph_create_edge): Same.
14890         (cgraph_inline_failed_string): New function.
14891         * cgraph.h (cgraph_inline_failed_t): New enum type.
14892         (cgraph_inline_failed_string): New prototype.
14893         (struct cgraph_edge): Change type of INLINED_FAILED from constant
14894         char pointer to cgraph_inline_failed_t.
14895         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
14896         (cgraph_default_inline_p): Ditto.
14897         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
14898         to cgraph_inline_failed_t pointer.
14899         * cif-code.def: New file.
14900         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
14901         reason string.
14902         (cgraph_check_inline_limits): Change type of REASON to pointer to
14903         cgraph_inline_failed_t.  Replace reason strings with enums.
14904         (cgraph_default_inline_p): Ditto.
14905         (cgraph_recursive_inlining_p): Ditto.
14906         (update_caller_keys): Change type of FAILED_REASON to
14907         cgraph_inline_failed_t.
14908         (cgraph_set_inline_failed): Change type of REASON to pointer to
14909         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
14910         convert enums to strings for text output.
14911         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
14912         to be of type cgraph_inline_failed_t.  Replace reason strings with
14913         enums.  Call cgraph_inline_failed_string to covert enums
14914         to strings for text output.
14915         (cgraph_decide_inlining): Replace reason strings with enums.
14916         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
14917         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
14918         for text output.
14919         * tree-inline.c (expand_call_inline): Change type of REASON
14920         to cgraph_inline_failed_t.  Replace reason strings with enums.
14921         Call cgraph_inline_failed_string for text output.
14922         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
14923         (cgraph.o): Ditto.
14924
14925 2009-03-28  Jan Hubicka  <jh@suse.cz>
14926
14927         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
14928         cgraph_clone_node): Remove master clone handling.
14929         (cgraph_is_master_clone, cgraph_master_clone): Remove.
14930         * cgraph.h (master_clone): Remove.
14931         (cgraph_is_master_clone, cgraph_master_clone): Remove.
14932         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
14933         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
14934
14935 2009-03-28  Jan Hubicka  <jh@suse.cz>
14936
14937         * cgraph.c (cgraph_function_body_availability): Functions declared
14938         inline are always safe to assume that it is not going to be replaced.
14939
14940 2009-03-28  Richard Guenther  <rguenther@suse.de>
14941
14942         PR tree-optimization/38513
14943         * tree-ssa-pre.c (eliminate): Remove redundant stores.
14944         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
14945         EXC_PTR_EXPR and FILTER_EXPR.
14946         (get_ref_from_reference_ops): Likewise.
14947
14948 2009-03-28  Richard Guenther  <rguenther@suse.de>
14949
14950         PR tree-optimization/38968
14951         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
14952         Use FLOOR_MOD_EXPR to compute misalignment.
14953
14954 2009-03-28  Richard Guenther  <rguenther@suse.de>
14955
14956         PR tree-optimization/37795
14957         * tree.h (combine_comparisons): Declare.
14958         * fold-const.c (combine_comparisons): Export.
14959         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
14960         comparisons.
14961         (ifcombine_iforif): Use combine_comparisons.
14962
14963 2009-03-28  Jan Hubicka  <jh@suse.cz>
14964
14965         * tree-eh.c (inlinable_call_p): New function.
14966         (make_eh_edges): Use it.
14967         (verify_eh_edges): Use it.
14968         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
14969         * except.c (reachable_next_level): Add inlinable_function argument
14970         (sjlj_find_directly_reachable_regions): Update.
14971         (add_reachable_handler): Do not set saw_any_handlers.
14972         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
14973         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
14974         Add new inlinable call parameter.
14975         (can_throw_internal, can_throw_external): Update.
14976         * except.h (can_throw_internal_1, can_throw_external_1,
14977         foreach_reachable_handler): Update declaration.
14978
14979 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
14980
14981         * config/arm/t-arm-coff, config/h8300/coff.h,
14982         config/i386/i386-aout.h, config/i386/i386-coff.h,
14983         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
14984         config/pdp11/2bsd.h, config/rs6000/aix41.h,
14985         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
14986         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
14987         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
14988         sys-types.h: Remove.
14989         * Makefile.in: Remove protoize and fixproto support and references
14990         in comments.
14991         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
14992         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
14993         Remove.
14994         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
14995         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
14996         unprotoize$(exeext).
14997         (rest.encap): Don't depend on $(STMP_FIXPROTO)
14998         (.PHONY): Don't depend on proto.
14999         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
15000         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
15001         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
15002         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
15003         build/gen-protos.o, build/scan.o, xsys-protos.h,
15004         build/fix-header$(build_exeext), build/fix-header.o,
15005         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
15006         stmp-install-fixproto): Remove.
15007         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
15008         SYSCALLS.c or fixproto files.
15009         (install-common): Don't install protoize.
15010         (install-headers-tar, install-headers-cpio, install-headers-cp):
15011         Don't depend on $(STMP_FIXPROTO).
15012         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
15013         install fixproto files or write out fixproto settings.
15014         (uninstall): Don't uninstall protoize.
15015         * config.gcc (use_fixproto): Remove.
15016         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
15017         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
15018         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
15019         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
15020         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
15021         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
15022         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
15023         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
15024         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
15025         * config/t-vxworks (STMP_FIXPROTO): Remove.
15026         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
15027         STMP_FIXPROTO): Remove.
15028         * config.in, configure: Regenerate.
15029         * crtstuff.c (gid_t, uid_t): Don't undefine.
15030         * doc/install.texi: Change m68k-coff to m68k-elf in example.
15031         (arm-*-coff, arm-*-aout: Remove target entries.
15032         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
15033         Remove mention of AIX 4.1.
15034         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
15035         * doc/invoke.texi (Running Protoize): Remove.
15036         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
15037         (Protoize Caveats): Remove.
15038         * tsystem.h: Update comments on headers assumed to exist.
15039
15040 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
15041
15042         * genautomata.c: Add a new year to the copyright.  Add a new
15043         reference.
15044         (struct insn_reserv_decl): Add comments for member bypass_list.
15045         (find_bypass): Remove.
15046         (insert_bypass): New.
15047         (process_decls): Use insert_bypass.
15048         (output_internal_insn_latency_func): Output all bypasses with the
15049         same input insn in one switch case.
15050
15051         * rtl.def (define_bypass): Describe bypass choice.
15052         * doc/md.texi (define_bypass): Ditto.
15053
15054 2009-03-27  Richard Guenther  <rguenther@suse.de>
15055
15056         * gimplify.c (mark_addressable): Export.
15057         * tree-flow.h (mark_addressable): Declare.
15058         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
15059         * tree-ssa.c (verify_phi_args): Verify that address taken
15060         variables have TREE_ADDRESSABLE set.
15061
15062 2009-03-27  Richard Guenther  <rguenther@suse.de>
15063
15064         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
15065         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
15066         Do not mark decls TREE_ADDRESSABLE.
15067         (build_fold_addr_expr): Adjust.
15068         (fold_addr_expr): Remove.
15069         (fold_unary): Use build_fold_addr_expr.
15070         (fold_comparison): Likewise.
15071         (split_address_to_core_and_offset): Likewise.
15072         * coverage.c (tree_coverage_counter_addr): Mark the array decl
15073         TREE_ADDRESSABLE.
15074         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
15075         (gimplify_modify_expr_to_memcpy): Mark source and destination
15076         addressable.
15077         * omp-low.c (create_omp_child_function): Mark the object decl
15078         TREE_ADDRESSABLE.
15079         (lower_rec_input_clauses): Mark the var we take the address of
15080         TREE_ADDRESSABLE.
15081         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
15082
15083 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15084
15085         PR middle-end/39315
15086         * cfgexpand.c (expand_one_stack_var_at): Change alignment
15087         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
15088
15089 2009-03-27  Richard Guenther  <rguenther@suse.de>
15090
15091         PR tree-optimization/39120
15092         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
15093         constraints.
15094         (handle_lhs_call): Process return constraints.  Add escape
15095         constraints if necessary.
15096         (handle_const_call): Fill out return constraints.  Make nested
15097         case more precise.  Avoid consttmp if possible.
15098         (handle_pure_call): Fill out return constraints.  Avoid
15099         callused if possible.
15100         (find_func_aliases): Simplify call handling.
15101
15102 2009-03-27  Richard Guenther  <rguenther@suse.de>
15103
15104         PR tree-optimization/39120
15105         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
15106         as a representative.
15107         (solve_graph): Do propagate CALLUSED.
15108         (handle_pure_call): Use a scalar constraint from CALLUSED for
15109         the return value.
15110         (find_what_p_points_to): CALLUSED shall not appear in poins-to
15111         solutions.
15112
15113 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15114
15115         PR c/39323
15116         * c-common.c (handle_aligned_attribute): Properly check alignment
15117         overflow.  Use (1U << i) instead of (1 << i).
15118
15119         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
15120
15121         * expr.h (get_mem_align_offset): Updated.
15122
15123         * tree.h (tree_decl_common): Change align to "unsigned int" and
15124         move it before pointer_alias_set.
15125
15126 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15127             Jakub Jelinek  <jakub@redhat.com>
15128
15129         PR target/38034
15130         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
15131         gr_register_operand with gr_reg_or_0_operand.
15132         (cmpxchg_rel_di): Likewise.
15133         (sync_lock_test_and_set<mode>): Likewise.
15134
15135 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15136
15137         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
15138         (true_regnum): Likewise.
15139
15140         * rtlanal.c (subreg_info): Moved to ...
15141         * rtl.h (subreg_info): Here.  New.
15142         (subreg_get_info): New.
15143
15144         * rtlanal.c (subreg_get_info): Make it extern.
15145
15146 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15147
15148         PR target/39472
15149         * config/i386/i386.c (ix86_abi): New.
15150         (override_options): Handle -mabi=.
15151         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
15152         (ix86_call_abi_override): Likewise.
15153         (init_cumulative_args): Likewise.
15154         (function_arg_advance): Likewise.
15155         (function_arg_64): Likewise.
15156         (function_arg): Likewise.
15157         (ix86_pass_by_reference): Likewise.
15158         (ix86_function_value_regno_p): Likewise.
15159         (ix86_build_builtin_va_list_abi): Likewise.
15160         (setup_incoming_varargs_64): Likewise.
15161         (is_va_list_char_pointer): Likewise.
15162         (ix86_init_machine_status): Likewise.
15163         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
15164         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
15165         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
15166         (ix86_function_abi): Make it static and return enum calling_abi.
15167         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
15168         with ix86_abi.
15169         (ix86_fn_abi_va_list): Updated.
15170
15171         * config/i386/i386.h (ix86_abi): New.
15172         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
15173         (CONDITIONAL_REGISTER_USAGE): Likewise.
15174         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
15175         (machine_function): Likewise.
15176
15177         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
15178         with ix86_abi.
15179         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
15180         (STACK_BOUNDARY): Likewise.
15181         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
15182
15183         * config/i386/i386.opt (mabi=): New.
15184
15185         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
15186         return enum calling_abi.
15187         (ix86_function_type_abi): Likewise.
15188         (ix86_function_abi): Removed.
15189
15190         * doc/invoke.texi: Document -mabi= option for x86.
15191
15192 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15193
15194         * builtins.c (real_dconstp): Delete.
15195         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
15196
15197 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
15198             Jakub Jelinek  <jakub@redhat.com>
15199
15200         PR debug/37959
15201         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
15202         (gen_subprogram_die): When a function is explicit, generate the
15203         DW_AT_explicit attribute.
15204         * langhooks.h (struct lang_hooks_for_decls): Add
15205         function_decl_explicit_p langhook.
15206         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
15207         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
15208
15209 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
15210
15211         * builtins.c (fold_builtin_memory_op): Optimize memmove
15212         into memcpy if we can prove source and destination don't overlap.
15213
15214         * tree-inline.c: Include gt-tree-inline.h.
15215         (clone_fn_id_num): New variable.
15216         (clone_function_name): New function.
15217         (tree_function_versioning): Use it.
15218         * Makefile.in (GTFILES): Add tree-inline.c.
15219
15220 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
15221
15222         * BASE-VER: Change to 4.5.0.
15223
15224 2009-03-27  Xinliang David Li  <davidxl@google.com>
15225
15226         PR tree-optimization/39557
15227         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
15228
15229 2009-03-27  Xinliang David Li  <davidxl@google.com>
15230
15231         PR tree-optimization/39548
15232         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
15233         candidate check.
15234
15235 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15236
15237         * c-common.c (pointer_int_sum): Use %wd on return from
15238         tree_low_cst.
15239
15240 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
15241
15242         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
15243         on return from tree_low_cst.
15244
15245 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15246
15247         PR c++/36799
15248         * ginclude/stdarg.h (va_copy): Define also for
15249         __GXX_EXPERIMENTAL_CXX0X__.
15250
15251 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15252
15253         PR c++/35652
15254         * builtins.h (c_strlen): Do not warn here.
15255         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
15256         * c-common.c (pointer_int_sum): Take an explicit location.
15257         Warn about offsets out of bounds.
15258         * c-common.h (pointer_int_sum): Adjust declaration.
15259
15260 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15261
15262         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
15263         markup glitch.
15264
15265 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
15266
15267         PR c++/39554
15268         * opts.c (warn_if_disallowed_function_p): Don't assume
15269         get_callee_fndecl must return non-NULL.
15270
15271 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
15272
15273         PR rtl-optimization/39522
15274         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
15275         when reg_reloaded_valid is set.
15276
15277 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15278
15279         * config/spu/divv2df3.c: New file.
15280         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
15281         (DPBIT_FUNCS): Filter out _div_df.
15282
15283 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
15284
15285         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
15286         a jump insn, count that jump in the distance to the loop start.
15287
15288 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
15289
15290         PR target/39523
15291         * config/sh/sh.c (calc_live_regs): Fix condition for global
15292         registers except PIC_OFFSET_TABLE_REGNUM.
15293
15294 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
15295
15296         PR/39518
15297         * doc/invoke.texi (-mconsole): New.
15298         (-mcygwin): New.
15299         (-mno-cygwin): New.
15300         (-mdll): New.
15301         (-mnop-fun-dllimport): New.
15302         (-mthread): New.
15303         (-mwin32): New.
15304         (-mwindows): New.
15305         (sub section "i386 and x86-64 Windows Options"): New.
15306
15307 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
15308
15309         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
15310         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
15311
15312 2009-03-25  Richard Guenther  <rguenther@suse.de>
15313
15314         PR middle-end/39497
15315         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
15316         of -Wno-error.
15317
15318 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
15319
15320         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
15321         neither of haifa/selective schedulers are working.
15322
15323 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15324
15325         * doc/invoke.texi (Debugging Options): Fix description of
15326         -fno-merge-debug-strings.
15327
15328 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
15329
15330         * config/cris/libgcc.ver: New version-script.
15331         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
15332
15333         * configure.ac <GAS features, nop mnemonic>: Add pattern
15334         crisv32-*-* for "nop".
15335         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
15336         * configure: Regenerate.
15337
15338 2009-03-24  Ira Rosen  <irar@il.ibm.com>
15339
15340         PR tree-optimization/39529
15341         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
15342         mark_sym_for_renaming for the tag copied to the new vector
15343         pointer.
15344
15345 2009-03-24  Arthur Loiret  <aloiret@debian.org>
15346
15347         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
15348         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
15349         EXTRA_SPEC_FUNCTIONS.
15350         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
15351         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
15352         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
15353         -march and -mtune options.
15354
15355 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
15356
15357         * config/m68k/t-rtems: Add m5329 multilib.
15358
15359 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
15360             Jakub Jelinek  <jakub@redhat.com>
15361
15362         PR debug/39524
15363         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
15364         nodes.
15365
15366 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
15367
15368         PR c/39495
15369         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
15370         instead of c_parser_expression_conv, if original_code isn't one of the
15371         4 allowed comparison codes, fail.
15372
15373 2009-03-23  Richard Guenther  <rguenther@suse.de>
15374
15375         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
15376         * tree.h (struct tree_type): Likewise.
15377         * reload.h (struct insn_chain): Likewise.
15378         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
15379         * function.h (struct function): Likewise.
15380         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
15381
15382 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
15383
15384         PR tree-optimization/39516
15385         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
15386
15387 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
15388
15389         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
15390         should be set true if BITS_PER_WORD of target is bigger than 32
15391
15392 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
15393
15394         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
15395         Translate -B-options to -rpath-link.  Correct existing
15396         rpath-link and conditionalize on !nostdlib.
15397
15398 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15399
15400         * doc/extend.texi (Function Attributes, Variable Attributes):
15401         Fix typos.
15402         * doc/invoke.texi (Debugging Options, Optimize Options)
15403         (i386 and x86-64 Options, MCore Options): Likewise.
15404
15405 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
15406
15407         PR debug/37890
15408         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
15409         it for block local namespace aliases.
15410         (gen_decl_die): Pass context_die to gen_namespace_die.
15411
15412 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
15413
15414         PR c/39495
15415         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
15416         minimum or maximum value.
15417
15418 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
15419
15420         * reginfo.c (globalize_reg): Recompute derived reg sets.
15421
15422 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
15423
15424         PR target/39063
15425         * libgcc2.c (mprotect): Do not use signed arguments for
15426         VirtualProtect, use DWORD arguments.  Also fix the 'may
15427         be used uninitialized' warning for the np variable.
15428
15429 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
15430
15431         PR target/39496
15432         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
15433         functions using regparm calling conventions when not optimizing.
15434         (ix86_function_sseregparm): Similarly for sseregparm calling
15435         conventions.
15436
15437 2009-03-19  Li Feng  <nemokingdom@gmail.com>
15438
15439         PR middle-end/39500
15440         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
15441         dependence if the first conflict is after niter iterations.
15442
15443 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
15444
15445         PR middle-end/38609
15446         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
15447         functions with dynamic stack-pointer adjustments.
15448
15449 2009-03-19  Ben Elliston  <bje@au.ibm.com>
15450
15451         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
15452         option; change to -msdata=data.
15453
15454 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15455
15456         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
15457         and -fopenmp.
15458
15459 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
15460
15461         PR target/35180
15462         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
15463
15464 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
15465
15466         * doc/invoke.texi (Code Gen Options): Expand discussion of
15467         -fno-common.
15468
15469 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
15470
15471         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
15472         * matrix-reorg.c (struct matrix_info): Likewise.
15473         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
15474         * rtl.h (struct mem_attrs): Likewise.
15475         * df.h (struct df): Likewise.
15476         * tree-data-ref.h (struct data_dependence_relation): Likewise.
15477         * ira-int.h (struct ira_allocno): Likewise.
15478         * df-scan.c (struct df_collection_rec): Likewise.
15479         * ira.c (struct equivalence): Likewise.
15480         * function.c (struct temp_slot): Likewise.
15481         * cfgloop.h (struct loop): Likewise.
15482
15483         PR debug/39485
15484         * function.c (use_register_for_decl): When not optimizing, disregard
15485         register keyword for variables with types containing methods.
15486
15487 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
15488
15489         PR middle-end/39447
15490         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
15491         (is_simple_operand): Call contains_component_ref_p before calling data
15492         reference analysis that would fail on COMPONENT_REFs.
15493
15494         * tree-vrp.c (search_for_addr_array): Fix formatting.
15495
15496 2009-03-18  Richard Guenther  <rguenther@suse.de>
15497
15498         * tree-vect-transform.c (vect_loop_versioning): Fold the
15499         generated comparisons.
15500         * tree-vectorizer.c (set_prologue_iterations): Likewise.
15501         (slpeel_tree_peel_loop_to_edge): Likewise.
15502
15503 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15504
15505         PR middle-end/37805
15506         * opts.c (print_specific_help): In addition to `undocumented',
15507         accept `separate' and `joined' flags if passed alone.  Describe
15508         output by the first matched one of those.
15509         (common_handle_option): Skip over empty strings.
15510         * gcc.c (display_help): Fix help string for `--help='.
15511         * doc/invoke.texi (Option Summary, Overall Options): With
15512         `--help=', classes and qualifiers can both be repeated, but
15513         only the latter can be negated.  One should not pass only
15514         negated qualifiers.  Fix markup and examples.
15515
15516         Revert
15517         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
15518         PR middle-end/37805
15519         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
15520         and -fhelp=separate.
15521
15522 2009-03-17  Jing Yu  <jingyu@google.com>
15523
15524         PR middle-end/39378
15525         * function.h (struct rtl_data): Move is_thunk from here...
15526         (struct function): ...to here.
15527         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
15528         * varasm.c (assemble_start_function): Change is_thunk from crtl to
15529         cfun.
15530         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
15531         cfun.
15532         (alpha_does_function_need_gp, alpha_start_function): Likewise.
15533         (alpha_output_function_end_prologue): Likewise.
15534         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
15535         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
15536         (rs6000_output_function_epilogue): Likewise.
15537         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
15538
15539 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
15540
15541         PR target/39482
15542         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
15543         from different units in a single alternative.
15544         (*truncdfsf_i387): Ditto.
15545         (*truncxfsf2_mixed): Ditto.
15546         (*truncxfdf2_mixed): Ditto.
15547
15548 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
15549
15550         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
15551         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
15552
15553         PR debug/39474
15554         * tree-ssa-live.c (remove_unused_locals): Don't remove local
15555         unused non-artificial variables when not optimizing.
15556
15557         PR debug/39471
15558         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
15559         DW_TAG_imported_module even if decl is IMPORTED_DECL with
15560         NAMESPACE_DECL in its DECL_INITIAL.
15561
15562         PR middle-end/39443
15563         * optabs.c (set_user_assembler_libfunc): New function.
15564         * expr.h (set_user_assembler_libfunc): New prototype.
15565         * c-common.c: Include libfuncs.h.
15566         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
15567         for memcmp, memset, memcpy, memmove and abort.
15568         * Makefile.in (c-common.o): Depend on libfuncs.h.
15569
15570         PR debug/39412
15571         * dwarf2out.c (gen_inlined_enumeration_type_die,
15572         gen_inlined_structure_type_die, gen_inlined_union_type_die,
15573         gen_tagged_type_instantiation_die): Removed.
15574         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
15575         do nothing.
15576
15577 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
15578
15579         PR testsuite/38526
15580         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
15581         its use.
15582         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
15583         (check-parallel-%): Ditto.
15584         (check-consistency): Ditto.
15585
15586 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
15587
15588         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
15589         local variable rhs by NULL_TREE.
15590
15591 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
15592
15593         PR target/39477
15594         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
15595
15596 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
15597
15598         PR target/39476
15599         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
15600
15601 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
15602
15603         PR target/39473
15604         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
15605         for ms->sysv ABI calls only in 64bit mode.
15606
15607         * config/i386/i386.md (untyped_call): Support 32bit.
15608
15609 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
15610
15611         * doc/extend.texi: Replace x86_65 with x86_64.
15612
15613 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
15614
15615         PR tree-optimization/39455
15616         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
15617         mismatches for POINTER_TYPE_P (type).
15618         (number_of_iterations_le): Likewise.
15619
15620 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
15621
15622         * config/picochip/picochip.c: Removed profiling support.
15623         * config/picochip/picochip.md: Removed profiling instruction.
15624         * config/picochip/picochip.h: Removed profiling builtin.
15625
15626 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
15627
15628         * doc/install.texi (--with-host-libstdcxx): Document.
15629
15630 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
15631
15632         PR target/34299
15633         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
15634         generate a warning if the function name does not begin with
15635         "__vector" and the function has either the 'signal' or 'interrupt'
15636         attribute, from here to ...
15637         (avr_declare_function_name): ...here. New function.
15638         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
15639         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
15640
15641 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
15642
15643         PR bootstrap/39454
15644         * cse.c (fold_rtx): Don't modify original const_arg1 when
15645         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
15646         separate variable instead.
15647         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
15648         from out of range shift counts.
15649         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
15650
15651 2009-03-13  Catherine Moore  <clm@codesourcery.com>
15652
15653         * config/i386/x-mingw32 (host-mingw32.o): Replace
15654         diagnostic.h with $(DIAGNOSTIC_H).
15655
15656 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
15657
15658         PR target/39431
15659         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
15660         predicate.
15661         * config/i386/sync.md (sync_compare_and_swap<mode>,
15662         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
15663         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
15664         into a register.
15665         (sync_double_compare_and_swapdi_pic,
15666         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
15667         cmpxchg8b_pic_memory_operand instead of just memory_operand.
15668
15669 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
15670
15671         PR target/39445
15672         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
15673
15674 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
15675
15676         PR target/39327
15677         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
15678         (avx_addsubv4df3): Likewise.
15679         (*avx_addsubv4sf3): Likewise.
15680         (sse3_addsubv4sf3): Likewise.
15681
15682 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
15683
15684         PR target/38824
15685         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
15686
15687 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
15688
15689         PR debug/39432
15690         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
15691         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
15692         registers for allocnos created from user-defined variables.
15693
15694 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15695
15696         PR target/39181
15697         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
15698         of non-integer mode as well.
15699
15700 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
15701
15702         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
15703         for functions for which the parameter types are unknown.
15704
15705 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
15706
15707         PR target/39137
15708         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
15709         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
15710         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
15711         * config/i386/i386.c (ix86_local_alignment): For
15712         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
15713         long long variables on the stack to avoid dynamic realignment.
15714         Allow the first argument to be a decl rather than type.
15715         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
15716
15717 2009-03-11  Nick Clifton  <nickc@redhat.com>
15718
15719         PR target/5362
15720         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
15721         options.
15722         Add description to mno-lsim option.
15723         * config/mcore/mcore.h: Remove comment about deprecated m4align
15724         option.
15725         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
15726         * doc/invoke.texi: Add description of mno-lsim and
15727         mstack-increment options.
15728
15729         * config/fr30/fr30.opt: Document the -mno-lsim option.
15730         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
15731         and -mno-lsim options.
15732
15733 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15734
15735         * fold-const.c (fold_comparison): Only call fold_inf_compare
15736         if the mode supports infinities.
15737
15738 2009-03-11  Jason Merrill  <jason@redhat.com>
15739
15740         PR debug/39086
15741         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
15742         end already did.  Notice GIMPLE_CALL modifications of the result.
15743         Don't copy debug information from an ignored decl or a decl from
15744         another function.
15745
15746 2009-03-10  Richard Guenther  <rguenther@suse.de>
15747             Nathan Froyd  <froydnj@codesourcery.com>
15748
15749         PR middle-end/37850
15750         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
15751         (__divMODE3): Likewise.
15752
15753 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
15754
15755         PR tree-optimization/39394
15756         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
15757         DECL_SIZE_UNIT of variable length FIELD_DECLs.
15758
15759 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
15760
15761         * recog.c (verfiy_changes): Disallow renaming of hard regs in
15762         inline asms for register asm ("") declarations.
15763
15764 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
15765
15766         * fold-const.c (fold_unary): Fix comment.
15767
15768 2009-03-07  Jan Hubicka  <jh@suse.cz>
15769
15770         PR target/39361
15771         * tree-inline.c (setup_one_parameter): Do replacement of const
15772         argument by constant in SSA form.
15773
15774 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15775
15776         PR middle-end/38028
15777         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
15778         determine alignment passed to assign_stack_local.
15779         (assign_parms_unsplit_complex): Likewise.
15780         * except.c (sjlj_build_landing_pads): Likewise.
15781
15782 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
15783
15784         PR middle-end/39360
15785         * tree-flow.h (add_referenced_var): Return bool instead of void.
15786         * tree-dfa.c (add_referenced_var): Return result of
15787         referenced_var_check_and_insert call.
15788         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
15789         of referenced_var_check_and_insert.
15790
15791         PR debug/39372
15792         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
15793         (gen_variable_die): Emit DW_AT_location on abstract static variable's
15794         DIE, don't emit it if abstract origin already has it.
15795         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
15796         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
15797
15798 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
15799
15800         * genpreds.c (needs_variable): Fix parentheses at variable name
15801         detection.
15802         (write_tm_constrs_h): Indent generated code.
15803
15804 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
15805
15806         * doc/extend.texi (Function Attributes): Add documentation
15807         for isr attributes.
15808
15809 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
15810
15811         PR debug/39387
15812         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
15813         take locus from its DECL_SOURCE_LOCATION instead of input_location.
15814
15815 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
15816
15817         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
15818         the loop as bad.
15819
15820 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
15821
15822         PR debug/39379
15823         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
15824         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
15825
15826 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
15827
15828         * config/i386/i386.md (R8_REG, R9_REG): New constants.
15829         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
15830         constants instead of magic numbers.
15831         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
15832         (QI_REG_P): Ditto.
15833         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
15834         (x86_64_ms_abi_int_parameter_registers): Ditto.
15835         (x86_64_int_return_registers): Ditto.
15836         (ix86_maybe_switch_abi): Ditto.
15837         (ix86_expand_call): Ditto for clobbered_registers array.
15838         (ix86_hard_regno_mode_ok): Ditto.
15839         (x86_extended_QIreg_mentioned_p): Ditto.
15840
15841 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
15842
15843         PR tree-optimization/39349
15844         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
15845
15846         * combine.c (gen_lowpart_for_combine): Use omode when generating
15847         clobber.
15848
15849 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
15850
15851         PR rtl-optimization/39235
15852         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
15853
15854 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
15855
15856         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
15857
15858 2009-03-04  Richard Guenther  <rguenther@suse.de>
15859
15860         PR tree-optimization/39362
15861         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
15862         that occur in abnormal PHIs should be varying.
15863
15864 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
15865
15866         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
15867         Extend comments.
15868         (simple_iv):  Take loop as an argument instead of statement.
15869         * tree-scalar-evolution.h (simple_iv): Declaration changed.
15870         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
15871         to simple_iv.
15872         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
15873         Ditto.
15874         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
15875         * matrix-reorg.c (analyze_transpose): Ditto.
15876         * tree-data-ref.c (dr_analyze_innermost): Ditto.
15877         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
15878         * tree-predcom.c (ref_at_iteration): Ditto.
15879         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
15880
15881 2009-03-04  Richard Guenther  <rguenther@suse.de>
15882
15883         PR tree-optimization/39358
15884         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
15885         escaped_id and callused_id.
15886         (solve_graph): Likewise.
15887
15888 2009-03-04  Richard Guenther  <rguenther@suse.de>
15889
15890         PR tree-optimization/39339
15891         * tree-sra.c (try_instantiate_multiple_fields): Make it
15892         no longer ICE on the above.
15893
15894 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
15895
15896         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
15897         that fits within Pmode.
15898
15899 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
15900
15901         PR middle-end/10109
15902         * tm.texi (LIBCALL_VALUE): Update description.
15903
15904 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
15905
15906         PR middle-end/34443
15907         * doc/extend.texi (section): Update description.
15908
15909 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
15910
15911         PR middle-end/39345
15912         * tree-inline.c (remapped_type): New.
15913         (can_be_nonlocal): Call remapped_type instead of remap_type.
15914
15915 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
15916
15917         PR fortran/39354
15918         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
15919         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
15920
15921 2009-03-03  Richard Guenther  <rguenther@suse.de>
15922
15923         PR middle-end/39272
15924         * tree.c (tree_nonartificial_location): New function.
15925         * tree.h (tree_nonartificial_location): Declare.
15926         * builtins.c (expand_builtin_memory_chk): Provide location
15927         of the call location for artificial function pieces.
15928         (maybe_emit_chk_warning): Likewise.
15929         (maybe_emit_sprintf_chk_warning): Likewise.
15930         (maybe_emit_free_warning): Likewise.
15931         * expr.c (expand_expr_real_1): Likewise.
15932
15933 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
15934
15935         PR tree-optimization/39343
15936         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
15937         COMPONENT_REF t has ARRAY_TYPE.
15938
15939 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
15940
15941         PR middle-end/39335
15942         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
15943         when the type precision of the induction variable should be
15944         larger than the type precision of nit.
15945         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
15946         * graphite.c (graphite_loop_normal_form): Same.
15947         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
15948
15949 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
15950
15951         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
15952         (*call_1_rex64_ms_sysv): Use named constants instead of magic
15953         numbers to describe clobbered registers.
15954         (*call_value_0_rex64_ms_sysv): Ditto.
15955         * config/i386/mmx.md (mmx_emms): Ditto.
15956         (mmx_femms): Ditto.
15957
15958 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
15959
15960         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
15961         of ABI_64.
15962
15963 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15964
15965         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
15966         (spu_section_type_flags): New function.
15967
15968 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
15969
15970         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
15971         reg_class_contents of FLOAT_REGS into a temporary.
15972
15973 2009-03-02  Richard Guenther  <rguenther@suse.de>
15974             Ira Rosen  <irar@il.ibm.com>
15975
15976         PR tree-optimization/39318
15977         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
15978         information to the vectorized statement.
15979
15980 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
15981
15982         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
15983         variable.  Use defined names instead of magic constants for REX SSE
15984         registers.
15985
15986 2009-03-01  Richard Guenther  <rguenther@suse.de>
15987
15988         PR tree-optimization/39331
15989         * omp-low.c (lower_send_shared_vars): Do not receive new
15990         values for the reference of DECL_BY_REFERENCE parms or results.
15991
15992 2009-03-01  Jan Hubicka  <jh@suse.cz>
15993
15994         PR debug/39267
15995         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
15996         BLOCK_NONLOCALIZED_VAR): New macros.
15997         (tree_block): Add nonlocalized_vars.
15998         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
15999         gen_decl_die): Add origin argument.  Allow generation of die with
16000         origin at hand only.
16001         (gen_member_die, gen_type_die_with_usage, force_decl_die,
16002         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
16003         of gen_*.
16004         (gen_block_die): Fix checking for unused blocks.
16005         (process_scope_var): Break out from .... ; work with origins only.
16006         (decls_for_scope) ... here; process nonlocalized list.
16007         (dwarf2out_ignore_block): Look for nonlocalized vars.
16008         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
16009         vars.
16010         (dump_scope_block): Dump them.
16011         * tree-inline.c (remap_decls): Handle nonlocalized vars.
16012         (remap_block): Likewise.
16013         (can_be_nonlocal): New predicate.
16014         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
16015
16016 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16017
16018         * configure: Regenerate.
16019
16020 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16021
16022         * optc-gen.awk: No need to duplicate option flags twice.
16023         Reuse help texts for duplicate options which do not have any.
16024
16025         * gcc.c (display_help): Document --version.
16026
16027         * gcc.c (main): If print_help_list and verbose_flag, ensure
16028         driver output comes before subprocess output.
16029
16030         * optc-gen.awk: Assign all remaining fields to help string,
16031         space-separated, for multi-line help in *.opt.
16032
16033         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
16034         -Wno-pedantic-ms-format is for MinGW targets only.
16035
16036         * doc/options.texi (Option file format): Fix bad indentation,
16037         restoring dropped sentence.
16038
16039 2009-02-28  Jan Hubicka  <jh@suse.cz>
16040
16041         * tree-inline.c (tree_function_versioning): Output debug info.
16042
16043 2009-02-28  Jan Hubicka  <jh@suse.cz>
16044
16045         PR debug/39267
16046         * tree-inline.c (setup_one_parameter): Do not copy propagate
16047         arguments when not optimizing.
16048
16049 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
16050
16051         PR target/39327
16052         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
16053         (avx_addsubv4df3): Likewise.
16054         (*avx_addsubv4sf3): Likewise.
16055         (sse3_addsubv4sf3): Likewise.
16056         (*avx_addsubv2df3): Likewise.
16057         (sse3_addsubv2df3): Likewise.
16058         (avx_unpckhps256): Correct item selectors.
16059         (avx_unpcklps256): Likewise.
16060         (avx_unpckhpd256): Likewise.
16061         (avx_unpcklpd256): Likewise.
16062
16063 2009-02-28  Jan Hubicka  <jh@suse.cz>
16064
16065         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
16066         static vars.
16067         (copy_arguments_for_versioning): If var is declared don't declare it.
16068         (tree_function_versioning): First setup substitutions and then copy
16069         args.
16070
16071 2009-02-27  Jan Hubicka  <jh@suse.cz>
16072
16073         PR debug/39267
16074         * cgraph.h (varpool_output_debug_info): Remove.
16075         * cgraphunit.c (varpool_output_debug_info): Remove.
16076         * dwarf2out.c (deferred_locations_struct): New struct
16077         (deferred_locations): New type.
16078         (deferred_locations_list): New static var.
16079         (deffer_location): New function.
16080         (gen_variable_die): Use it.
16081         (decls_for_scope): Output info on local static vars.
16082         (dwarf2out_finish): Process deferred locations.
16083         * varpool.c (varpool_output_debug_info): Remove.
16084
16085 2009-02-27  Jan Hubicka  <jh@suse.cz>
16086
16087         PR debug/39267
16088         * tree.h (TREE_PROTECTED): Fix comment.
16089         (BLOCK_HANDLER_BLOCK): Remove.
16090         (struct tree_block): Remove handler_block add body_block.
16091         (inlined_function_outer_scope_p): New.
16092         (is_body_block): Remove.
16093         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
16094         * dwarf2out.c (is_inlined_entry_point): Remove.
16095         (add_high_low_attributes): Use inlined_function_outer_scope_p.
16096         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
16097         code.
16098         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
16099         * gimplify.c (gimplify_expr): Gimplify body blocks.
16100         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
16101         block with multiple subblocks.
16102         (dump_scope_block): Prettier output; dump more flags and info.
16103         (dump_scope_blocks): New.
16104         (remove_unused_locals): Use dump_scope_blocks.
16105         * tree-flow.h (dump_scope_blocks): Declare.
16106         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
16107         * stmt.c (is_body_block): Remove.
16108         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
16109         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
16110
16111 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
16112
16113         PR middle-end/39308
16114         * graphite.c (graphite_loop_normal_form): Do not call
16115         number_of_iterations_exit from a gcc_assert.
16116
16117 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
16118
16119         * config/s390/s390.c (s390_swap_cmp): Look for conditional
16120         jumps if COND is NULL.
16121         (find_cond_jump): New function.
16122         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
16123         * config/s390/s390.md: Remove z10_cobra attribute value.
16124
16125 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
16126
16127         * config/alpha/alpha.h (alpha_expand_mov): Return false if
16128         force_const_mem returns NULL_RTX.
16129
16130 2009-02-26  Jan Hubicka  <jh@suse.cz>
16131
16132         PR debug/39267
16133         * cgraph.h (varpool_output_debug_info): Remove.
16134         * cgraphunit.c (varpool_output_debug_info): Remove.
16135         * dwarf2out.c (deferred_locations_struct): New struct
16136         (deferred_locations): New type.
16137         (deferred_locations_list): New static var.
16138         (deffer_location): New function.
16139         (gen_variable_die): Use it.
16140         (decls_for_scope): Output info on local static vars.
16141         (dwarf2out_finish): Process deferred locations.
16142         * varpool.c (varpool_output_debug_info): Remove.
16143
16144 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
16145
16146         PR rtl-optimization/39241
16147         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
16148         to subreg_offset_representable_p.
16149
16150 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
16151
16152         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
16153         execute function prototype.  Get f and nregs from max_reg_num
16154         and get_insns.  Remove the first backward pass as it's dead,
16155         guard the forward pass by flag_expensive_optimizations.
16156         (rest_of_handle_regmove): Delete.
16157         (pass_regmove): Replace it with regmove_optimize.
16158
16159 2009-02-25  Martin Jambor  <mjambor@suse.cz>
16160
16161         PR tree-optimization/39259
16162         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
16163         calls_alloca function flags.
16164         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
16165         calls are detected.
16166
16167 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
16168
16169         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
16170         flags_set_1_rtx, flags_set_1_set): Delete.
16171         (regmove_optimize): Do not call mark_flags_life_zones.
16172
16173 2009-02-24  Julian Brown  <julian@codesourcery.com>
16174
16175         PR target/35965
16176         * config/arm/arm.c (require_pic_register): Only set
16177         cfun->machine->pic_reg once per function.
16178
16179 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
16180
16181         * doc/invoke.texi (Link Options): Document an easier way to pass
16182         options that take arguments to the GNU linker using -Xlinker and -Wl.
16183
16184 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
16185
16186         PR target/33785
16187         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
16188
16189 2009-02-24  Richard Guenther  <rguenther@suse.de>
16190
16191         PR debug/39285
16192         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
16193
16194 2009-02-24  Richard Guenther  <rguenther@suse.de>
16195             Zdenek Dvorak  <ook@ucw.cz>
16196
16197         PR tree-optimization/39233
16198         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
16199         from converting them to a generic type.
16200
16201 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
16202
16203         PR tree-optimization/39260
16204         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
16205         contains a condition with a real type.
16206         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
16207
16208 2009-02-23  Jason Merrill  <jason@redhat.com>
16209
16210         PR c++/38880
16211         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
16212         narrowing_initializer_constant_valid_p.
16213         (narrowing_initializer_constant_valid_p): Don't return
16214         null_pointer_node for adding a pointer to itself.
16215
16216 2009-02-23  Jan Hubicka  <jh@suse.cz>
16217
16218         PR c/12245
16219         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
16220         resizing.
16221
16222 2009-02-23  Jan Hubicka  <jh@suse.cz>
16223
16224         PR tree-optimization/37709
16225         * tree.c (block_ultimate_origin): Move here from dwarf2out.
16226         * tree.h (block_ultimate_origin): Declare.
16227         * dwarf2out.c (block_ultimate_origin): Move to tree.c
16228         * tree-ssa-live.c (remove_unused_scope_block_p):
16229         Eliminate blocks containig no instructions nor live variables nor
16230         nested blocks.
16231         (dump_scope_block): New function.
16232         (remove_unused_locals): Enable removal of dead blocks by default;
16233         enable dumping at TDF_DETAILS.
16234
16235 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
16236
16237         * config/i386/i386.c (classify_argument): Don't allow COImode
16238         and OImode.
16239         (function_arg_advance_32): Don't allow OImode.
16240         (function_arg_32): Likewise.
16241         (function_value_32): Likewise.
16242         (return_in_memory_32): Likewise.
16243         (function_arg_64): Remove OImode comment.
16244
16245 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
16246
16247         PR target/39261
16248         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
16249         ix86_expand_vector_set for V4DImode in 64bit mode only.
16250         (ix86_expand_vector_init_one_var): Likewise.
16251
16252 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
16253
16254         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
16255
16256 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
16257
16258         PR bootstrap/39257
16259         * loop-iv.c: Revert last change.
16260         * emit-rtl.c: Likewise.
16261
16262 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
16263
16264         PR target/39256
16265         * config/i386/i386.c (type_natural_mode): Remove an extra
16266         space in the warning message.
16267         (function_value_32): Handle 32-byte vector modes.
16268         (return_in_memory_32): Likewise.
16269
16270 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
16271
16272         * loop-iv.c (truncate_value): New function.
16273         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
16274         of lowpart_subreg.
16275         (lowpart_subreg): Move to...
16276         * emit-rtl.c: ...here.
16277
16278 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
16279
16280         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
16281         accidental and undocumented change at revision 140860.
16282
16283 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
16284
16285         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
16286         take gimple_seq * arguments.
16287         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
16288         types_compatible_p langhook.
16289
16290 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
16291             Joseph Myers  <joseph@codesourcery.com>
16292
16293         * config/arm/arm.c (arm_builtin_va_list): New function.
16294         (arm_expand_builtin_va_start): Likewise.
16295         (arm_gimplify_va_arg_expr): Likewise.
16296         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
16297         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
16298         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
16299         (va_list_type): New variable.
16300         (arm_mangle_type): Mangle va_list_type appropriately.
16301
16302 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
16303
16304         PR middle-end/39157
16305         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
16306         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
16307         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
16308         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
16309         parameter to 1000 for -O1 by default.
16310         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
16311         parameter.
16312         * loop-invariant.c: Include params.h.
16313         (move_loop_invariants): Don't call move_single_loop_invariants on
16314         very large loops.
16315
16316 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
16317
16318         * calls.c (emit_library_call_value_1): Use slot_offset instead of
16319         offset when calculating bounds for indexing stack_usage_map.  Fixes
16320         a buffer overflow with certain target setups.
16321
16322 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
16323
16324         PR target/39240
16325         * calls.c (expand_call): Clear try_tail_call if caller and callee
16326         disagree in promotion of function return value.
16327
16328 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
16329
16330         PR target/39175
16331         * c-common.c (c_determine_visibility): If visibility changed and
16332         DECL_RTL has been already set, call make_decl_rtl to update symbol
16333         flags.
16334
16335 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
16336
16337         PR c++/39188
16338         * varasm.c (assemble_variable): Don't check DECL_NAME when
16339         globalizing a variable.
16340
16341 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
16342
16343         PR c/38483
16344         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
16345         expression before any __builtin_trap call.
16346         * c-typeck.c (build_function_call): Convert and check function
16347         arguments before generating a call to a trap.  Evaluate the
16348         function arguments before the trap.
16349
16350 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
16351
16352         PR target/39228
16353         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
16354         (UNSPEC_FXAM_MEM): New unspec.
16355         (fxam<mode>2_i387_with_temp): New insn and split pattern.
16356         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
16357         memory using fxam<mode>2_i387_with_temp to remove excess precision.
16358
16359 2009-02-19  Richard Guenther  <rguenther@suse.de>
16360
16361         PR tree-optimization/39207
16362         PR tree-optimization/39074
16363         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
16364         storedanything_tree): New.
16365         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
16366         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
16367         (build_succ_graph): Add edges from STOREDANYTHING to all
16368         non-direct nodes.
16369         (init_base_vars): Initialize STOREDANYTHING.
16370         (compute_points_to_sets): Free substitution info after
16371         building the succ graph.
16372         (ipa_pta_execute): Likewise.
16373
16374         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
16375         field.
16376         (do_ds_constraint): Do not add to special var or non-pointer
16377         field solutions.
16378         (type_could_have_pointers): Split out from ...
16379         (could_have_pointers): ... here.  For arrays use the element type.
16380         (create_variable_info_for): Initialize may_have_pointers.
16381         (new_var_info): Likewise.
16382         (handle_lhs_call): Make the HEAP variable unknown-sized.
16383         (intra_create_variable_infos): Use a type with pointers for
16384         PARM_NOALIAS, make it unknown-sized.
16385
16386 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
16387
16388         PR target/39224
16389         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
16390
16391 2009-02-18  Jason Merrill  <jason@redhat.com>
16392
16393         PR target/39179
16394         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
16395         value if DECL_EXTERNAL.
16396         * tree-sra.c (sra_walk_gimple_assign): Likewise.
16397         * target.h (gcc_target::binds_local_p): Clarify "module".
16398         * tree.h (TREE_PUBLIC): Clarify "module".
16399
16400 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
16401
16402         PR target/38891
16403         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
16404         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
16405
16406 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
16407
16408         PR target/39082
16409         * c.opt (Wabi): Support C and ObjC.
16410         (Wpsabi): New.
16411
16412         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
16413
16414         * config/i386/i386.c (classify_argument): Warn once about the ABI
16415         change when passing union with long double.
16416
16417         * doc/invoke.texi: Update -Wabi for warning psABI changes.
16418
16419 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
16420
16421         PR c/35447
16422         * c-parser.c (c_parser_compound_statement): Always enter and leave
16423         a scope.
16424
16425 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16426
16427         PR target/34587
16428         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
16429
16430 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
16431
16432         PR tree-optimization/36922
16433         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
16434         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
16435         Likewise.
16436
16437 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
16438
16439         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
16440         to 0 for EABI64.
16441
16442 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
16443
16444         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
16445
16446 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
16447
16448         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
16449         tree sharing.
16450
16451 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
16452             Richard Sandiford  <rdsandiford@googlemail.com>
16453
16454         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
16455         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
16456         (loongson_biadd): ...this.
16457
16458 2009-02-17  Richard Guenther  <rguenther@suse.de>
16459
16460         PR tree-optimization/39202
16461         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
16462         a var make sure to follow existing collapses.
16463
16464 2009-02-17  Richard Guenther  <rguenther@suse.de>
16465
16466         PR middle-end/39214
16467         * langhooks.c (lhd_print_error_function): Check for NULL block.
16468
16469 2009-02-17  Richard Guenther  <rguenther@suse.de>
16470
16471         PR tree-optimization/39204
16472         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
16473         of the PHI arg.
16474
16475 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
16476
16477         * config/soft-fp/double.h: Update from glibc CVS.
16478
16479 2009-02-17  Richard Guenther  <rguenther@suse.de>
16480
16481         PR tree-optimization/39207
16482         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
16483         strict-aliasing warnings for pointers pointing to NULL.
16484
16485 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
16486
16487         PR c/35446
16488         * c-parser.c (c_parser_braced_init): Call pop_init_level when
16489         skipping until next close brace.
16490
16491 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
16492
16493         PR target/37049
16494         * config/i386/i386.c (ix86_expand_push): Set memory alignment
16495         to function argument boundary.
16496
16497 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
16498
16499         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
16500         in the lea_add. Reload eventually constraints it properly.
16501         * config/picochip/constraints.md: Remove the target constraint
16502         "b", since it is not needed anymore.
16503
16504 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
16505
16506         * gthr-dce.h: Uglify function parameter and local variable names.
16507         * gthr-gnat.h: Likewise.
16508         * gthr-mipssde.h: Likewise.
16509         * gthr-nks.h: Likewise.
16510         * gthr-posix95.h: Likewise.
16511         * gthr-posix.h: Likewise.
16512         * gthr-rtems.h: Likewise.
16513         * gthr-single.h: Likewise.
16514         * gthr-solaris.h: Likewise.
16515         * gthr-tpf.h: Likewise.
16516         * gthr-vxworks.h: Likewise.
16517         * gthr-win32.h: Likewise.
16518
16519 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
16520
16521         PR target/39196
16522         * config/i386/i386.md: Restrict the new peephole2 to move
16523         between MMX/SSE registers.
16524
16525 2009-02-15  Richard Guenther  <rguenther@suse.de>
16526
16527         Revert
16528         2009-02-13  Richard Guenther  <rguenther@suse.de>
16529
16530         * configure.ac: Enable LFS.
16531         * configure: Re-generate.
16532         * config.in: Likewise.
16533
16534 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
16535
16536         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
16537         spu_srqwbyte, spu_srqwbytebc): Define.
16538         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
16539         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
16540         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
16541         "shrqby_<mode>"): New insn-and-split patterns.
16542         * config/spu/spu.c (expand_builtin_args): Determine and return
16543         number of operands using spu_builtin_description data.
16544         (spu_expand_builtin_1): Use it.
16545
16546 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
16547
16548         PR target/38056
16549         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
16550         TARGET_CONST_GP.
16551
16552 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
16553
16554         PR target/39149
16555         * config/i386/i386.c (override_options): Correct warning
16556         messages for -malign-loops, -malign-jumps and -malign-functions.
16557
16558 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
16559
16560         PR target/39152
16561         * config/i386/i386.md: Restrict the new peephole2 to move
16562         between the general purpose registers.
16563
16564 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
16565
16566         PR target/39162
16567         * config/i386/i386.c (type_natural_mode): Add a new argument.
16568         Return the original mode and warn ABI change if vector size is 32byte.
16569         (function_arg_advance): Updated.
16570         (function_arg): Likewise.
16571         (ix86_function_value): Likewise.
16572         (ix86_return_in_memory): Likewise.
16573         (ix86_sol10_return_in_memory): Likewise.
16574         (ix86_gimplify_va_arg): Likewise.
16575         (function_arg_32): Don't warn ABX ABI change here.
16576         (function_arg_64): Likewise.
16577
16578 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
16579
16580         * loop-iv.c (implies_p): In the final case, test that operands 0
16581         of the two comparisons match.
16582
16583         * config/bfin/bfin.c (find_prev_insn_start): New function.
16584         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
16585         (find_next_insn_start): Move.
16586
16587 2009-02-13  Richard Guenther  <rguenther@suse.de>
16588
16589         * configure.ac: Enable LFS.
16590         * configure: Re-generate.
16591         * config.in: Likewise.
16592
16593 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
16594
16595         PR c/35444
16596         * c-parser.c (c_parser_parms_list_declarator): Discard pending
16597         sizes on syntax error after some arguments have been parsed.
16598
16599 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
16600
16601         * doc/invoke.texi (-fira): Remove.
16602
16603 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
16604
16605         * caller-save.c: Replace regclass.c with reginfo.c in comments.
16606         * recog.c: Likewise.
16607         * rtl.h: Likewise.
16608
16609 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
16610
16611         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
16612         (umul_ppmm): Likewise.
16613         (count_leading_zeros): Likewise.
16614         (count_trailing_zeros): Likewise.
16615         (UMUL_TIME): Likewise.
16616
16617 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
16618
16619         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
16620         soft-fp/t-softfp to tmake_file.
16621
16622         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
16623         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
16624         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
16625         IA64_BUILTIN_INFQ]: New.
16626         (ia64_init_builtins): Initialize __builtin_infq,
16627         __builtin_fabsq and __builtin_copysignq if not HPUX.
16628         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
16629         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
16630
16631         * config/ia64/lib1funcs.asm (__divtf3): Define only if
16632         SHARED is defined.
16633         (__fixtfti): Likewise.
16634         (__fixunstfti): Likewise.
16635         (__floattitf): Likewise.
16636
16637         * config/ia64/libgcc-glibc.ver: New.
16638         * config/ia64/t-fprules-softfp: Likewise.
16639         * config/ia64/sfp-machine.h: Likewise.
16640
16641         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
16642         (LIBGCC2_TF_CEXT): Likewise.
16643         (TF_SIZE): Likewise.
16644         (TARGET_INIT_LIBFUNCS): Likewise.
16645
16646         * config/ia64/t-glibc (SHLINB_MAPFILES):
16647         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
16648
16649 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
16650
16651         * config/i386/i386.c (construct_container): Rewrite processing
16652         BLKmode with X86_64_SSE_CLASS.
16653
16654 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
16655
16656         PR target/39152
16657         * config/i386/i386.md: Replace simplify_replace_rtx with
16658         replace_rtx in the new peephole2.
16659
16660 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
16661
16662         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
16663         loop unrolling do not happen at -O2.
16664
16665 2009-02-12  Michael Matz  <matz@suse.de>
16666
16667         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
16668
16669 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
16670
16671         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
16672         for -g3.
16673
16674 2009-02-12  Ben Elliston  <bje@au.ibm.com>
16675
16676         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
16677         patterns when updating the back chain.  Missed in the 2009-02-10
16678         change.
16679
16680 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
16681
16682         * doc/extend.texi (Decimal Floating Types): Update identifier of
16683         draft TR and list of missing support.
16684
16685 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
16686
16687         PR middle-end/39154
16688         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
16689         bit to variable length decl's flags, add it also to its
16690         pointer replacement variable.
16691
16692 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
16693             Jakub Jelinek  <jakub@redhat.com>
16694
16695         PR target/39118
16696         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
16697         (memory_blockage): New expander.
16698         (*memory_blockage): New insn pattern.
16699         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
16700         instead of general blockage at the end of function prologue when
16701         frame pointer is used to access red zone area.  Do not emit blockage
16702         when profiling, it is emitted in generic code.
16703         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
16704         function epilogue when frame pointer is used to access red zone area.
16705
16706 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
16707
16708         PR target/38824
16709         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
16710         by arithmetic with memory operands.
16711         * config/i386/predicates.md (commutative_operator): New.
16712
16713 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
16714
16715         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
16716         bulleted lists.
16717
16718 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
16719
16720         * alias.h (record_alias_subset): Declare.
16721         * alias.c (record_alias_subset): Make global.
16722
16723 2009-02-10  Nick Clifton  <nickc@redhat.com>
16724
16725         * tree-parloops.c: Change license to GPLv3.
16726         * ipa-struct-reorg.c: Change license to GPLv3.
16727         * ipa-struct-reorg.h: Change license to GPLv3.
16728
16729 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
16730
16731         PR c/39084
16732         * c-decl.c (start_struct): Return NULL on error.
16733
16734 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
16735
16736         PR middle-end/39124
16737         * cfgloopmanip.c (remove_path): Call remove_bbs after
16738         cancel_loop_tree, not before it.
16739
16740         PR target/39139
16741         * function.h (struct function): Add has_local_explicit_reg_vars bit.
16742         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
16743         VAR_DECLs were seen.
16744         * tree-ssa-live.c (remove_unused_locals): Recompute
16745         cfun->has_local_explicit_reg_vars.
16746         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
16747         copies or clearings if cfun->has_local_explicit_reg_vars.
16748
16749 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
16750
16751         PR target/39118
16752         * config/i386/i386.c (expand_prologue): Emit blockage at the end
16753         of function prologue when frame pointer is used to access
16754         red zone area.
16755
16756 2009-02-10  Richard Guenther  <rguenther@suse.de>
16757
16758         PR middle-end/39127
16759         * gimplify.c (gimple_regimplify_operands): Always look if
16760         we need to create a temporary.
16761
16762 2009-02-10  Richard Guenther  <rguenther@suse.de>
16763
16764         PR tree-optimization/39132
16765         * tree-loop-distribution.c (todo): New global var.
16766         (generate_memset_zero): Trigger TODO_rebuild_alias.
16767         (tree_loop_distribution): Return todo.
16768
16769 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
16770
16771         PR target/39119
16772         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
16773         (x86_64_reg_class_name): Removed.
16774         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
16775         first one isn't X86_64_SSE_CLASS or any other ones aren't
16776         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
16777         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
16778         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
16779         and 3 X86_64_SSEUP_CLASS.
16780         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
16781         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
16782
16783 2009-02-10  Ben Elliston  <bje@au.ibm.com>
16784
16785         * config/rs6000/rs6000.md (allocate_stack): Always use an update
16786         form instruction to update the stack back chain word, even if the
16787         user has disabled the generation of update instructions.
16788         (movdi_<mode>_update_stack): New.
16789         (movsi_update_stack): Likewise.
16790         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
16791         always use an update form instruction to update the stack back
16792         chain word.
16793
16794 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
16795
16796         PR middle-end/38953
16797         * graphite.c (if_region_set_false_region): After moving a region in
16798         the false branch of a condition, remove the empty dummy basic block.
16799         (gloog): Remove wrong fix for PR38953.
16800
16801 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
16802
16803         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
16804         generation due to implicit sign extension.
16805
16806 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
16807
16808         PR middle-end/38981
16809         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
16810         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
16811
16812 2009-02-09  Richard Guenther  <rguenther@suse.de>
16813
16814         PR middle-end/35202
16815         * convert.c (convert_to_real): Disable (float)fn((double)x)
16816         to fnf(x) conversion if errno differences may occur and
16817         -fmath-errno is set.
16818
16819 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
16820
16821         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
16822         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
16823         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
16824
16825 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
16826
16827         PR c/35434
16828         * c-common.c (handle_alias_attribute): Disallow attribute for
16829         anything not a FUNCTION_DECL or VAR_DECL.
16830
16831 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
16832
16833         PR c/39035
16834         * real.c (do_compare): Special-case compare of zero against
16835         decimal float value.
16836
16837 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
16838
16839         PR c/36432
16840         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
16841         as indicating flexible array members unless the field itself is
16842         being declarared as the incomplete array.
16843
16844 2009-02-06  Jan Hubicka  <jh@suse.cz>
16845
16846         PR tree-optimization/38844
16847         * ipa-inline.c (try_inline): Stop inlining recursion when edge
16848         is already inlined.
16849
16850 2009-02-06  Richard Guenther  <rguenther@suse.de>
16851
16852         PR middle-end/38977
16853         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
16854         fork because we may expand it as __gcov_fork.
16855
16856 2009-02-06  Nick Clifton  <nickc@redhat.com>
16857
16858         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
16859
16860 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
16861
16862         PR tree-optimization/35659
16863         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
16864         vn_phi_eq): Shortcut if hashcode does not match.
16865         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
16866         NULL operands.
16867         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
16868         and avoid iterative_hash_expr.
16869         (FOR_EACH_VALUE_ID_IN_SET): New.
16870         (value_id_compare): Remove.
16871         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
16872         sort expressions by value id.
16873
16874 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
16875
16876         PR target/38991
16877         * config/sh/predicates.md (general_movsrc_operand): Don't check
16878         the subreg of system registers here.
16879
16880 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
16881
16882         PR c++/39106
16883         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
16884         on the copied decl.
16885
16886 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
16887
16888         PR rtl-optimization/39110
16889         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
16890         addresses, not aligned ones.
16891
16892 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
16893             Richard Guenther  <rguenther@suse.de>
16894
16895         PR tree-optimization/39100
16896         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
16897         comment says and add edges.
16898
16899 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
16900
16901         PR c/35435
16902         * c-common.c (handle_tls_model_attribute): Ignore attribute for
16903         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
16904
16905 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
16906
16907         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
16908         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
16909         register_bb_in_sese, new_sese, free_sese): Moved.
16910         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
16911         outermost_loop_in_scop, build_scop_iteration_domain,
16912         expand_scalar_variables_ssa_name, get_vdef_before_scop,
16913         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
16914         Use loop_in_sese_p instead of loop_in_scop_p.
16915         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
16916         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
16917         (scopdet_basic_block_info): Fix bug in scop detection.
16918         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
16919         eq_loop_to_cloog_loop): Remove.
16920         (nb_loops_around_loop_in_scop, nb_loop
16921         ref_nb_loops): Moved here...
16922         * graphite.h (ref_nb_loops): ... from here.
16923         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
16924         (loop_domain_dim, loop_iteration_vector_dim): Remove.
16925         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
16926         * testsuite/gcc.dg/graphite/scop-19.c: New
16927
16928 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
16929             Hans-Peter Nilsson  <hp@axis.com>
16930
16931         PR rtl-optimization/37889
16932         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
16933         Move offset handling from PLUS to before the switch.  Use new
16934         arguments when considering SYMBOL_REFs too.
16935         (rtx_addr_can_trap_p): Pass dummy offset and size.
16936         (enum may_trap_p_flags): Remove.
16937         (may_trap_p_1): Pass size from MEM_SIZE.
16938
16939         PR rtl-optimization/38921
16940         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
16941         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
16942         * rtlanal.c (may_trap_after_code_motion_p): Delete.
16943         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
16944
16945 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
16946
16947         AVX Programming Reference (January, 2009)
16948         * config/i386/sse.md (*vpclmulqdq): New.
16949
16950 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
16951
16952         PR tree-optimization/38977
16953         PR gcov-profile/38292
16954         * calls.c (special_function_p): Disregard __builtin_ prefix.
16955
16956 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
16957
16958         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
16959         non-indexable addresses even before reload.
16960
16961 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
16962
16963         PR c/29129
16964         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
16965         as having variable size.  Do not give an error for unnamed
16966         parameters with [*] declarators.  Give a warning for type names
16967         with [*] declarators and mark them as variable size.
16968         * c-parser.c (c_parser_sizeof_expression): Do not give an error
16969         for sizeof applied to [*] type names.
16970
16971 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16972
16973         PR C++/36607
16974         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
16975
16976 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
16977
16978         * gcc.c (process_command): Update copyright notice dates.
16979         * gcov.c (print_version): Likewise.
16980         * gcov-dump.c (print_version): Likewise.
16981         * mips-tfile.c (main): Likewise.
16982         * mips-tdump.c (main): Likewise.
16983
16984 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
16985
16986         PR c/35433
16987         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
16988         for composite type involving a zero-length array type.
16989
16990 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
16991
16992         PR target/35318
16993         * function.c (match_asm_constraints_1): Skip over
16994         initial optional % in the constraint.
16995
16996         PR inline-asm/39059
16997         * c-parser.c (c_parser_postfix_expression): If fixed point is not
16998         supported, don't accept FIXED_CSTs.
16999         * c-decl.c (finish_declspecs): Error if fixed point is not supported
17000         and _Sat is used without _Fract/_Accum.  Set specs->type to
17001         integer_type_node for cts_fract/cts_accum if fixed point is not
17002         supported.
17003
17004 2009-02-02  Catherine Moore  <clm@codesourcery.com>
17005
17006         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
17007
17008 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
17009
17010         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
17011         (ABI_HAS_64BIT_SYMBOLS): Use it.
17012         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
17013
17014 2009-02-02  Paul Brook  <paul@codesourcery.com>
17015
17016         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
17017
17018 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
17019
17020         PR inline-asm/39058
17021         * recog.h (asm_operand_ok): Add constraints argument.
17022         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
17023         recurse on matching constraint.
17024         (check_asm_operands): Pass constraints as 3rd argument to
17025         asm_operand_ok.  Don't look up matching constraint here.
17026         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
17027         to asm_operand_ok.
17028
17029 2009-02-02  Ben Elliston  <bje@au.ibm.com>
17030
17031         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
17032         TARGET_NARROW_VOLATILE_BITFIELD macro names.
17033
17034 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17035
17036         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
17037         information.  Remove some obsolete information.  Reorganize.
17038
17039         * config/pa/fptr.c: Revert license to GPL 2.
17040         * config/pa/milli64.S: Likewise.
17041
17042 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
17043
17044         PR target/38904
17045         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
17046         LIBRARY name in, instead of hard-coding it.
17047         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
17048         extra target make frag to tmake_files according to EH model.
17049         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
17050         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
17051         frags that define makefile variable EH_MODEL appropriately.
17052         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
17053         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
17054         to "-sjlj" according to type of EH configured.
17055         (LIBGCC_SONAME):  Concatenate it to shared library base name.
17056         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
17057         to "_sjlj" according to type of EH configured.
17058         (LIBGCC_SONAME):  Concatenate it to shared library base name.
17059         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
17060         (SHLIB_LINK):  Add missing semicolon to if-else construct.
17061         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
17062         string value of "pe_dll" command-line option.
17063         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
17064         (SHLIB_SONAME):  Use it when overriding t-cygming default.
17065         (SHLIB_IMPLIB):  Override t-cygming default.
17066         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
17067         string value of "pe_dll" command-line option.
17068
17069 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
17070
17071         PR target/38952
17072         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
17073         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
17074
17075 2009-01-31  Richard Guenther  <rguenther@suse.de>
17076
17077         PR tree-optimization/38937
17078         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
17079         computing the transitive closure.
17080
17081 2009-01-30  Richard Guenther  <rguenther@suse.de>
17082
17083         PR tree-optimization/39041
17084         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
17085         Propagate variable indices only if the types match for this stmt.
17086
17087 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
17088
17089         PR target/39013
17090         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
17091         inline but never defined.
17092
17093 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
17094
17095         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
17096         (*insv_h_di_reg_extimm): New insn.
17097         (*insv_l<mode>_reg_extimm): New insn.
17098
17099 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
17100
17101         * config/picochip/picochip.c (flag_conserve_stack): set
17102         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
17103         fconserve-stack. Reduce call-overhead used by inliner.
17104
17105 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
17106
17107         PR/38157
17108         * common.opt (flag_conserve_stack): Initialised to zero.
17109
17110 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
17111
17112         PR/39002
17113         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
17114         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
17115         method.
17116
17117 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
17118
17119         * ira-color.c (allocno_reload_assign): Update comments.
17120         * regmove.c (regmove_optimize): Likewise.
17121
17122         * ra.h: Removed.
17123
17124 2009-01-29  Robert Millan  <rmh@aybabtu.com>
17125
17126         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
17127         * config/i386/kopensolaris-gnu.h: New file.  Undefine
17128         `MD_UNWIND_SUPPORT'.
17129         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
17130
17131 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
17132
17133         PR tree-optimization/39007
17134         * tree-loop-distribution.c (generate_builtin): Use
17135         recompute_dominator to compute the immediate dominator of the
17136         basic block just after the loop.
17137
17138 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17139
17140         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
17141         (ASM_OUTPUT_DWARF_PCREL): Define.
17142
17143 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
17144
17145         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
17146         * doc/passes.texi: Remove entries about regclass, local-alloc, and
17147         global.  Modify entries about regmove and IRA.
17148
17149         * ra-conflict.c: Remove the file.
17150
17151         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
17152
17153         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
17154         (pass_regclass_init): Rename to pass_reginfo_init.
17155
17156         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
17157
17158         * toplev.h (flag_ira): Remove.
17159
17160         * caller-save.c (setup_save_areas): Remove flag_ira.
17161
17162         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
17163
17164         * global.c: Remove the file.
17165
17166         * opts.c (decode_options): Remove flag_ira.
17167
17168         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
17169
17170         * regmove.c: Modify file description.
17171         (find_use_as_address, try_auto_increment): Define them only if
17172         AUTO_INC_DEC is defined.
17173         (replacement_quality, replace_in_call_usage, fixup_match_1,
17174         stable_and_no_regs_but_for_p): Remove.
17175         (reg_set_in_bb): Make it static.
17176         (regmove_optimize): Remove flag_ira and code which worked for
17177         !flag_ira.
17178
17179         * local-alloc.c: Remove the file.
17180
17181         * common.opt (fira): Remove.
17182
17183         * ira.c: Include except.h.
17184         (eliminable_regset): Move from global.c.
17185         (mark_elimination): Ditto.  Remove flag_ira.
17186         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
17187         equiv_mem_modified, validate_equiv_mem_from_store,
17188         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
17189         contains_replace_regs, memref_referenced_p, memref_used_between_p,
17190         no_equiv, recorded_label_ref): Move from local-alloc.c.
17191         (update_equiv_regs): Ditto.  Make it static.
17192         (print_insn_chain, print_insn_chains): Move it from global.c.
17193         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
17194         (build_insn_chain): Ditto.  Make it static.
17195         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
17196         Rename to init_live_subregs.
17197         (gate_ira): Remove flag_ira.
17198
17199         * regclass.c: Rename reginfo.c.  Change file description.
17200         (FORBIDDEN_INC_DEC_CLASSES): Remove.
17201         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
17202         (init_reg_sets_1): Remove code for evaluation of
17203         reg_class_superclasses and losing_caller_save_reg_set.
17204         (init_regs): Remove init_reg_autoinc.
17205         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
17206         ok_for_base_p_nonstrict): Remove.
17207         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
17208         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
17209         corresponding entries.
17210         (dump_regclass, record_operand_costs, scan_one_insn,
17211         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
17212         record_address_regs, auto_inc_dec_reg_p): Remove.
17213         (gt-regclass.h): Rename to gt-reginfo.h.
17214
17215         * rtl.h (dump_global_regs, retry_global_alloc,
17216         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
17217
17218         * Makefile.in (RA_H): Remove.
17219         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
17220         Rename regclass.o to reginfo.o.
17221         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
17222         gt-reginfo.h.
17223         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
17224         (GTFILES): Rename regclass.c to reginfo.c.
17225
17226         * passes.c (init_optimization_passes): Remove pass_local_alloc and
17227         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
17228
17229         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
17230         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
17231         Remove flag_ira.
17232         (finish_spills): Ditto.  Remove code for !flag_ira.
17233
17234 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
17235
17236         PR middle-end/35854
17237         * doc/invoke.texi (rtl debug options): Complete rewrite.
17238         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
17239         to auto_inc_dec".
17240         * mode-switching.c (pass_mode_switching): Rename pass from
17241         "mode-sw" to "mode_sw".
17242         * except.c (pass_convert_to_eh_ranges): Rename pass from
17243         "eh-ranges" to "eh_ranges".
17244         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
17245         to "subreg1".
17246
17247
17248 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
17249             Alexander Monakov  <amonakov@ispras.ru>
17250
17251         PR middle-end/38857
17252         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
17253         register.
17254         (move_exprs_to_boundary): Change return type and pass through
17255         should_move from move_op.  Relax assert.  Update usage ...
17256         (schedule_expr_on_boundary): ... here.  Use should_move instead of
17257         cant_move.
17258         (move_op_orig_expr_found): Indicate that insn was disconnected from
17259         stream.
17260         (code_motion_process_successors): Do not call after_merge_succs
17261         callback if original expression was not found when traversing any of
17262         the branches.
17263         (code_motion_path_driver): Change return type.  Update prototype.
17264         (move_op): Update comment.  Add a new parameter (should_move).  Update
17265         prototype.  Set *should_move based on indication provided by
17266         move_op_orig_expr_found.
17267
17268 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
17269
17270         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
17271         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
17272         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
17273         * config/rs6000/rs6000.c (rs6000_override_options): Default
17274         avoid-indexed-addresses on for Power6, off for everything else.
17275         (avoiding_indexed_address_p): New function.
17276         (rs6000_legitimize_address): Use it.
17277         (rs6000_legitimate_address): Likewise.
17278         * config/rs6000/rs6000.md (movXX_updateX): Likewise
17279
17280 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
17281
17282         PR tree-optimization/38997
17283         * tree-loop-distribution.c (generate_memset_zero): Use
17284         POINTER_PLUS_EXPR for a pointer addition.
17285
17286 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17287
17288         * config/s390/s390.md (bswap<mode>2): New pattern added.
17289
17290 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
17291
17292         * config/s390/s390.md (*tls_load_31): Added type attribute.
17293
17294 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
17295
17296         * config/s390/s390.md: Fix a few comments.
17297
17298 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
17299
17300         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
17301         (*tm<mode>_full): Fixed z10prop attribute.
17302         (*tst<mode>_extimm): Fixed z10prop attribute.
17303         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
17304         (*tstqiCCT_cconly): Fixed z10prop attribute.
17305         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
17306         (*movsi_larl): Fixed z10prop attribute.
17307         (*movsi_zarch): Fixed z10prop attribute.
17308         (*movsi_eas): Fixed z10prop attribute.
17309         (*movhi): Fixed z10prop attribute.
17310         (*movqi): Fixed z10prop attribute.
17311         (*movstrictqi): Fixed z10prop attribute.
17312         (*mov<mode>): Fixed z10prop attribute.
17313         (*movcc): Fixed z10prop attribute.
17314         (*sethighpartdi_64): Fixed z10prop attribute.
17315         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
17316         (*negdi2_sign_cc): Fixed z10prop attribute.
17317         (*negdi2_sign): Fixed z10prop attribute.
17318         (*absdi2_sign_cc): Fixed z10prop attribute.
17319         (*absdi2_sign): Fixed z10prop attribute.
17320         (*negabsdi2_sign_cc): Fixed z10prop attribute.
17321         (*negabsdi2_sign): Fixed z10prop attribute.
17322         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
17323         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
17324         (doloop_si64): Fixed z10prop attribute.
17325         (doloop_si31): Fixed z10prop attribute.
17326         (doloop_long): Fixed z10prop attribute.
17327         (indirect_jump): Fixed z10prop attribute.
17328         (nop): Fixed z10prop attribute.
17329         (main_base_64): Fixed z10prop attribute.
17330         (reload_base_64): Fixed z10prop attribute.
17331
17332 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
17333
17334         PR rtl-optimization/38740
17335         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
17336         if !optimize.
17337         * config/mips/mips.c (mips_reorg): Likewise.
17338
17339 2009-01-28  Richard Guenther  <rguenther@suse.de>
17340
17341         PR tree-optimization/38926
17342         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
17343         with the correct value id to a value.
17344         (do_regular_insertion): Use the value number of edoubleprime
17345         for the value number of the expr.
17346
17347         Revert
17348         2008-08-21  Richard Guenther  <rguenther@suse.de>
17349
17350         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
17351         a PHI ask VN if it is already available.
17352         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
17353         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
17354
17355 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
17356
17357         PR middle-end/38934
17358         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
17359         set to varying whenever max has TREE_OVERFLOW set, similarly
17360         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
17361
17362 2009-01-28  Richard Guenther  <rguenther@suse.de>
17363
17364         PR middle-end/38908
17365         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
17366         uninitialized aggregate uses in call arguments.
17367
17368 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
17369
17370         PR tree-optimization/38984
17371         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
17372         the nothing_id variable if -fno-delete-null-pointer-checks.
17373
17374 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
17375
17376         PR target/38988
17377         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
17378         (set_got_offset_rex64): Ditto.
17379
17380 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
17381
17382         PR target/38941
17383         * doc/extend.texi: Improve local variable with asm reg.
17384
17385 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
17386
17387         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
17388         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
17389         was not supplied then set warn_packed_bitfield_compat to the
17390         default value of 1.
17391         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
17392         against 1.
17393
17394 2009-01-27  Richard Guenther  <rguenther@suse.de>
17395
17396         PR tree-optimization/38503
17397         * cfgexpand.c (expand_gimple_basic_block): Ignore
17398         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
17399         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
17400         variables that cannot have TBAA applied.
17401         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
17402         statements.
17403
17404 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
17405
17406         PR middle-end/38969
17407         * calls.c (initialize_argument_information): Do not wrap complex
17408         arguments in SAVE_EXPR.
17409
17410 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
17411
17412         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
17413         (INSTALL_LIBGCC): Revert typo commit.
17414
17415 2009-01-26  Richard Guenther  <rguenther@suse.de>
17416
17417         PR tree-optimization/38745
17418         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
17419         from special handling.
17420
17421 2009-01-26  Richard Guenther  <rguenther@suse.de>
17422
17423         PR tree-optimization/38745
17424         * tree-ssa.c (execute_update_addresses_taken): Do not include
17425         variables that cannot possibly be a register in not_reg_needs.
17426         Do not clear TREE_ADDRESSABLE on vars that may not become
17427         registers.
17428         * tree-ssa.c (update_alias_info_1): Include those in the set
17429         of addressable vars.
17430
17431 2009-01-26  Richard Guenther  <rguenther@suse.de>
17432
17433         PR middle-end/38851
17434         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
17435         * tree-ssa-dse.c: Include langhooks.h
17436         (execute_simple_dse): Remove stores with zero size.
17437
17438 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
17439
17440         PR c/38957
17441         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
17442         as PLUS_EXPR.
17443
17444 2009-01-24  Julian Brown  <julian@codesourcery.com>
17445
17446         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
17447         config/arm/linux-atomic.c.
17448         * config/arm/linux-atomic.c: New.
17449
17450 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
17451
17452         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
17453         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
17454         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
17455
17456 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
17457
17458         PR c/38938
17459         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
17460         properly.
17461
17462 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
17463
17464         PR tree-optimization/38953
17465         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
17466         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
17467         (gloog): Split the exit of the scop when the scop exit is a loop exit.
17468         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
17469         changed the CFG.
17470
17471 2009-01-24  Paul Brook  <paul@codesourcery.com>
17472
17473         * config/arm/neon.md (neon_type): Move to arm.md.
17474         (neon_mov<VSTRUCT>): Add neon_type attribute.
17475         * config/arm/arm.md (neon_type): Move to here.
17476         (conds): Add "unconditioal" and use as default for NEON insns.
17477
17478 2009-01-24  Ben Elliston  <bje@au.ibm.com>
17479
17480         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
17481         void *' warning from -Wc++-compat.
17482         * Makefile.in (dominance.o-warn): Remove.
17483
17484 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
17485
17486         PR tree-optimization/38932
17487         * fold-const.c (fold_unary_ignore_overflow): New.
17488         * tree.h (fold_unary_ignore_overflow): Declare.
17489         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
17490         * tree-ssa-sccvn.c (visit_reference_op_load,
17491         simplify_unary_expression): Likewise.
17492
17493 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
17494
17495         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
17496         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
17497         regardless of their type.
17498         * c-common.c (handle_packed_attribute): Don't ignore packed on
17499         bitfields.
17500         * c.opt (Wpacked-bitfield-compat): New warning option.
17501         * stor-layout.c (place_field): Warn if offset of a field changed.
17502         * doc/extend.texi (packed): Mention the ABI change.
17503         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
17504         (Warning Options): Add it to the list.
17505
17506 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
17507
17508         * c-opts.c (c_common_post_options): Fix a typo in comments.
17509
17510 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
17511
17512         PR middle-end/38615
17513         * gimplify.c (gimplify_init_constructor): Fix promotion of const
17514         variables to static.
17515         * doc/invoke.texi (-fmerge-all-constants): Update description.
17516
17517 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
17518
17519         PR target/38931
17520         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
17521         (*movdi_1_rex64): Use type "mmx" for alternative 5.
17522
17523 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
17524
17525         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
17526         a word boundary.
17527         (LOCAL_ALIGNMENT): Similarly.
17528
17529 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
17530             Joseph Myers  <joseph@codesourcery.com>
17531
17532         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
17533         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
17534         * config/arm/arm-tune.md: Regenerate.
17535         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
17536         -march=iwmmxt2.
17537
17538 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
17539
17540         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
17541         version number to five.
17542
17543 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
17544
17545         PR c++/38930
17546         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
17547         * c-common.c (set_underlying_type): Likewise.
17548         (is_typedef_decl ): Likewise
17549         * tree.h: Likewise
17550         (set_underlying_type): Likewise.
17551         (is_typedef_type): Likewise.
17552
17553 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
17554
17555         PR middle-end/38587
17556         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
17557         crossing setjmps.
17558
17559 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
17560
17561         PR bootstrap/37660
17562         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
17563         (LIBGCC_SPEC):  Don't define.
17564         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
17565
17566 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
17567
17568         PR rtl-optimization/38879
17569         * alias.c (base_alias_check): Unaligned access via AND address can
17570         alias all surrounding object types except those with sizes equal
17571         or wider than the size of unaligned access.
17572
17573 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
17574
17575         PR c++/26693
17576         * c-decl.c (clone_underlying_type): Move this ...
17577         * c-common.c (set_underlying_type): ... here.
17578         Also, make sure the function properly sets TYPE_STUB_DECL() on
17579         the newly created typedef variant type.
17580         (is_typedef_decl ): New entry point.
17581         * tree.h: Added a new member member_types_needing_access_check to
17582         struct tree_decl_non_common.
17583         (set_underlying_type): New entry point.
17584         (is_typedef_type): Likewise.
17585
17586 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
17587
17588         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
17589         Check whether two instructions have memory references that
17590         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
17591         are helper functions for traversing.
17592         * alias.h (insn_alias_sets_confilict_p): New prototypes.
17593         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
17594         not to draw dependency edge for instructions with non-conflicting
17595         alias sets.
17596
17597 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
17598
17599         PR other/38758
17600         * longlong.h: Update copyright years.  Use soft-fp license notice.
17601         Sync __clz_tab declaration with glibc.
17602
17603 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
17604
17605         PR target/30687
17606         * doc/extend.texi (syscall_linkage): New.
17607         (version_id): Modify.
17608
17609 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17610             Richard Guenther  <rguenther@suse.de>
17611
17612         PR tree-optimization/38747
17613         PR tree-optimization/38748
17614         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
17615         conversion if the base address is an indirect reference and the
17616         aliasing sets could cause issues.
17617
17618 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
17619
17620         * common.opt (fgraphite, fgraphite-identity): Add comment for
17621         explaining why these options are not documented.
17622
17623 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
17624
17625         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
17626         gimple_call_lhs is NULL.
17627
17628 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
17629
17630         PR target/38868
17631         * emit-rtl.c (adjust_address_1): Make sure memref is never
17632         overwritten.
17633
17634 2009-01-20  Ben Elliston  <bje@au.ibm.com>
17635
17636         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
17637         const qualifier from arg parameter. Remove unnecessary cast to char *.
17638         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
17639         const qualifier from arg 2.
17640
17641 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
17642
17643         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
17644
17645 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
17646
17647         PR c/38869
17648         * rtl.h (reinit_regs): New prototype.
17649         * regclass.c: Include ira.h.
17650         (reinit_regs): New.
17651         * Makefile.in (regclass.o): Add ira.h.
17652         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
17653
17654 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
17655
17656         PR target/38736
17657         * c-common.c (handle_aligned_attribute): Use
17658         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
17659         default alignment value.
17660
17661         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
17662
17663         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
17664         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
17665
17666         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
17667         __BIGGEST_ALIGNMENT__.
17668
17669         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
17670
17671 2009-01-18  Richard Guenther  <rguenther@suse.de>
17672
17673         PR tree-optimization/38819
17674         * tree-flow.h (operation_could_trap_helper_p): Declare.
17675         * tree-eh.c (operation_could_trap_helper_p): Export.
17676         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
17677         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
17678         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
17679         are about to insert a possibly trapping instruction and fail
17680         in this case.
17681
17682 2009-01-18  Andreas Schwab  <schwab@suse.de>
17683
17684         * doc/install.texi (Configuration): Remove obsolete paragraph
17685         about use of --with-gnu-ld with --with-gnu-as.
17686
17687 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
17688
17689         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
17690         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
17691         Follow spelling conventions.
17692
17693 2009-01-18  Ben Elliston  <bje@au.ibm.com>
17694
17695         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
17696         C++ warning about implicit conversion from void * to struct
17697         bitmap_head_def *.
17698         (bitmap_obstack_free): Likewise for bitmap_element *.
17699         * Makefile.in (bitmap.o-warn): Remove.
17700
17701 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
17702
17703         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
17704
17705 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
17706             Tobias Grosser  <tobi.grosser@amd.com>
17707
17708         * graphite.c (graphite_trans_scop_block): Do not block single
17709         nested loops.
17710
17711 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
17712
17713         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
17714         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
17715         test with assertion.
17716
17717 2009-01-16  Richard Guenther  <rguenther@suse.de>
17718
17719         PR tree-optimization/38835
17720         PR middle-end/36227
17721         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
17722         and INT + PTR -> (INT)(PTR p+ INT) folding.
17723         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
17724
17725 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
17726
17727         PR target/38554
17728         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
17729         the subreg from a lowpart subreg if it is also casting the value.
17730
17731 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
17732             Tobias Grosser  <tobi.grosser@amd.com>
17733
17734         * graphite.c (compare_prefix_loops): New.
17735         (build_scop_canonical_schedules): Rewritten.
17736         (graphite_transform_loops): Move build_scop_canonical_schedules
17737         after build_scop_iteration_domain.
17738
17739 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
17740             Tobias Grosser  <tobi.grosser@amd.com>
17741
17742         * graphite.c (add_conditions_to_domain): Add the loops to
17743         the dimension of the iteration domain.  Do copy the domain
17744         only when it exists.
17745         (build_scop_conditions_1): Do not call add_conditions_to_domain.
17746         (add_conditions_to_constraints): New.
17747         (can_generate_code_stmt, can_generate_code): Removed.
17748         (gloog): Do not call can_generate_code.
17749         (graphite_transform_loops): Call add_conditions_to_constraints
17750         after building the iteration domain.
17751
17752 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
17753
17754         PR tree-optimization/38789
17755         * tree-ssa-threadedge.c
17756         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
17757         __builtin_constant_p.
17758
17759 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
17760
17761         * dce.c (delete_unmarked_insns): Reversed the order that insns are
17762         examined before deleting them.
17763
17764 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
17765
17766         * function.c (aggregate_value_p): Correctly extract the function
17767         type from CALL_EXPR_FN lookup.
17768
17769 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
17770
17771         * config/picochip/picochip.c (picochip_override_options): Revert
17772         CFI asm flag disable commited previously.
17773
17774 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
17775             Tobias Grosser  <tobi.grosser@amd.com>
17776             Jan Sjodin  <jan.sjodin@amd.com>
17777
17778         * graphite.c (scan_tree_for_params): On substractions negate
17779         all the coefficients of the term.
17780         (clast_to_gcc_expression_red): New.  Handle reduction expressions
17781         of more than two operands.
17782         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
17783         (get_vdef_before_scop): Handle also the case of default definitions.
17784
17785 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
17786
17787         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
17788         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
17789         Also use them when walking CALL_INSN_FUNCTION_USAGE.
17790
17791 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
17792             Joey Ye  <joey.ye@intel.com>
17793
17794         PR middle-end/37843
17795         * cfgexpand.c (expand_stack_alignment): Don't update stack
17796         boundary nor check incoming stack boundary here.
17797         (gimple_expand_cfg): Update stack boundary and check incoming
17798         stack boundary here.
17799
17800 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
17801
17802         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
17803
17804 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
17805
17806         PR rtl-optimization/38245
17807         * calls.c (expand_call): Add stack arguments to
17808         CALL_INSN_FUNCTION_USAGE even for pure calls (when
17809         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
17810         in regs and partially in memory or BLKmode arguments.
17811         (emit_library_call_value_1): Add stack arguments to
17812         CALL_INSN_FUNCTION_USAGE even for pure calls (when
17813         ACCUMULATE_OUTGOING_ARGS).
17814         * dce.c: Include tm_p.h.
17815         (find_call_stack_args): New function.
17816         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
17817         argument.
17818         (mark_insn): Call find_call_stack_args for CALL_Ps.
17819         (prescan_insns_for_dce): Walk insns backwards in bb rather than
17820         forwards.  Allocate and free arg_stores bitmap if needed, pass it
17821         down to deletable_insn_p, don't mark stores set in arg_stores
17822         bitmap, clear the bitmap at the beginning of each bb.
17823         * Makefile.in (dce.o): Depend on $(TM_P_H).
17824
17825 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
17826
17827         PR target/22599
17828         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
17829         to make sure the insn is a conditional test (bug 22599).  Reformat a
17830         few long lines.
17831
17832 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
17833
17834         PR middle-end/38431
17835         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
17836         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
17837         (gloog): Do not call cleanup_tree_cfg.
17838         (graphite_transform_loops): Call cleanup_tree_cfg after all
17839         scops have been code generated.
17840
17841 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
17842         * doc/gty.texi (Invoking the garbage collector): Added new node
17843         and section documenting ggc_collect.
17844
17845 2009-01-14  Richard Guenther  <rguenther@suse.de>
17846
17847         PR tree-optimization/38826
17848         PR middle-end/38477
17849         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
17850         initialization notes only if we actually emitted a warning.
17851         (intra_create_variable_infos): Add constraints for a result decl
17852         that is passed by hidden reference.
17853         (build_pred_graph): Mark all related variables non-direct on
17854         address-taking.
17855
17856 2009-01-14  Nick Clifton  <nickc@redhat.com>
17857
17858         * ira-conflicts.c: Include addresses.h for the definition of
17859         base_reg_class.
17860         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
17861         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
17862
17863 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
17864
17865         PR target/38811
17866         * Makefile.in (ira-lives.o): Add except.h.
17867
17868         * ira-lives.c: Include except.h.
17869         (process_bb_node_lives): Process can_throw_internal.
17870
17871 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
17872
17873         PR rtl-optimization/38774
17874         * combine.c (simplify_set): When undoing cc_use change, don't do
17875         PUT_CODE on the newly created comparison, but instead put back the
17876         old comparison.
17877
17878 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
17879
17880         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
17881         values.  Remove duplicate arm8 entry.
17882
17883 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
17884
17885         PR tree-optimization/38786
17886         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
17887         the SSA_NAME case of expand_scalar_variables_expr.
17888         Set the type of an expression to the type of its assign statement.
17889         (expand_scalar_variables_expr): Also gather the scalar computation
17890         used to index the memory access.  Do not pass loop_p.
17891         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
17892         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
17893         the gimple_stmt_iterator where it inserts new code.
17894         Do not pass loop_p.
17895         (copy_bb_and_scalar_dependences): Do not pass loop_p.
17896         (translate_clast): Update call to copy_bb_and_scalar_dependences.
17897
17898 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
17899
17900         * graphite.h (debug_value): Removed.
17901         * graphite.c (debug_value): Removed.
17902
17903 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
17904
17905         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
17906         ldrd/strd with two 32-bit instructions.
17907
17908 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
17909
17910         * config/arm/arm.c (struct processors): Pass for speed down into
17911         cost helper functions.
17912         (const_ok_for_op): Handle COMPARE and inequality nodes.
17913         (arm_rtx_costs_1): Rewrite.
17914         (arm_size_rtx_costs): Update prototype.
17915         (arm_rtx_costs): Pass speed down to helper functions.
17916         (arm_slowmul_rtx_costs): Rework cost calculations.
17917         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
17918         (arm_9e_rtx_costs): Likewise.
17919
17920 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
17921
17922         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
17923         relocations of local symbols wider than UNITS_PER_WORD are not valid.
17924         (alpha_legitimize_address): Do not split local symbols wider than
17925         UNITS_PER_WORD into HIGH/LO_SUM parts.
17926
17927 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
17928
17929         PR bootstrap/38580
17930         * gcc.c (process_command): Replace call to execvp with calls
17931         to pex_one and exit.
17932
17933 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
17934
17935         PR target/29141
17936         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
17937         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
17938         variant for devices with 3-byte PC.
17939         (__tablejump_elpm__): New.
17940
17941 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
17942
17943         PR c/32041
17944         * c-parser.c (c_parser_postfix_expression): Allow `->' in
17945         offsetof member-designator, handle it as `[0].'.
17946
17947 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
17948
17949         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
17950         function when not using named sections on targets with named sections
17951         if branch distance is less than 262132.
17952
17953 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
17954
17955         * combine.c (combine_instructions):  Recompute
17956         optimize_this_for_speed_p  for each BB in the main combine loop.
17957
17958 2009-01-12  Tomas Bily  <tbily@suse.cz>
17959
17960         PR middlend/38385
17961         * tree-loop-distribution.c (prop_phis): New function.
17962         (generate_builtin): Call prop_phis.
17963         * testsuite/gcc.dg/tree-ssa/pr38385.c: New file.
17964
17965 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
17966
17967         PR tree-optimization/38807
17968         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
17969         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
17970
17971 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
17972
17973         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
17974         subreg of op0 to the original op0.
17975
17976 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
17977
17978         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
17979
17980 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
17981
17982         PR debug/7055
17983         * mips-tfile.c (parse_def): Fix parsing of def strings
17984         starting with digits.
17985
17986 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
17987
17988         PR target/38695
17989         * config/arm/arm.c (arm_is_long_call_p): Don't call
17990         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
17991
17992 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
17993
17994         * regrename.c (regrename_optimize): Fix dumping.
17995         (find_oldest_value_reg): Preserve REG_POINTER.
17996         (copy_hardreg_forward_1): Likewise.
17997
17998 2009-01-09  Diego Novillo  <dnovillo@google.com>
17999
18000         * gimple.h (struct gimple_statement_base) <uid>: Document
18001         the restrictions on its use.
18002         (gimple_uid): Tidy.
18003         (gimple_set_uid): Tidy.
18004
18005 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
18006
18007         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
18008         zero guard even if align_bytes != 0 and count is smaller than
18009         size_needed.
18010
18011 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
18012
18013         PR rtl-optimization/38495
18014         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
18015         (add_range_and_copies_from_move_list): Print all added ranges.
18016         Add ranges to memory optimized destination.
18017
18018 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
18019
18020         PR target/38686
18021         PR target/38708
18022         * config/i386/i386.c (override_options): Reject
18023         -mstringop-strategy=rep_8byte with -m32.
18024         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
18025         to 1.  Do count comparison against epilogue_size_needed at compile
18026         time even when count_exp was constant forced into register.  For
18027         size_needed don't jump to epilogue, instead just avoid aligning
18028         and invoke the body algorithm.  If need_zero_guard, add zero guard
18029         even if count is non-zero, but smaller than size_needed + number of
18030         bytes that could be stored for alignment.
18031         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
18032         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
18033         but smaller than size_needed + number of bytes that could be stored
18034         for alignment.  Compare size_needed with epilogue_size_needed instead
18035         of desired_align - align, don't adjust size_needed, pass
18036         epilogue_size_needed to the epilogue expanders.
18037
18038         PR c/35742
18039         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
18040
18041 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18042
18043         * pa.c (last_address): Change to unsigned.
18044         (update_total_code_bytes): Change argument to unsigned.  Don't
18045         check if insn addresses are set.
18046         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
18047         addresses are not set.
18048         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
18049
18050 2009-01-09  Nick Clifton  <nickc@redhat.com>
18051
18052         * config/sh/symbian.c: Replace uses of DECL_INLINE with
18053         DECL_DECLARED_INLINE_P.
18054
18055 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
18056
18057         PR middle-end/38347
18058         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
18059         GET_MODE (op0) in operand_subword_force calls.
18060
18061         PR middle-end/38771
18062         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
18063         fold_convert arg0 operands to TREE_TYPE (op0) first.
18064
18065 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
18066
18067         * params.def (ira-max-conflict-table-size): Decrease default value
18068         to 1000.
18069
18070 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
18071
18072         PR tree-optimization/37031
18073         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
18074         on parameter_set.
18075         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
18076         allocate it using gc instead of heap, use VEC_quick_push instead of
18077         VEC_safe_push.
18078         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
18079         instead of heap, use VEC_quick_push instead of VEC_safe_push.
18080         * tree-data-ref.h (struct access_matrix): Change matrix to gc
18081         allocated vector from heap allocated.
18082         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
18083         * tree-loop-linear.c (linear_transform_loops): Allocate nest
18084         vector only after perfect_loop_nest_depth call.
18085
18086 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
18087             Jan Sjodin  <jan.sjodin@amd.com>
18088
18089         PR tree-optimization/38559
18090         * graphite.c (debug_value, copy_constraint,
18091         swap_constraint_variables, scale_constraint_variable, ): New.
18092         (get_lower_bound, get_upper_bound): Removed.
18093         (graphite_trans_bb_strip_mine): Clean up this code that works
18094         only for constant number of iterations.  Fully copy upper and
18095         lower bound constraints, not only the constant part of them.
18096         * graphite.h (debug_value): Declared.
18097
18098 2009-01-08  Ira Rosen  <irar@il.ibm.com>
18099
18100         PR tree-optimization/37194
18101         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
18102         Don't add the cost of cost model guard in prologue to scalar
18103         outside cost in case of known number of iterations.
18104
18105 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
18106             Alan Modra  <amodra@bigpond.net.au>
18107
18108         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
18109         non-word-aligned REG+CONST addressing.
18110
18111 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
18112
18113         PR target/38706
18114         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
18115         free_after_compilation when outputting a thunk.
18116         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
18117         Do not call free_after_compilation here.
18118
18119 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
18120
18121         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
18122         (ix86_valid_target_attribute_inner_p): Ditto.
18123
18124 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
18125
18126         PR tree-optimization/38492
18127         PR tree-optimization/38498
18128         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
18129         * tree-chrec.h (scev_is_linear_expression): Declared.
18130         * graphite.c (graphite_cannot_represent_loop_niter): New.
18131         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
18132         (graphite_loop_normal_form): Use gcc_assert.
18133         (scan_tree_for_params): Use CASE_CONVERT.
18134         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
18135         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
18136         Use gcc_assert.  Discard scops that contain unhandled cases.
18137         (build_scop_conditions): Return a boolean status for unhandled cases.
18138         (strip_mine_profitable_p): Print the loop number, not its depth.
18139         (is_interchange_valid): Pass the depth of the loop nest, don't
18140         recompute it wrongly.
18141         (graphite_trans_bb_block): Same.
18142         (graphite_trans_bb_block): Print tentative of loop blocking.
18143         (graphite_trans_scop_block): Do not print that the loop has been
18144         blocked.
18145         (graphite_transform_loops): Do not handle scops that contain condition
18146         scalar phi nodes.
18147
18148 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
18149
18150         AVX Programming Reference (December, 2008)
18151         * config/i386/avxintrin.h (_mm256_stream_si256): New.
18152         (_mm256_stream_pd): Likewise.
18153         (_mm256_stream_ps): Likewise.
18154
18155         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
18156         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
18157         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
18158         (bdesc_special_args): Add __builtin_ia32_movntdq256,
18159         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
18160         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
18161         (ix86_expand_special_args_builtin): Likewise.
18162
18163         * config/i386/sse.md (AVXMODEDI): New.
18164         (avx_movnt<mode>): Likewise.
18165         (avx_movnt<mode>): Likewise.
18166         (<sse>_movnt<mode>): Remove AVX support.
18167         (sse2_movntv2di): Likewise.
18168
18169 2009-01-07  Richard Guenther  <rguenther@suse.de>
18170
18171         PR middle-end/38751
18172         * fold-const.c (extract_muldiv): Remove obsolete comment.
18173         (fold_plusminus_mult_expr): Undo MINUS_EXPR
18174         to PLUS_EXPR canonicalization for the canonicalization.
18175
18176 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
18177
18178         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
18179         hosted cross-compilers generating less efficient code.
18180
18181 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
18182
18183         * function.h (rtl_data): Add a dbr_scheduled_p field.
18184         * reorg.c (dbr_schedule): Set it.
18185         (gate_handle_delay_slots): Check it.
18186         * config/mips/mips.c (mips_base_delayed_branch): Delete.
18187         (mips_reorg): Check flag_delayed_branch instead of
18188         mips_base_delayed_branch.
18189         (mips_override_options): Don't set mips_base_delayed_branch
18190         or flag_delayed_branch.
18191
18192 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
18193
18194         PR rtl-optimization/38426.
18195         * ira.c (ira): Set current_function_is_leaf earlier.
18196
18197 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
18198
18199         PR rtl-optimization/38722
18200         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
18201         too early, only set a flag and modify after last possible
18202         undo_all point.
18203
18204 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
18205
18206         PR c/34252
18207         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
18208         * real.c (decimal_single_format): Correct values of emin and emax.
18209         (decimal_double_format): Ditto.
18210         (decimal_quad_format): Ditto.
18211         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
18212         computation of DECnn_MIN and DECnn_MAX for corrected values of
18213         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
18214         __DECnn_MIN__, and adjust its computation for the corrected value
18215         of emin.
18216
18217 2009-01-06  Jan Hubicka  <jh@suse.cz>
18218
18219         PR target/38744
18220         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
18221
18222 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
18223
18224         * doc/contrib.texi (Contributors): Slightly adjust the end note.
18225         Add Robert Clark to the list of testers.
18226
18227 2009-01-06  Jan Hubicka  <jh@suse.cz>
18228             Kai Tietz  <kai.tietz@onevision.com>
18229
18230         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
18231         * config/i386/i386.c (ix86_expand_call): Add clobbers.
18232
18233 2009-01-06  Jan Hubicka  <jh@suse.cz>
18234             Kai Tietz  <kai.tietz@onevision.com>
18235
18236         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
18237         for w64 ABI.
18238         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
18239         (ix86_nsaved_regs): Count only general purpose regs.
18240         (ix86_nsaved_sseregs): New.
18241         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
18242         to 16 for w64; compute padding and size of sse reg save area.
18243         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
18244         general purpose regs.
18245         (ix86_emit_save_sse_regs_using_mov): New.
18246         (ix86_expand_prologue): Save SSE regs if needed.
18247         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
18248         (ix86_emit_restore_sse_regs_using_mov): New.
18249         (ix86_expand_epilogue): Save SSE regs if needed.
18250
18251 2009-01-06  Jan Hubicka  <jh@suse.cz>
18252             Kai Tietz  <kai.tietz@onevision.com>
18253
18254         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
18255         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
18256         functions when accumulate outgoing args is off.
18257
18258 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
18259
18260         PR bootstrap/38742
18261         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
18262         before using pseudos_have_intersected_live_ranges_p.
18263
18264         * ira-int.h (ira_assert): Always define.
18265
18266 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
18267
18268         AVX Programming Reference (December, 2008)
18269         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
18270         (_mm256_permute2_pd): Likewise.
18271         (_mm_permute2_ps): Likewise.
18272         (_mm256_permute2_ps): Likewise.
18273         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
18274         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
18275
18276         * config/i386/i386.c (ix86_builtins): Remove
18277         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
18278         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
18279         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
18280         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
18281         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
18282         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
18283         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
18284         __builtin_ia32_vpermil2ps256.
18285         (ix86_init_mmx_sse_builtins): Updated.
18286         (ix86_expand_args_builtin): Likewise.
18287
18288 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18289
18290         * pa.c (output_call): Relocate non-jump insns in the delay slot of
18291         long absolute calls when generating PA 2.0 code.
18292
18293 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
18294
18295         PR rtl-optimization/38583
18296         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
18297
18298         * params.def (ira-max-conflict-table-size): New.
18299
18300         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
18301
18302         * ira.h (ira_conflicts_p): New external definition.
18303
18304         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
18305         table.  Report this.  Return result of building.
18306         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
18307         building conflict table.
18308
18309         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
18310         (ira_color): Use ira_conflicts_p.
18311
18312         * global.c: Include ira.h.
18313         (pseudo_for_reload_consideration_p, build_insn_chain): Use
18314         ira_conflicts_p.
18315
18316         * Makefile.in (global.o): Add ira.h.
18317
18318         * ira-build.c (mark_all_loops_for_removal,
18319         propagate_some_info_from_allocno): New.
18320         (remove_unnecessary_allocnos): Call
18321         propagate_some_info_from_allocno.
18322         (remove_low_level_allocnos): New.
18323         (remove_unnecessary_regions): Add parameter.  Call
18324         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
18325         parameter to remove_unnecessary_regions.
18326         (ira_build): Remove all regions but root if the conflict table was
18327         not built.  Update conflict hard regs for allocnos crossing calls.
18328
18329         * ira.c (ira_conflicts_p): New global.
18330         (ira): Define and use ira_conflicts_p.
18331
18332         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
18333         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
18334         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
18335
18336 2009-01-06  Ben Elliston  <bje@au.ibm.com>
18337
18338         * gengtype-lex.l (YY_NO_INPUT): Define.
18339
18340 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18341
18342         PR c/34911
18343         * c-common.c (handle_vector_size_attribute): Also reject
18344         BOOLEAN_TYPE types.
18345
18346 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
18347
18348         PR tree-optimization/38492
18349         * graphite.c (rename_map_elt, debug_rename_elt,
18350         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
18351         rename_map_elt_info, eq_rename_map_elts,
18352         get_new_name_from_old_name, bb_in_sese_p): Moved around.
18353         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
18354         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
18355         (sese_build_livein_liveouts): New.
18356         (new_sese, free_sese): New.
18357         (new_scop): Call new_sese.
18358         (free_scop): Call free_sese.
18359         (rename_variables_from_edge, rename_phis_end_scop): Removed.
18360         (register_old_new_names): Renamed register_old_and_new_names.
18361         (register_scop_liveout_renames, add_loop_exit_phis,
18362         insert_loop_close_phis, struct igp,
18363         default_liveout_before_guard, add_guard_exit_phis,
18364         insert_guard_phis, copy_renames): New.
18365         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
18366         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
18367         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
18368         (scop_adjust_phis_for_liveouts): New.
18369         (gloog): Call scop_adjust_phis_for_liveouts.
18370
18371         * graphite.h (struct sese): Documented.  Added fields liveout,
18372         num_ver and livein.
18373         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
18374         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
18375         (struct scop): Added field liveout_renames.
18376         (SCOP_LIVEOUT_RENAMES): New.
18377
18378 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18379
18380         PR tree-optimization/38510
18381         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
18382         (translate_clast): Call recompute_all_dominators before
18383         graphite_verify.
18384         (gloog): Call recompute_all_dominators before graphite_verify.
18385
18386 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
18387             Jan Sjodin  <jan.sjodin@amd.com>
18388
18389         PR tree-optimization/38500
18390         * graphite.c (create_sese_edges): Call fix_loop_structure after
18391         splitting blocks.
18392
18393 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
18394
18395         * config.gcc: Add m32r*-*-rtems*.
18396         * config/m32r/rtems.h: New file.
18397
18398 2009-01-05  Ben Elliston  <bje@au.ibm.com>
18399
18400         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
18401         (.po.pox): Likewise.
18402         (po/gcc.pot): Likewise.
18403
18404 2009-01-04  David S. Miller  <davem@davemloft.net>
18405
18406         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
18407         (STARTING_FRAME_OFFSET): Always set to zero.
18408
18409 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
18410
18411         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
18412         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
18413         fixed-point types, and vectors of the same.
18414
18415 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
18416
18417         * config/mips/sync.md (*mb_barrier): Rename to...
18418         (*memory_barrier): ...this.
18419
18420 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
18421
18422         * doc/extend.texi (Function Attributes): Move @cindex after @item
18423         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
18424         and put in alphabetical order. Fix 'target' name and put in order.
18425         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
18426         typos.
18427
18428 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
18429
18430         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
18431         (memory_barrier): Expand as unspec instead of unspec_volatile.
18432         Remove mem:BLK from insn operands.  Use Pmode scratch register.
18433         (*memory_barrier): Define as unspec instead of unspec_volatile.
18434         Use (match_dup 0) as input operand.
18435
18436         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
18437         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
18438         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
18439         scratch register.  Remove operand 1.
18440         (*stbar): Define as unspec instead of unspec_volatile.
18441         Use (match_dup 0) as input operand, remove (const_int 8).
18442         (*membar): Define as unspec instead of unspec_volatile.
18443         Use (match_dup 0) as input operand, remove input operand 2.
18444
18445         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
18446         (memory_barrier): Expand as unspec instead of unspec_volatile.
18447         Remove mem:BLK from insn operands.  Use Pmode scratch register.
18448         (*memory_barrier): Define as unspec instead of unspec_volatile.
18449         Use (match_dup 0) as input operand.
18450
18451         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
18452         Remove mem:BLK from insn operands.  Use Pmode scratch register.
18453         Set volatile flag on operand 0.
18454         (*memory_barrier): New insn pattern.
18455
18456         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
18457         insn operands.
18458         (*memory_barrier): Use (match_dup 0) as input operand.
18459
18460         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
18461         Remove mem:BLK from insn operands.  Use Pmode scratch register.
18462         Set volatile flag on operand 0.
18463         (*mb_internal): New insn pattern.
18464
18465         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
18466
18467 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
18468
18469         PR middle-end/38586
18470         * function.c (struct temp_slot): Move to the section of the file
18471         that deals with temp slots.  Remove field 'address'.
18472         (temp_slot_address_table): New hash table of address -> temp slot.
18473         (struct temp_slot_address_entry): New struct, items for the table.
18474         (temp_slot_address_compute_hash, temp_slot_address_hash,
18475         temp_slot_address_eq, insert_temp_slot_address): Support functions
18476         for the new table.
18477         (find_temp_slot_from_address): Rewrite to use the new hash table.
18478         (remove_unused_temp_slot_addresses): Remove addresses of temp
18479         slots that have been made available.
18480         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
18481         worker function for remove_unused_temp_slot_addresses.
18482         (assign_stack_temp_for_type): Don't clear the temp slot address list.
18483         Add the temp slot address to the address -> temp slot map.
18484         (update_temp_slot_address): Update via insert_temp_slot_address.
18485         (free_temp_slots): Call remove_unused_temp_slot_addresses.
18486         (pop_temp_slots): Likewise.
18487         (init_temp_slots): Allocate the address -> temp slot map, or empty
18488         the map if it is already allocated.
18489         (prepare_function_start): Initialize temp slot processing.
18490
18491 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
18492
18493         PR middle-end/38584
18494         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
18495         Calculate the size of all stack vars assuming no packing of stack
18496         vars will happen, replacing a quadratic algorithm with a linear one.
18497
18498 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
18499
18500         PR target/38707
18501         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
18502         can't be used.
18503
18504 2009-01-03  Diego Novillo  <dnovillo@google.com>
18505
18506         * doc/contrib.texi: Update contributions.
18507
18508 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
18509
18510         PR c++/38705
18511         * builtins.c (fold_builtin_memory_op): Give up if either operand
18512         is volatile.  Set srctype or desttype to non-qualified version
18513         of the other type.
18514
18515         PR c/38700
18516         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
18517         and FUNCTION_DECLs.
18518
18519 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
18520
18521         PR rtl-optimization/35805
18522         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
18523         problem if fast dce is able to remove any instructions.
18524         * dce.c (dce_process_block): Fix dump message.
18525
18526 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
18527
18528         PR 33649
18529         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
18530
18531 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
18532
18533         PR middle-end/38690
18534         * tree-flow.h (op_code_prio, op_prio): New prototypes.
18535         * tree-pretty-print.c (op_code_prio): New function.
18536         (op_prio): No longer static.  Use op_code_prio.
18537         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
18538         Use op_prio and op_code_prio to determine if () should be
18539         printed around operand(s) or not.
18540
18541         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
18542         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
18543         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
18544         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
18545         pp_character instead of pp_string for single letter printing.
18546
18547 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
18548
18549         * doc/extend.texi: Fix '#pragma GCC option' typo.
18550
18551 2009-01-02  Richard Guenther  <rguenther@suse.de>
18552
18553         * doc/install.texi (--enable-checking): Mention different
18554         default for stage1.
18555         (--enable-stage1-checking): Document.
18556
18557 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
18558
18559         PR middle-end/30142
18560         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
18561         case to be an error.
18562
18563 2009-01-02  Ben Elliston  <bje@au.ibm.com>
18564
18565         * config/fp-bit.h (pack_d): Constify argument.
18566         * config/fp-bit.c (makenan): Constify return type. Remove casts.
18567         (isnan): Constify argument.
18568         (isinf): Likewise.
18569         (iszero): Likewise.
18570         (pack_d): Likewise.
18571         (_fpadd_parts): Constify return type.
18572         (_fpmul_parts): Likewise.
18573         (_fpdiv_parts): Likewise.
18574
18575 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
18576
18577         PR c/36489
18578         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
18579         warn about overwriting initializer with side-effects or
18580         -Woverride-init if !IMPLICIT.
18581         (output_init_element): Likewise.  Pass IMPLICIT down to
18582         add_pending_init.
18583         (process_init_element): Add IMPLICIT argument.  Pass it down
18584         to output_init_element.
18585         (push_init_element, pop_init_level, set_designator): Adjust
18586         process_init_element callers.
18587         (set_nonincremental_init, set_nonincremental_init_from_string):
18588         Adjust add_pending_init callers.
18589         (output_pending_init_elements): Adjust output_init_element callers.
18590         * c-tree.h (process_init_element): Adjust prototype.
18591         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
18592         process_init_element callers.
18593
18594 \f
18595 Copyright (C) 2009 Free Software Foundation, Inc.
18596
18597 Copying and distribution of this file, with or without modification,
18598 are permitted in any medium without royalty provided the copyright
18599 notice and this notice are preserved.