OSDN Git Service

50b9dc2cee77bbee8c2b018411608a31e69de1c9
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-11-13  Jason Merrill  <jason@redhat.com>
2
3         PR debug/26965
4         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
5         Don't emit a second declaration at any scope.
6
7 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
8
9         PR rtl-optimization/41697
10         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with 
11         a conditional jump has a single successor. 
12
13 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
14
15         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
16         allocate reg_last when in case lazy_reg_last is true.
17         (init_deps_reg_last): New.
18         (free_deps): When max_reg is 0, this context is already freed.
19         * sched-int.h (init_deps_reg_last): Export.
20         (init_deps): Update prototype.
21         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
22         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
23         * ddg.c (build_intra_loop_deps): Likewise.
24         * sel-sched-ir.c (copy_deps_context, create_deps_context,
25         reset_deps_context, deps_init_id): Likewise.
26         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
27         (free_data_for_scheduled_insn): New, break down from ...
28         (free_first_time_insn_data): ... here.
29         (has_dependence_p): Allocate reg_last now, when it is needed.
30         (extend_insn_data): When maximal LUID is big enough, allocate
31         per-insn data in smaller chunks.
32         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
33         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
34         in scheduled insn. 
35         
36 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
37
38         * config/i386/i386.md (call_value): Fix comment.
39         (sibcall_value): Ditto.
40
41 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
42
43         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
44         (MD_FROB_UPDATE_CONTEXT): Define.
45
46 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
47             Laurent GUERBY  <laurent@guerby.net>
48
49         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
50         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
51         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
52
53 2009-11-12  Jan Hubicka  <jh@suse.cz>
54
55         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
56         and clear DECL_COMMON on localized declarations.
57
58 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
59
60         PR rtl-opt/38582
61         * regrename.c (struct du_head): New structure; some elements moved
62         from...
63         (struct du_chain): ... this one.
64         (open_chains, closed_chains): Now of type struct du_head *.
65         (do_replace): Accept du_head argument, not du_chain.  All callers
66         changed.  Modified code to match new data structures.
67         (build_def_use): Return a list of du_head structures.  Modified code
68         to match new data structures.
69         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
70         callers changed.  Modified code to match new data structures.
71         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
72         callers changed.  Modified code to match new data structures.
73         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
74         Allocate a du_head structure as well as a du_chain when creating a
75         new chain.  Modified other code to match new data structures.
76
77 2009-11-12  Jan Hubicka  <jh@suse.cz>
78
79         * cgraph.h (varpool_node_name): Declare.
80         * cgraphunit.c (process_function_and_variable_attributes): Set
81         force_output flag on used variables.
82         * ipa.c (function_and_variable_visibility): Dump externally visible
83         and needed variables.
84         * varpool.c (varpool_node_name): Export.
85         (decide_is_variable_needed): Check COMDAT for externally visible vars;
86         ignore needed flag.
87
88 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
89
90         PR middle-end/41930
91         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
92         processing if XEXP (x, i) is NULL.
93
94 2009-11-12  Jan Hubicka  <jh@suse.cz>
95
96         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
97         imply PUBLIC || EXTERNAL.
98
99 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
100
101         PR middle-end/41440
102         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
103         single successor block, ending with jump created by RTL expander.
104         
105 2009-11-11  Jan Hubicka  <jh@suse.cz>
106
107         PR middle-end/41729
108         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
109         and WEAK variables at -fwhole-program.
110
111         PR middle-end/41735
112         * ipa.c (whole_program_function_and_variable_visility): COMDAT
113         functions/variables are not needed even if they are externally visible.
114
115 2009-11-11  Jan Hubicka  <jh@suse.cz>
116
117         (patch by Richard Guenther)
118         * lto-streamer-out.c (output_function): Output head of argument list
119         earlier.
120         * lto-streamer-in.c (input_function): Re-map arguments into merged
121         declaration.
122
123 2009-11-11  Jan Hubicka  <jh@suse.cz>
124
125         * lto-cgraph.c: Include gcov-io.h
126         (output_profile_summary): New function.
127         (output_cgraph): Use it.
128         (input_profile_summary): New function.
129         (input_cgraph): Use it.
130         * coverage.c (build_ctr_info_value): Use varpool; initalize
131         DECL_ASSEMBLER_NAME.
132         (create_coverage): Likewise.
133         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
134         (tree_init_edge_profiler): Likewise.
135         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
136
137 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
138
139         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
140         * c-pragma.c (def_pragma_macro_value): Likewise.
141         (def_pragma_macro): Likewise.
142         (pushed_macro_table): Likewise.
143         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
144         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
145
146 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
147
148         * doc/plugins.texi (Registering custom attributes): section
149         renamed as (Registering custom attributes or pragmas).
150         Mentions custom attributes & pragmas, and c_register_pragma, with
151         a small example.
152         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
153         pragmas.
154         * doc/extend.texi (Function Attributes): Mentions that plugin can
155         provide their attributes.
156
157 2009-11-11  Jon Beniston  <jon@beniston.com>
158
159         * config.gcc: Add lm32 elf and uclinux targets.
160         * config/lm32: New directory.
161         * config/lm32/lm32.c: New file.
162         * config/lm32/lm32.h: New file.
163         * config/lm32/lm32.md: New file.
164         * config/lm32/lm32.opt: New file.
165         * config/lm32/lm32-protos.h: New file.
166         * config/lm32/constraints.md: New file.
167         * config/lm32/predicates.md: New file.
168         * config/lm32/sfp-machine.h: New file.
169         * config/lm32/t-fprules-softfp: New file.
170         * config/lm32/uclinux-elf.h: New file.
171         * doc/invoke.texi: Document lm32 options.
172         * doc/contrib.texi: Document lm32 porter.
173         * doc/install.texi: Document lm32 targets.
174
175 2009-11-11  Martin Jambor  <mjambor@suse.cz>
176
177         PR lto/41932
178         * ipa-prop.c (ipa_update_after_lto_read): Call
179         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
180         call ipa_initialize_node_params instead of ipa_populate_param_decls.
181
182 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
183
184         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
185         (neon_expand_vector_init): Use them.  Also handle non-constant
186         vectors with identical elements and vectors with only one
187         non-constant element.
188         (arm_print_operand): Handle 'y' modifier.
189         * config/arm/arm-protos.h (neon_make_constant): Declare.
190         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
191         patterns.  Use VX instead of VDQW for the first one.  Allow
192         a VFP alternative and V32 modes for the second one.
193         * config/arm/neon.ml (shape_elt): Add Alternatives.
194         (ops): Use Alternatives for vdup lane instructions.
195         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
196         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
197
198 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
199
200         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
201         operands.
202         (movti, mov<mode>): Call force_reg on one operand if required.
203         * config/arm/vec-common.md (mov<mode>): Likewise.
204
205 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
206
207         * config/arm/arm.c (arm_override_options): Enable scheduling for
208         Thumb-2.
209
210 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
211
212         PR target/10127
213         PR ada/20548
214         * expr.h (anti_adjust_stack_and_probe): Declare.
215         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
216         parameter and rewrite head comment.
217         (allocate_dynamic_stack_space): Adjust call to above function.
218         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
219
220         * tree.h (dwarf2out_args_size): Delete.
221         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
222         (dwarf2out_args_size_adjust): Delete prototype and move around.
223         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
224         ACCUMULATE_OUTGOING_ARGS targets.
225
226 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
227
228         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
229         DECL_SIZE of DECL_RESULT before evaluating it.
230
231 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
232
233         PR tree-optimization/41987
234         * fold-const.c (const_binop): Avoid using fold_buildN().
235
236 2009-11-10  Martin Jambor  <mjambor@suse.cz>
237
238         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
239         (execute_all_ipa_stmt_fixups): Declare.
240         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
241         * ipa-inline.c (pass_ipa_inline): Likewise.
242         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
243         * ipa-reference.c (pass_ipa_reference): Likewise.
244         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
245         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
246         (pass_ipa_lto_finish_out): Likewise.
247         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
248         * passes.c (execute_ipa_stmt_fixups): New function.
249         (execute_all_ipa_stmt_fixups): New function.
250         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
251
252 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
253
254         PR ada/20548
255         * explow.c (probe_stack_range): Fix typo.
256         * config/sparc/sparc.md (probe_stack): New expander.
257
258 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
259
260         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
261
262 2009-11-09  Jason Merrill  <jason@redhat.com>
263
264         * gdbinit.in (pgq): New function for printing gimple sequence.
265
266 2009-11-09  Paul Brook  <paul@codesourcery.com>
267             Daniel Jacobowitz  <dan@codesourcery.com>
268             Sandra Loosemore  <sandra@codesourcery.com>
269
270         * doc/extend.texi (Half-Precision): Update wording to reflect
271         that there are now multiple -mfpu options that enable fp16
272         hardware support.
273         * doc/invoke.texi: Update list of ARM -mfpu= options.
274         * config.gcc: Update ARM --with-fpu option list.
275         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
276         vfpv3xd and vfpv3xd-fp16.
277         (use_vfp_abi): New function.
278         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
279         when undesirable.
280         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
281         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
282         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
283         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
284         provides them.
285         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
286         NEON.
287         (arm_print_operand): Handle 'p' modifier.
288         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
289         TARGET_FP16.
290         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
291         (TARGET_FP16): Define.
292         * config/arm/vfp.md: Disable double-precision patterns if the FPU
293         does not provide them.
294         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
295         double-precision values on a single-precision FPU.
296         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
297         double-precision constants.
298         (movhf_vfp_neon): New pattern (was movhf_vfp).
299         (movhf_vfp): Remove NEON instructions.
300         * config/arm/constraints.md: Add new "Dy" constraint for
301         double-precision constants.  Update description of "Dv".
302         * config/arm/arm.md: Disable double-precision patterns if the FPU
303         does not provide them
304
305 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
306
307         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
308         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
309         diagnostics.
310
311 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
312
313         * collect2.c (main): Search PLUGIN_LD for plugin linker.
314
315         * configure.ac (--with-plugin-ld): New.  Default to ld.
316         * configure: Regenerated.
317         * config.in: Likewise.
318
319         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
320         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
321
322 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
323
324         * config/openbsd-stdint.h: Change to reflect what
325         c_common_nodes_and_builtins expects.
326
327 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
328
329         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
330
331 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
332
333         PR target/41985
334         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
335         function contains at least one local dynamic name.
336         (print_operand) <case '&'>: Instead output operand lossage diagnostics
337         here if that happens.
338
339 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
340             Joern Rennecke  <amylaar@spamcop.net>
341
342         * cfgrtl.c (pass_free_cfg): Add pass name.
343         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
344         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
345         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
346         * df-core.c (pass_df_initialize_no_opt): Likewise.
347         * except.c (pass_rtl_eh): Likewise.
348         * function.c (pass_init_function, pass_leaf_regs): Likewise.
349         * gcse.c (pass_rtl_pre): Change pass name.
350         * passes.c (pass_postreload): Add pass name.
351         (make_pass_instance): Don't use duplicate-tracking logic for
352         names starting with '*'.
353         (next_pass_1): Assert that pass has a name.
354         (register_one_dump_file): If there is an space in the name,
355         skip past it.
356         * predict.c (pass_strip_predict_hints): Add pass name.
357         * reg-stack.c (pass_stack_regs): Likewise.
358         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
359         * tree-cfg.c (pass_warn_function_return,
360         pass_warn_function_noreturn): Add pass name.
361         * tree-dfa.c (pass_referenced_vars): Likewise.
362         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
363         Fix whitespace before comment.
364         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
365         (pass_init_datastructures): Add pass name.
366         * tree-ssa-loop.c (pass_record_bounds): Likewise.
367         * tree-ssa.c (pass_early_warn_uninitialized,
368         pass_late_warn_uninitialized): Likewise.
369         * tree.c (pass_ipa_free_lang_data): Likewise.
370         * doc/passes.texi (pass manager): Document how to disambiguate
371         pass names.
372
373 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
374
375         * df-problems.c: Fix documentation for forward simulation of LR.
376         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
377         (df_simulate_finalize_forwards): Remove.
378         * df.h (df_simulate_finalize_forwards): Remove.
379
380 2009-11-08  Richard Guenther  <rguenther@suse.de>
381
382         * tree-ssa-structalias.c (build_succ_graph): Properly make
383         variables escape if they are stored to anything.
384
385 2009-11-08  Richard Guenther  <rguenther@suse.de>
386
387         PR rtl-optimization/41928
388         * loop-invariant.c (free_loop_data): If we didn't allocate
389         loop data do not try to free it.
390
391 2009-11-07  Jason Merrill  <jason@redhat.com>
392
393         * tree.c (reconstruct_complex_type): Preserve attributes.
394
395 2009-11-07  Richard Guenther  <rguenther@suse.de>
396
397         * tree-ssa-structalias.c (build_succ_graph): Feed stores
398         to anything only to variables that can take pointers.
399         (get_constraint_for_ssa_var): Properly exclude full
400         variables from expanding.
401         (first_vi_for_offset): Avoid overflow in arithmetic.
402         (first_or_preceding_vi_for_offset): Likewise.
403         (count_num_arguments): Fix implementation.
404         (gate_ipa_pta): Do not run when not optimizing.
405
406 2009-11-07  David Binderman <dcb314@hotmail.com>
407
408         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
409         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
410         set but not used variables.
411         (apply_args_reg_offset): Comment out as unused.
412         * calls.c (flags_from_decl_or_type): Likewise.
413         * genautomata.c (check_regexp_units_distribution): Likewise.
414
415 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
416
417         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
418         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
419         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
420         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
421         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
422         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
423         operand alternatives.
424
425 2009-11-06  Michael Matz  <matz@suse.de>
426
427         PR middle-end/41963
428         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
429         of a potential reciprocal to really be reciprocals.
430
431 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
432
433         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
434         lwpintrin.h after immintrin.h.
435         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
436         typedefs.
437
438         PR middle-end/41935
439         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
440         or non-constant index, allow index one past the last element and
441         allow exceeding array bound in arrays that might be used as flexible
442         array members.
443
444 2009-11-05  Richard Henderson  <rth@redhat.com>
445
446         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
447
448 2009-11-05  Paul Brook  <paul@codesourcery.com>
449
450         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
451         (arm_fpu_desc): New.
452         (all_fpus): Add FPU details.
453         (fp_model_for_fpu): Remove.
454         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
455         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
456         (arm_file_start): Use arm_fpu_desc.
457         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
458         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
459         arm_fpu_desc.
460         (TARGET_FPA_EMU2): Define.
461         (arm_fp_model, fputype, arm_fpu_tune): Remove.
462         (vfp_reg_type, arm_fpu_desc): New.
463         * config/arm/arm.md (attr fpu): Simplify.
464         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
465         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
466         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
467         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
468         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
469
470 2009-11-05  Michael Matz  <matz@suse.de>
471
472         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
473         on TARGET_RECIP.
474         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
475         for 1/sqrtf.
476
477 2009-11-04  Jason Merrill  <jason@redhat.com>
478
479         PR c++/36912
480         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
481         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
482         (output_constant): Avoid crash after error.
483
484 2009-11-05  Martin Jambor  <mjambor@suse.cz>
485
486         * tree-sra.c (struct access): Changed comment of next_sibling field.
487         (analyze_modified_params): Loop over accesses of a group rather than
488         over all with the ame base, pass a common bitmap to
489         walk_aliased_vdefs.
490         (unmodified_by_ref_scalar_representative): Build link lists of
491         accesses of a group.
492         (splice_param_accesses): Likewise.
493
494 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
495
496         * df-scan.c (df-uses-record): Add case zero_extract of mem.
497
498 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
499
500         PR target/10127
501         PR ada/20548
502         * config/i386/i386.md (probe_stack): New expander.
503         (logical operation peepholes): Do not split stack checking probes.
504
505 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
506             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
507
508         * doc/invoke.texi (-mlwp): Add documentation.
509         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
510         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
511         (x86_64-*-*): Ditto.
512         * config/i386/lwpintrin.h: New file, provide x86 compiler
513         intrinisics for LWP.
514         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
515         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
516         * config/i386/i386-c.c (ix86_target_macros_internal): Check
517         ISA_FLAG for LWP.
518         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
519         * config/i386/i386.opt (-mlwp): New switch for LWP support.
520         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
521         (OPTION_MASK_ISA_LWP_UNSET): New.
522         (ix86_handle_option): Handle -mlwp.
523         (isa_opts): Handle -mlwp.
524         (enum pta_flags): Add PTA_LWP.
525         (override_options): Add LWP support.
526         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
527         (IX86_BUILTIN_LLWPCB32): Ditto.
528         (IX86_BUILTIN_LLWPCB64): Ditto.
529         (IX86_BUILTIN_SLWPCB16): Ditto.
530         (IX86_BUILTIN_SLWPCB32): Ditto.
531         (IX86_BUILTIN_SLWPCB64): Ditto.
532         (IX86_BUILTIN_LWPVAL16): Ditto.
533         (IX86_BUILTIN_LWPVAL32): Ditto.
534         (IX86_BUILTIN_LWPVAL64): Ditto.
535         (IX86_BUILTIN_LWPINS16): Ditto.
536         (IX86_BUILTIN_LWPINS32): Ditto.
537         (IX86_BUILTIN_LWPINS64): Ditto.
538         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
539         (builtin_description): Ditto.
540         (ix86_init_mmx_sse_builtins): Ditto.
541         (ix86_expand_special_args_builtin): Ditto.
542         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
543         LWP support.
544         (UNSPEC_SLWP_INTRINSIC): Ditto.
545         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
546         (UNSPECV_LWPINS_INTRINSIC): Ditto.
547         (lwp_llwpcbhi1): New lwp pattern.
548         (lwp_llwpcbsi1): Ditto.
549         (lwp_llwpcbdi1): Ditto.
550         (lwp_slwpcbhi1): Ditto.
551         (lwp_slwpcbsi1): Ditto.
552         (lwp_slwpcbdi1): Ditto.
553         (lwp_lwpvalhi3): Ditto.
554         (lwp_lwpvalsi3): Ditto.
555         (lwp_lwpvaldi3): Ditto.
556         (lwp_lwpinshi3): Ditto.
557         (lwp_lwpinssi3): Ditto.
558         (lwp_lwpinsdi3): Ditto.
559
560 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
561             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
562
563         PR rtl-opt/41833
564         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
565         a vec_duplicate.
566
567 2009-11-04  Richard Guenther  <rguenther@suse.de>
568             Rafael Avila de Espindola  <espindola@google.com>
569
570         * gcc.c (process_command): Handle arguments name@offset.
571
572 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
573             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
574
575         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
576         (x86_64-*-*): Ditto.
577         * config/i386/xopintrin.h: New file, provide common x86 compiler
578         intrinisics for XOP.
579         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
580         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
581         * config/i386/i386-c.c(ix86_target_macros_internal): Check
582         ISA_FLAG for XOP.
583         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
584         * config/i386/i386.opt (-mxop): New switch for XOP support.
585         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
586         (UNSPEC_XOP_TRUEFALSE)
587         (UNSPEC_XOP_PERMUTE)
588         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
589         (PPERM_*): New constants for vpperm instruction.
590         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
591         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
592         (OPTION_MASK_ISA_XOP_UNSET): New.
593         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
594         (ix86_handle_option): Handle -mxop.
595         (isa_opts): Handle -mxop.
596         (enum pta_flags): Add PTA_XOP.
597         (override_options): Add XOP support.
598         (print_operand): Add code for XOP compare instructions.
599         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
600         (ix86_expand_int_vcond): Extend for XOP compare instruction.
601
602         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
603         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
604         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
605         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
606         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
607         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
608         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
609
610         (IX86_BUILTIN_VPCMOV256): Ditto.
611         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
612         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
613         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
614         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
615         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
616         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
617
618         (IX86_BUILTIN_VPPERM): Ditto.
619
620         (IX86_BUILTIN_VPMACSSWW): Ditto.
621         (IX86_BUILTIN_VPMACSWW): Ditto.
622         (IX86_BUILTIN_VPMACSSWD): Ditto.
623         (IX86_BUILTIN_VPMACSWD): Ditto.
624         (IX86_BUILTIN_VPMACSSDD): Ditto.
625         (IX86_BUILTIN_VPMACSDD): Ditto.
626         (IX86_BUILTIN_VPMACSSDQL): Ditto.
627         (IX86_BUILTIN_VPMACSSDQH): Ditto.
628         (IX86_BUILTIN_VPMACSDQL): Ditto.
629         (IX86_BUILTIN_VPMACSDQH): Ditto.
630         (IX86_BUILTIN_VPMADCSSWD): Ditto.
631         (IX86_BUILTIN_VPMADCSWD): Ditto.
632
633         (IX86_BUILTIN_VPHADDBW): Ditto.
634         (IX86_BUILTIN_VPHADDBD): Ditto.
635         (IX86_BUILTIN_VPHADDBQ): Ditto.
636         (IX86_BUILTIN_VPHADDWD): Ditto.
637         (IX86_BUILTIN_VPHADDWQ): Ditto.
638         (IX86_BUILTIN_VPHADDDQ): Ditto.
639         (IX86_BUILTIN_VPHADDUBW): Ditto.
640         (IX86_BUILTIN_VPHADDUBD): Ditto.
641         (IX86_BUILTIN_VPHADDUBQ): Ditto.
642         (IX86_BUILTIN_VPHADDUWD): Ditto.
643         (IX86_BUILTIN_VPHADDUWQ): Ditto.
644         (IX86_BUILTIN_VPHADDUDQ): Ditto.
645         (IX86_BUILTIN_VPHSUBBW): Ditto.
646         (IX86_BUILTIN_VPHSUBWD): Ditto.
647         (IX86_BUILTIN_VPHSUBDQ): Ditto.
648
649         (IX86_BUILTIN_VPROTB): Ditto.
650         (IX86_BUILTIN_VPROTW): Ditto.
651         (IX86_BUILTIN_VPROTD): Ditto.
652         (IX86_BUILTIN_VPROTQ): Ditto.
653         (IX86_BUILTIN_VPROTB_IMM): Ditto.
654         (IX86_BUILTIN_VPROTW_IMM): Ditto.
655         (IX86_BUILTIN_VPROTD_IMM): Ditto.
656         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
657
658         (IX86_BUILTIN_VPSHLB): Ditto.
659         (IX86_BUILTIN_VPSHLW): Ditto.
660         (IX86_BUILTIN_VPSHLD): Ditto.
661         (IX86_BUILTIN_VPSHLQ): Ditto.
662         (IX86_BUILTIN_VPSHAB): Ditto.
663         (IX86_BUILTIN_VPSHAW): Ditto.
664         (IX86_BUILTIN_VPSHAD): Ditto.
665         (IX86_BUILTIN_VPSHAQ): Ditto.
666
667         (IX86_BUILTIN_VFRCZSS): Ditto.
668         (IX86_BUILTIN_VFRCZSD): Ditto.
669         (IX86_BUILTIN_VFRCZPS): Ditto.
670         (IX86_BUILTIN_VFRCZPD): Ditto.
671         (IX86_BUILTIN_VFRCZPS256): Ditto.
672         (IX86_BUILTIN_VFRCZPD256): Ditto.
673
674         (IX86_BUILTIN_VPCOMEQUB): Ditto.
675         (IX86_BUILTIN_VPCOMNEUB): Ditto.
676         (IX86_BUILTIN_VPCOMLTUB): Ditto.
677         (IX86_BUILTIN_VPCOMLEUB): Ditto.
678         (IX86_BUILTIN_VPCOMGTUB): Ditto.
679         (IX86_BUILTIN_VPCOMGEUB): Ditto.
680         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
681         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
682
683         (IX86_BUILTIN_VPCOMEQUW): Ditto.
684         (IX86_BUILTIN_VPCOMNEUW): Ditto.
685         (IX86_BUILTIN_VPCOMLTUW): Ditto.
686         (IX86_BUILTIN_VPCOMLEUW): Ditto.
687         (IX86_BUILTIN_VPCOMGTUW): Ditto.
688         (IX86_BUILTIN_VPCOMGEUW): Ditto.
689         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
690         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
691
692         (IX86_BUILTIN_VPCOMEQUD): Ditto.
693         (IX86_BUILTIN_VPCOMNEUD): Ditto.
694         (IX86_BUILTIN_VPCOMLTUD): Ditto.
695         (IX86_BUILTIN_VPCOMLEUD): Ditto.
696         (IX86_BUILTIN_VPCOMGTUD): Ditto.
697         (IX86_BUILTIN_VPCOMGEUD): Ditto.
698         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
699         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
700
701         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
702         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
703         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
704         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
705         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
706         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
707         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
708         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
709
710         (IX86_BUILTIN_VPCOMEQB): Ditto.
711         (IX86_BUILTIN_VPCOMNEB): Ditto.
712         (IX86_BUILTIN_VPCOMLTB): Ditto.
713         (IX86_BUILTIN_VPCOMLEB): Ditto.
714         (IX86_BUILTIN_VPCOMGTB): Ditto.
715         (IX86_BUILTIN_VPCOMGEB): Ditto.
716         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
717         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
718
719         (IX86_BUILTIN_VPCOMEQW): Ditto.
720         (IX86_BUILTIN_VPCOMNEW): Ditto.
721         (IX86_BUILTIN_VPCOMLTW): Ditto.
722         (IX86_BUILTIN_VPCOMLEW): Ditto.
723         (IX86_BUILTIN_VPCOMGTW): Ditto.
724         (IX86_BUILTIN_VPCOMGEW): Ditto.
725         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
726         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
727
728         (IX86_BUILTIN_VPCOMEQD): Ditto.
729         (IX86_BUILTIN_VPCOMNED): Ditto.
730         (IX86_BUILTIN_VPCOMLTD): Ditto.
731         (IX86_BUILTIN_VPCOMLED): Ditto.
732         (IX86_BUILTIN_VPCOMGTD): Ditto.
733         (IX86_BUILTIN_VPCOMGED): Ditto.
734         (IX86_BUILTIN_VPCOMFALSED): Ditto.
735         (IX86_BUILTIN_VPCOMTRUED): Ditto.
736
737         (IX86_BUILTIN_VPCOMEQQ): Ditto.
738         (IX86_BUILTIN_VPCOMNEQ): Ditto.
739         (IX86_BUILTIN_VPCOMLTQ): Ditto.
740         (IX86_BUILTIN_VPCOMLEQ): Ditto.
741         (IX86_BUILTIN_VPCOMGTQ): Ditto.
742         (IX86_BUILTIN_VPCOMGEQ): Ditto.
743         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
744         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
745
746         (enum multi_arg_type): New enum for describing the various XOP
747         intrinsic argument types.
748         (bdesc_multi_arg): New table for XOP intrinsics.
749         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
750         (ix86_expand_multi_arg_builtin): New function for creating XOP
751         intrinsics.
752
753         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
754         (xop_pmacsww): Ditto.
755         (xop_pmacssww): Ditto.
756         (xop_pmacsdd): Ditto.
757         (xop_pmacssdd): Ditto.
758         (xop_pmacssdql): Ditto.
759         (xop_pmacssdqh): Ditto.
760         (xop_pmacsdql): Ditto.
761         (xop_pmacsdql_mem): Ditto.
762         (xop_mulv2div2di3_low): Ditto.
763         (xop_pmacsdqh): Ditto.
764         (xop_pmacsdqh_mem): Ditto.
765         (xop_mulv2div2di3_high): Ditto.
766         (xop_pmacsswd): Ditto.
767         (xop_pmacswd): Ditto.
768         (xop_pmadcsswd): Ditto.
769         (xop_pmadcswd): Ditto.
770         (xop_pcmov_<mode>): Ditto.
771         (xop_pcmov_<mode>256): Ditto.
772         (xop_phaddbw): Ditto.
773         (xop_phaddbd): Ditto.
774         (xop_phaddbq): Ditto.
775         (xop_phaddwd): Ditto.
776         (xop_phaddwq): Ditto.
777         (xop_phadddq): Ditto.
778         (xop_phaddubw): Ditto.
779         (xop_phaddubd): Ditto.
780         (xop_phaddubq): Ditto.
781         (xop_phadduwd): Ditto.
782         (xop_phadduwq): Ditto.
783         (xop_phaddudq): Ditto.
784         (xop_phsubbw): Ditto.
785         (xop_phsubwd): Ditto.
786         (xop_phsubdq): Ditto.
787         (xop_pperm): Ditto.
788         (rotl<mode>3): Ditto.
789         (rotr<mode>3): Ditto.
790         (xop_rotl<mode>3): Ditto.
791         (xop_rotr<mode>3): Ditto.
792         (vrotr<mode>3): Ditto.
793         (vrotl<mode>3): Ditto.
794         (xop_vrotl<mode>3): Ditto.
795         (vlshr<mode>3): Ditto.
796         (vashr<mode>3): Ditto.
797         (vashl<mode>3
798         (xop_ashl<mode>3): Ditto.
799         (xop_lshl<mode>3): Ditto.
800         (ashlv16qi3): Ditto.
801         (lshlv16qi3): Ditto.
802         (ashrv16qi3): Ditto.
803         (ashrv2di3): Ditto.
804         (xop_frcz<mode>2): Ditto.
805         (xop_vmfrcz<mode>2): Ditto.
806         (xop_frcz<mode>2256): Ditto.
807         (xop_maskcmp<mode>3): Ditto.
808         (xop_maskcmp_uns<mode>3): Ditto.
809         (xop_maskcmp_uns2<mode>3): Ditto.
810         (xop_pcom_tf<mode>3): Ditto.
811
812         * doc/invoke.texi (-mxop): Add documentation.
813         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
814
815 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
816
817         PR driver/11810
818         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
819         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
820         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
821
822 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
823
824         PR target/40835
825         * arm.md (peephole2 patterns for move and compare): New.
826
827 2009-11-04  Nick Clifton  <nickc@redhat.com>
828
829         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
830         Make sure that it does not allow CONST_DOUBLEs.
831         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
832         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
833         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
834         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
835         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
836         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
837         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
838         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
839         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
840         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
841         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
842         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
843         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
844         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
845         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
846
847 2009-11-04  Richard Guenther  <rguenther@suse.de>
848
849         PR tree-optimization/41919
850         * tree-vrp.c (test_for_singularity): Properly compare values.
851
852 2009-11-04  Revital Eres  <eres@il.ibm.com>
853
854         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
855         Consider peeling for alignment only for stores and remove
856         redundant assignment.
857
858 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
859
860         PR target/41302
861         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
862         (m68k_ok_for_sibcall_p): Handle different result return locations.
863
864 2009-11-04  Richard Guenther  <rguenther@suse.de>
865
866         * c-opts.c (c_common_post_options): Move LTO option processing
867         code ...
868         * opts.c (decode_options): ... here.
869
870 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
871
872         * c-common.c (fold_offsetof_1): Use %wd instead of
873         HOST_WIDE_INT_PRINT_DEC.
874
875 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
876
877         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
878         __pic__ or __PIC__.
879
880 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
881
882         * config.gcc (vax-*-linux*): Keep the original contents of
883         tmake_file while adding vax/t-linux.
884
885 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
886
887         PR target/10127
888         PR ada/20548
889         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
890         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
891         (STACK_CHECK_MOVING_SP): Likewise.
892         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
893         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
894         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
895         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
896         Document PROBE_STACK.
897         * explow.c (anti_adjust_stack_and_probe): New function.
898         (allocate_dynamic_stack_space): Do not directly allocate space if
899         STACK_CHECK_MOVING_SP, instead invoke above function.
900         (emit_stack_probe): Handle probe_stack insn.
901         (PROBE_INTERVAL): New macro.
902         (STACK_GROW_OPTAB): Likewise.
903         (STACK_GROW_OFF): Likewise.
904         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
905         loop condition in the small constant case.  Rewrite in the general
906         case to be immune to wraparounds.  Make sure the address of probes
907         is valid.  Try to use [base + disp] addressing mode if possible.
908         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
909         checking is enabled and STACK_CHECK_MOVING_SP.
910         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
911         return 1 for volatile references to the stack pointer.
912         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
913         __builtin_alloca if stack checking is enabled.
914         * unwind-dw2.c (uw_identify_context): Take into account whether the
915         context is that of a signal frame or not.
916         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
917         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
918
919 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
920
921         PR rtl-optimization/41917
922         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
923         operand isn't known to be 0, return 1.
924
925 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
926
927         * config/mips/mips.md: Fix typos.
928
929 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
930
931         * doc/invoke.texi: Fix typo.
932
933 2009-11-03  Paul Brook  <paul@codesourcery.com>
934
935         * config/arm/neon.ml (vectype): Add T_floatSF.
936         (string_of_vectype): Ditto.
937         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
938         (deftypes): Use float for float32_t.
939         * config/arm/arm_neon.h: Regenerate.
940
941 2009-11-03  Nick Clifton  <nickc@redhat.com>
942             Kevin Buettner  <kevinb@redhat.com>
943
944         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
945         order of expected registers.
946         (rx_load_multiple_vector): Likewise.
947         (rx_rtsd_vector): Likewise.
948         * config/rx/rx.c (rx_cpu_type): New variable.
949         (rx_print_operand): Fix bug printing 64-bit constant values.
950         (rx_emit_stack_pushm): Reverse order of pushed registers.
951         (gen_rx_store_vector): Likewise.
952         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
953         attribute name.
954         (is_exception_func): Rename to is_interrupt_func and only accept
955         "interrupt" as the attribute name.
956         (rx_get_stack_layout): Use new function name.
957         (rx_func_attr_inlinable): Likewise.
958         (rx_attribute_table): Remove "exception".
959         (rx_expand_prologue): If necessary push the accumulator register
960         in the prologue of interrupt functions.
961         (rx_expand_epilogue): If necessary pop the accumulator.
962         (rx_builtins): Add RX_BUILTIN_MVTIPL.
963         (rx_expand_builtin_stz): Remove.
964         (rx_expand_builtin_mvtipl): New function.
965         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
966         (rx_expand_builtin): Likewise.
967         (rx_enable_fpu): New variable.
968         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
969         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
970         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
971         (enum rx_cpu_types): Define.
972         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
973         (INCOMING_FRAME_SP_OFFSET): Define.
974         (ARG_POINTER_CFA_OFFSET): Define.
975         (FRAME_POINTER_CFA_OFFSET): Define.
976         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
977         (ALLOW_RX_FPU_INSNS): Define.
978         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
979         fast_math_flags_set_p.
980         (UNSPEC_BUILTIN_MVTIPL): Define.
981         (revl): Rename to bswapsi2.
982         (bswaphi2): New pattern.
983         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
984         (mvtaclo): Likewise.
985         (racw): Likewise.
986         (mvtc): Remove clobber of cc0.
987         (mvtcp): Delete.
988         (opecp): Delete.
989         * config/rx/rx.opt (mieee): Remove.
990         (fpu): Add.
991         (nofpu): Add.
992         (mcpu=): Add.
993         (patch=): Add.
994         (msave-acc-in-interrupts): Add.
995         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
996         (MULTILIB_DIRS): Likewise.
997         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
998         * doc/extend.texi: Remove description of "exception" function
999         attribute.
1000         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
1001         -msave-acc-in-interrupts options.
1002
1003 2009-11-03  Richard Guenther  <rguenther@suse.de>
1004
1005         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
1006
1007 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
1008
1009         PR c++/38699
1010         * c-common.c (fold_offsetof_1): Issue errors when the member
1011         designator of the offsetof expression is not legitimate.
1012
1013 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1014
1015         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
1016         names instead of numerical constants.
1017         (sse_prologue_save): Ditto.
1018         (*sse_prologue_save_insn): Ditto.
1019
1020 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1021
1022         PR target/41900
1023         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1024         (TARGET_CALL_ESP): New define.
1025         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1026         X86_ARCH_CALL_ESP.
1027         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1028         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1029         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1030         TARGET_CALL_ESP.
1031         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1032         New patterns, use "lsm" as operand 1 constraint.
1033         * config/i386/predicates.md (call_insn_operand): Depend on
1034         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1035
1036 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1037
1038         PR tree-optimization/41857
1039         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
1040         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
1041         to create_mem_ref.
1042         * tree-ssa-address.c (move_hint_to_base): New function.
1043         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
1044         address space associated with TYPE.
1045         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
1046         most_expensive_mult_to_index.  Call move_hint_to_base.
1047         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
1048         TYPE to addr_to_parts.
1049
1050 2009-11-02  Martin Jambor  <mjambor@suse.cz>
1051
1052         PR tree-optimization/41750
1053         * tree-sra.c (analyze_modified_params): Loop over all
1054         representatives of components of a parameter.
1055
1056 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
1057
1058         PR tree-optimization/41841
1059         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
1060         local variables of not yet materialized clones.
1061
1062         PR debug/41893
1063         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
1064         for a VOIDmode variable.
1065
1066         PR c++/41774
1067         * c-pragma.c (visstack): Change into vector of ints rather than
1068         enum symbol_visibility.
1069         (push_visibility): Add kind argument, push default_visibility together
1070         with kind.
1071         (pop_visibility): Add kind argument, return true if successful, fail
1072         if visibility stack is empty or if stack top is of different kind.
1073         (handle_pragma_visibility): Don't check length of visstack, instead
1074         call pop_visibility and issue diagnostics if it failed.  Pass 0
1075         as last argument to push_visibility and pop_visibility.
1076         * c-pragma.h (push_visibility): Add kind argument.
1077         (pop_visibility): Likewise.  Return bool instead of void.
1078
1079 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
1080
1081         * tree.def (TARGET_MEM_REF): Update comment.
1082         * alias.c (get_alias_set): Retrieve the original memory reference for
1083         a TARGET_MEM_REF before proceeding.
1084
1085 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1086
1087         * config/frv/frv.c (frv_function_value, frv_libcall_value,
1088         frv_function_value_regno_p): New functions.
1089         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1090         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1091         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
1092         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
1093
1094 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
1095
1096         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
1097         new 'outgoing' argument.
1098         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
1099         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1100         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
1101         LIBCALL_VALUE): Remove.
1102         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
1103         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
1104         (mh10300_function_value_regno_p): Declare.
1105
1106 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1107
1108         * config/arm/cortex-a9.md: New - integer pipeline description.
1109
1110 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
1111
1112         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
1113         aborting if the sizes of the two references don't match.
1114
1115 2009-10-31  Toon Moene  <toon@moene.org>
1116
1117         * ipa-inline.c (cgraph_decide_inlining):
1118         Include reason for not inlining called-once functions in dump file.
1119
1120 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
1121
1122         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
1123         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
1124         (LINK_SPEC): BE_LINK_SPEC added.
1125
1126 2009-10-30  Richard Guenther  <rguenther@suse.de>
1127
1128         PR lto/41858
1129         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
1130
1131 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
1132
1133         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
1134         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
1135         label.
1136
1137 2009-10-30  Martin Jambor  <mjambor@suse.cz>
1138
1139         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
1140
1141 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
1142
1143         PR target/40838
1144         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
1145         first.  Move assert on stack_alignment_estimated just before
1146         setting stack_realign_needed.
1147         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
1148         Don't call update_stack_boundary.
1149
1150         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
1151         (verride_options): Don't check ix86_force_align_arg_pointer here.
1152         (ix86_function_ok_for_sibcall): Use it.
1153         (ix86_update_stack_boundary): Likewise.
1154
1155         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
1156
1157 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
1158
1159         * arm.md (QHSI): New mode iterator.
1160         (movqi): If generating for thumb, then truncate any immediate to
1161         8 bits.
1162         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
1163         with...
1164         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
1165         version.
1166
1167 2009-10-29  Cary Coutant  <ccoutant@google.com>
1168
1169         PR debug/41700
1170         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
1171         locations in the source).
1172         (store_vcall_insn): New function.
1173         (lookup_vcall_insn): New function.
1174         (dwarf2out_virtual_call_token): Use store_vcall_insn.
1175         (dwarf2out_copy_call_info): New function.
1176         (dwarf2out_virtual_call): Use lookup_vcall_insn.
1177         * emit-rtl.c (try_split): Call copy_call_info debug hook.
1178         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
1179         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
1180         (debug_nothing_rtx_rtx): New dummy hook.
1181         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
1182         (xcoff_debug_hooks): Likewise.
1183         * sdbout.c (sdb_debug_hooks): Likewise.
1184         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
1185
1186 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
1187
1188         * doc/invoke.texi (mmcount-ra-address): Document new command line
1189         option.
1190         * config/mips/mips.opt (mmcount-ra-address): New option.
1191         * config/mips/mips-protos.h (mips_function_profiler): Declare new
1192         function.
1193         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
1194         member.
1195         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
1196         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
1197         rewritten.
1198         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
1199         mips_function_profiler.
1200
1201 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
1202
1203         PR middle-end/37565
1204         PR target/38018
1205         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
1206         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1207         * optc-gen.awk (cl_target_option_restore): Include call to
1208         targetm.override_options_after_change.
1209         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1210         * target.h (override_options_after_change): New.
1211         * c-common.c (parse_optimize_options): Call
1212         targetm.override_options_after_change.
1213         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
1214         (ia64_override_options_after_change): New.
1215         (ia64_override_options) Add call to above.
1216
1217 2009-10-29  Michael Matz  <matz@suse.de>
1218
1219         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
1220         (gate_convert_to_rsqrt): Ditto.
1221         (pass_convert_to_rsqrt): Ditto.
1222         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
1223         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
1224         to pass list.
1225
1226         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
1227
1228 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1229
1230         * config/arm/arm.c (find_best_start): Fix type of remainder to be
1231         unsigned.
1232
1233 2009-10-29  Martin Jambor  <mjambor@suse.cz>
1234
1235         PR tree-optimization/41775
1236         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
1237         (generate_subtree_copies): Do not unshare agg.
1238         (load_assign_lhs_subreplacements): Do not unshare rhs.
1239         (sra_modify_assign): Do not unshare exprs.
1240         (propagate_subacesses_accross_link): Renamed to
1241         propagate_subaccesses_across_link.
1242
1243 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
1244
1245         * arm.c (count_insns_for_constant): Rework to support counting for
1246         thumb2 immediates as well.
1247         (find_best_start): Split out from arm_gen_constant.
1248         (arm_gen_constant): Rework to support XOR with immediate.
1249
1250 2009-10-29  Chao-ying Fu  <fu@mips.com>
1251
1252         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
1253         functions.
1254         (mips_expand_synci_loop):  Use the length rtx to control the
1255         synci loop from the begin rtx that points to the first byte of
1256         the cache line.
1257
1258 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1259
1260         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
1261
1262 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1263
1264         * dbxout.c (dbxout_common_check): Accept non public trees.
1265         * dwarf2out.c (fortran_common): Accept non public trees.
1266
1267 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
1268
1269         * common.opt (fuse-linker-plugin): New option.
1270         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
1271         fuse-linker-plugin.
1272         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
1273
1274 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1275
1276         PR rtl-optimization/39715
1277         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
1278         (gen_cstoresi_ltu_thumb1): New splitter.
1279
1280 2009-10-28  Richard Guenther  <rguenther@suse.de>
1281
1282         PR lto/41808
1283         PR lto/41839
1284         * tree-ssa.c (useless_type_conversion_p): Do not treat
1285         conversions to pointers to incomplete types as useless.
1286         * gimple.c (gimple_types_compatible_p): Compare struct tags,
1287         not typedef names.
1288
1289 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
1290
1291         * var-tracking.c (emit_note_insn_var_location): Don't call the second
1292         vt_expand_loc unnecessarily when location is not a register nor
1293         memory.
1294
1295         PR middle-end/41837
1296         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
1297         fields don't have DECL_NAME.
1298
1299         PR debug/41801
1300         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
1301         call convert_memory_address on addr.
1302
1303         PR target/41762
1304         * config/i386/i386.c (ix86_pic_register_p): Don't call
1305         rtx_equal_for_cselib_p for VALUEs discarded as useless.
1306
1307 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
1308
1309         * var-tracking.c (emit_note_insn_var_location): Get the mode of
1310         a variable part from its REG, MEM or VALUE.
1311
1312 2009-10-28  Richard Guenther  <rguenther@suse.de>
1313
1314         * gimple.c (gimple_get_alias_set): Fix comment typo.
1315
1316 2009-10-28  Richard Guenther  <rguenther@suse.de>
1317
1318         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
1319         (free_lang_data): Unconditionally compute alias sets for all
1320         standard integer types.  Bail out if gate bailed out previously.
1321         Do not reset the types_compatible_p langhook.
1322         (gate_free_lang_data): Remove.
1323         (struct pass_ipa_free_lang_data): Enable unconditionally.
1324         * gimple.c (gimple_get_alias_set): Use the same alias-set for
1325         all pointer types.
1326
1327 2009-10-28  Richard Guenther  <rguenther@suse.de>
1328
1329         PR middle-end/41855
1330         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
1331         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
1332         (call_may_clobber_ref_p_1): Likewise.
1333         * tree-ssa-structalias.c (find_func_aliases): Likewise.
1334         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
1335
1336 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1337
1338         PR rtl-optimization/41812
1339
1340         Revert:
1341         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
1342
1343         * df-problems.c (df_md_scratch): New.
1344         (df_md_alloc, df_md_free): Allocate/free it.
1345         (df_md_local_compute): Only include live registers in init.
1346         (df_md_transfer_function): Prune the in-set computed by
1347         the confluence function, and the gen-set too.
1348
1349 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1350
1351         PR rtl-optimization/39715
1352         * combine.c (simplify_comparison): Use extensions to
1353         widen comparisons.  Try an ANDing first.
1354
1355 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1356
1357         PR rtl-optimization/40741
1358         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
1359         a small constant is cheap.
1360         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
1361         force_reg on the LHS.
1362         (xorsi3): Likewise, and split the XOR if the constant is complex
1363         and not in Thumb mode.
1364
1365 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1366
1367         * expmed.c (emit_store_flag): Check costs before
1368         transforming to the opposite representation.
1369
1370 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
1371
1372         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
1373         cstore result to DImode.
1374
1375 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1376
1377         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
1378         inside the unspec vector.
1379
1380 2009-10-27  Richard Henderson  <rth@redhat.com>
1381
1382         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
1383
1384 2009-10-27  Richard Henderson  <rth@redhat.com>
1385
1386         PR c++/41819
1387         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
1388         eh_region_may_contain_throw; update users.
1389         (eh_region_may_contain_throw): New function.
1390         (lower_catch): Check flag_exceptions before creating exception region.
1391         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
1392         (lower_cleanup): Tidy existing flag_exceptions check to match.
1393
1394 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
1395
1396         PR/41799
1397         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
1398         * config/i386/mingw.opt: Add fset-stack-executable.
1399         * config/i386/i386.c (ix86_trampoline_init): Make call to
1400         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
1401         defined and its value is not zero.
1402         * doc/invoke.texi
1403
1404 2009-10-27  Richard Guenther  <rguenther@suse.de>
1405
1406         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
1407         handle calls to externally visible functions like in regular mode.
1408         (create_variable_info_for): Do not create function infos here.
1409         (have_alias_info): Remove write-only variable.
1410         (solve_constraints): New function split out from common code
1411         in compute_points_to_sets and ipa_pta_execute.
1412         (compute_points_to_sets): Adjust.
1413         (ipa_pta_execute): Likewise.  Handle clones and externally visible
1414         functions like in non-IPA mode.
1415
1416 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
1417
1418         PR c/41842
1419         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
1420         error_mark_node.
1421
1422 2009-10-27  Richard Guenther  <rguenther@suse.de>
1423
1424         * tree-complex.c (expand_complex_div_wide): Check for
1425         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
1426
1427 2009-10-27  Revital Eres  <eres@il.ibm.com>
1428
1429         PR tree-optimization/40648
1430         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
1431         Change decision of when to peel for alignment.
1432
1433 2009-10-27  Richard Guenther  <rguenther@suse.de>
1434
1435         PR lto/41821
1436         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
1437
1438 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
1439
1440         PR bootstrap/41451
1441         * fold-const.c (fold_binary_loc): Do not call
1442         protected_set_expr_location.
1443
1444 2009-10-27  Wei Guozhi  <carrot@google.com>
1445
1446         PR target/41705
1447         * target.h (have_conditional_execution): Add a new target hook
1448         function.
1449         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
1450         * targhooks.h (default_have_conditional_execution): Likewise.
1451         * targhooks.c (default_have_conditional_execution): Likewise.
1452         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
1453         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
1454         (arm_have_conditional_execution): New function.
1455         * ifcvt.c (noce_process_if_block, find_if_header,
1456         cond_exec_find_if_block, dead_or_predicable): Change the usage of
1457         macro HAVE_conditional_execution to a target hook call.
1458         * recog.c (peephole2_optimize): Likewise.
1459         * sched-rgn.c (add_branch_dependences): Likewise.
1460         * final.c (asm_insn_count, final_scan_insn): Likewise.
1461         * bb-reorder.c (HAVE_conditional_execution): Remove it.
1462
1463 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1464             Michael Meissner  <meissner@linux.vnet.ibm.com>
1465             Ulrich Weigand  <uweigand@de.ibm.com>
1466
1467         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
1468         * config/spu/spu_cache.h: New file.
1469
1470         * config/spu/cachemgr.c: New file.
1471         * config/spu/cache.S: New file.
1472
1473         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
1474         (ADDR_SPACE_EA): Define.
1475         (TARGET_ADDR_SPACE_KEYWORDS): Define.
1476         * config/spu/spu.c (EAmode): New macro.
1477         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1478         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1479         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
1480         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1481         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1482         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1483         (TARGET_ASM_SELECT_SECTION): Likewise.
1484         (TARGET_ASM_UNIQUE_SECTION): Likewise.
1485         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
1486         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
1487         (ea_symbol_ref): New function.
1488         (spu_legitimate_constant_p): Handle __ea qualified addresses.
1489         (spu_addr_space_legitimate_address_p): New function.
1490         (spu_addr_space_legitimize_address): Likewise.
1491         (cache_fetch): New global.
1492         (cache_fetch_dirty): Likewise.
1493         (ea_alias_set): Likewise.
1494         (ea_load_store): New function.
1495         (ea_load_store_inline): Likewise.
1496         (expand_ea_mem): Likewise.
1497         (spu_expand_mov): Handle __ea qualified memory references.
1498         (spu_addr_space_pointer_mode): New function.
1499         (spu_addr_space_address_mode): Likewise.
1500         (spu_addr_space_subset_p): Likewise.
1501         (spu_addr_space_convert): Likewise.
1502         (spu_section_type_flags): Handle "._ea" section.
1503         (spu_select_section): New function.
1504         (spu_unique_section): Likewise.
1505         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
1506         and __EA64__ predefined macros.
1507         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
1508         -matomic-updates switches.
1509
1510         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
1511         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
1512         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
1513         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
1514         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
1515         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
1516         $(T)cache128k.o): Likewise.
1517         ($(T)libgcc_%.a): Likewise.
1518
1519         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
1520         * config/spu/spu.opt (-mea32/-mea64): Add switches.
1521         (-maddress-space-conversion): Likewise.
1522         (-mcache-size=): Likewise.
1523         (-matomic-updates): Likewise.
1524         * doc/invoke.texi (-mea32/-mea64): Document.
1525         (-maddress-space-conversion): Likewise.
1526         (-mcache-size=): Likewise.
1527         (-matomic-updates): Likewise.
1528
1529 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1530             Michael Meissner  <meissner@linux.vnet.ibm.com>
1531             Ulrich Weigand  <uweigand@de.ibm.com>
1532
1533         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
1534
1535         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
1536         defined, add the named address space keywords.
1537         (c_addr_space_name): New function.
1538         (complete_array_type): Preserve named address space.
1539         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
1540         instead of targetm.valid_pointer_mode.
1541
1542         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
1543         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
1544         (ADDR_SPACE_KEYWORD): New macro.
1545         (c_addr_space_name): Add prototype.
1546
1547         * c-tree.h (struct c_declspecs): Add address_space member.
1548         (declspecs_add_addrspace): Add prototype.
1549
1550         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
1551
1552         * c-parser.c (c_parse_init): Add assertion.
1553         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
1554         (c_lex_one_token): Handle address space keywords.
1555         (c_token_starts_typename): Likewise.
1556         (c_token_starts_declspecs): Likewise.
1557         (c_parser_declspecs): Likewise.
1558         (c_parser_postfix_expression_after_paren_type): Diagnose compound
1559         literal within function qualified with named address space.
1560
1561         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
1562         address space qualifiers.
1563         (shadow_tag_warned): Warn about useless address space qualifiers.
1564         (quals_from_declspecs): Handle address space qualifiers.
1565         (grokdeclarator): Likewise.
1566         (build_null_declspecs): Likewise.
1567         (declspecs_add_addrspace): New function.
1568
1569         * c-typeck.c (addr_space_superset): New function.
1570         (qualify_type): Handle named address spaces.
1571         (composite_type): Likewise.
1572         (common_pointer_type): Likewise.
1573         (comp_target_types): Likewise.
1574         (build_conditional_expr): Likewise.
1575         (handle_warn_cast_qual): Likewise.
1576         (build_c_cast): Likewise.
1577         (convert_for_assignment): Likewise.
1578         (build_binary_op): Likewise.
1579         (pointer_diff): Handle named address spaces.  Use intermediate
1580         integer type of sufficient size if required.
1581
1582 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1583             Michael Meissner  <meissner@linux.vnet.ibm.com>
1584             Ulrich Weigand  <uweigand@de.ibm.com>
1585
1586         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
1587         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1588         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1589
1590         * target.h (struct target_def): Add pointer_mode, address_mode,
1591         and valid_pointer_mode to addr_space substructure.
1592         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
1593         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
1594         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
1595         (TARGET_ADDR_SPACE_HOOKS): Add them.
1596         * targhooks.c (target_default_pointer_address_modes_p): New function.
1597         * target.h (target_default_pointer_address_modes_p): Add prototype.
1598         * targhooks.c (default_addr_space_pointer_mode): New function.
1599         (default_addr_space_address_mode): Likewise.
1600         (default_addr_space_valid_pointer_mode): Likewise.
1601         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
1602         (default_addr_space_address_mode): Likewise.
1603         (default_addr_space_valid_pointer_mode): Likewise.
1604         * output.h (default_valid_pointer_mode): Move to ...
1605         * targhooks.h (default_valid_pointer_mode): ... here.
1606         * varasm.c (default_valid_pointer_mode): Move to ...
1607         * targhooks.c (default_valid_pointer_mode): ... here.
1608
1609         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
1610         instead of targetm.valid_pointer_mode.
1611
1612         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
1613         * tree.c (integer_pow2p): Likewise.
1614         (tree_log2): Likewise.
1615         (tree_floor_log2): Likewise.
1616         (signed_or_unsigned_type_for): Support pointer type of different size.
1617         (int_or_pointer_precision): New function.
1618         * tree.h (int_or_pointer_precision): Add prototype.
1619         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
1620         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
1621         incoming pointer type instead of POINTER_SIZE.
1622
1623         * tree.c (build_pointer_type): Use appropriate pointer mode
1624         instead of ptr_mode.
1625         (build_reference_type): Likewise.
1626         * expr.c (store_expr): Likewise.
1627         (expand_expr_addr_expr): Likewise.
1628         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
1629         * cfgexpand.c (expand_debug_expr): Likewise.
1630
1631         * auto-inc-dec.c: Include "target.h".
1632         (try_merge): Use appropriate address mode instead of Pmode.
1633         (find_inc): Likewise.
1634         * combine.c (find_split_point): Likewise.
1635         * cselib.c (cselib_record_sets): Likewise.
1636         * dse.c (replace_inc_dec): Likewise.
1637         (canon_address): Likewise.
1638         * var-tracking.c (replace_expr_with_values): Likewise.
1639         (count_uses): Likewise.
1640         (add_uses): Likewise.
1641         (add_stores): Likewise.
1642         * emit-rtl.c: Include "target.h".
1643         (adjust_address_1): Use appropriate address mode instead of Pmode.
1644         (offset_address): Likewise.
1645         * explow.c (break_out_memory_refs): Likewise.
1646         (memory_address_addr_space): Likewise.
1647         (promote_mode): Likewise.
1648         * expr.c (move_by_pieces): Likewise.
1649         (emit_block_move_via_loop): Likewise.
1650         (store_by_pieces): Likewise.
1651         (store_by_pieces_1): Likewise.
1652         (expand_assignment): Likewise.
1653         (store_constructor): Likewise.
1654         (expand_expr_addr_expr): Likewise.
1655         (expand_expr_real_1): Likewise.
1656         * cfgexpand.c (expand_debug_expr): Likewise.
1657         * ifcvt.c (noce_try_cmove_arith): Likewise.
1658         * regcprop.c (kill_autoinc_value): Likewise.
1659         * regmove.c (try_auto_increment): Likewise.
1660         * reload.c (find_reloads): Likewise.
1661         (find_reloads_address): Likewise.
1662         (find_reloads_address_1): Likewise.
1663         * sched-deps.c: Include "target.h".
1664         (sched_analyze_1): Use appropriate address mode instead of Pmode.
1665         (sched_analyze_2): Likewise.
1666         * sel-sched-dump.c: Include "target.h".
1667         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
1668         * stor-layout.c (layout_type): Likewise.
1669         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
1670         (multiplier_allowed_in_address_p): Likewise.
1671         (get_address_cost): Likewise.
1672         * varasm.c (make_decl_rtl): Likewise.
1673
1674         * expr.c (expand_assignment): Always convert offsets to appropriate
1675         address mode.
1676         (store_expr): Likewise.
1677         (store_constructor): Likewise.
1678         (expand_expr_real_1): Likewise.
1679
1680         * reload.h (form_sum): Add MODE argument.
1681         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
1682         Update recursive calls.
1683         (subst_indexed_address): Update calls to form_sum.
1684
1685         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
1686         * tree-ssa-address.c: Include "target.h".
1687         (templates): Replace by ...
1688         (mem_addr_template_list): ... this new vector.
1689         (TEMPL_IDX): Handle address space numbers.
1690         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
1691         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
1692         instead of global cache.  Update call to gen_addr_rtx.
1693         (valid_mem_ref_p): Update call to addr_for_mem_ref.
1694         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
1695
1696         * rtl.h (convert_memory_address_addr_space): Add prototype.
1697         (convert_memory_address): Define as macro.
1698         * explow.c (convert_memory_address): Rename to ...
1699         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
1700         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
1701         Update recursive calls.
1702         (memory_address_addr_space): Call convert_memory_address_addr_space.
1703         * expmed.c (make_tree): Likewise.
1704         * expr.c (expand_assignment): Likewise.
1705         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
1706         (expand_expr_addr_expr): Likewise.  Also, update call.
1707
1708         * alias.c (find_base_value): Guard pointer size optimizations.
1709         (find_base_term): Likewise.
1710         * rtlanal.c (nonzero_bits1): Likewise.
1711         (num_sign_bit_copies1): Likewise.
1712         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
1713
1714         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
1715         (emit-rtl.o): Likewise.
1716         (auto-inc-dec.o): Likewise.
1717         (sched-deps.o): Likewise.
1718
1719 2009-10-26  Ben Elliston  <bje@au.ibm.com>
1720             Michael Meissner  <meissner@linux.vnet.ibm.com>
1721             Ulrich Weigand  <uweigand@de.ibm.com>
1722
1723         * doc/extend.texi (Named Address Spaces): New section.
1724         * coretypes.h (addr_space_t): New type.
1725         (ADDR_SPACE_GENERIC): New define.
1726         (ADDR_SPACE_GENERIC_P): New macro.
1727
1728         * doc/tm.texi (Named Address Spaces): New section.
1729         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
1730         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
1731         (TARGET_ADDR_SPACE_SUBSET_P): Document.
1732         (TARGET_ADDR_SPACE_CONVERT): Document.
1733         * target.h (struct gcc_target): Add addr_space substructure.
1734         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
1735         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
1736         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
1737         (TARGET_ADDR_SPACE_CONVERT): Likewise.
1738         (TARGET_ADDR_SPACE_HOOKS): Likewise.
1739         (TARGET_INITIALIZER): Initialize addr_space hooks.
1740         * targhooks.c (default_addr_space_legitimate_address_p): New function.
1741         (default_addr_space_legitimize_address): Likewise.
1742         (default_addr_space_subset_p): Likewise.
1743         (default_addr_space_convert): Likewise.
1744         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
1745         (default_addr_space_legitimize_address): Likewise.
1746         (default_addr_space_subset_p): Likewise.
1747         (default_addr_space_convert): Likewise.
1748
1749         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
1750         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
1751         (MEM_ADDR_SPACE): New macro.
1752         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
1753         address space memory attribute.
1754         (mem_attrs_htab_hash): Handle address space memory attribute.
1755         (mem_attrs_htab_eq): Likewise.
1756         (set_mem_attributes_minus_bitpos): Likewise.
1757         (set_mem_alias_set): Likewise.
1758         (set_mem_align): Likewise.
1759         (set_mem_expr): Likewise.
1760         (set_mem_offset): Likewise.
1761         (set_mem_size): Likewise.
1762         (adjust_address_1): Likewise.
1763         (offset_address): Likewise.
1764         (widen_memoy_address): Likewise.
1765         (get_spill_slot_decl): Likewise.
1766         (set_mem_attrs_for_spill): Likewise.
1767         (set_mem_addr_space): New function.
1768         * emit-rtl.h (set_mem_addr_space): Add prototype.
1769         * print-rtl.c (print_rtx): Print address space memory attribute.
1770         * expr.c (expand_assignment): Set address space memory attribute
1771         of generated MEM RTXes as appropriate.
1772         (expand_expr_real_1): Likewise.
1773         * cfgexpand.c (expand_debug_expr): Likewise.
1774         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
1775
1776         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
1777         size of "spare" bitfield.
1778         (TYPE_ADDR_SPACE): New macro.
1779         (ENCODE_QUAL_ADDR_SPACE): Likewise.
1780         (DECODE_QUAL_ADDR_SPACE): Likewise.
1781         (CLEAR_QUAL_ADDR_SPACE): Likewise.
1782         (KEEP_QUAL_ADDR_SPACE): Likewise.
1783         (TYPE_QUALS): Encode type address space.
1784         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
1785         * tree.c (set_type_quals): Set type address space.
1786         (build_array_type): Inherit array address space from element type.
1787         * print-tree.c (print_node_brief): Print type address space.
1788         (print_node): Likewise.
1789         * tree-pretty-print.c (dump_generic_node): Likewise.
1790
1791         * explow.c (memory_address): Rename to ...
1792         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
1793         Use address-space aware variants of memory address routines.
1794         * recog.c (memory_address_p): Rename to ...
1795         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1796         Use address-space aware variants of memory address routines.
1797         (offsettable_address_p): Rename to ...
1798         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
1799         Use address-space aware variants of memory address routines.
1800         * reload.c (strict_memory_address_p): Rename to ...
1801         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1802         Use address-space aware variants of memory address routines.
1803         (maybe_memory_address_p): Rename to ...
1804         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
1805         Use address-space aware variants of memory address routines.
1806         * expr.h (memory_address_addr_space): Add prototype.
1807         (memory_address): Define as macro.
1808         * recog.h (memory_address_addr_space_p): Add prototype.
1809         (memory_address_p): Define as macro.
1810         (offsettable_address_addr_space_p): Add prototype.
1811         (offsettable_address_p): Define as macro.
1812         (strict_memory_address_addr_space_p): Add prototype.
1813         (strict_memory_address_p): Define as macro.
1814
1815         * combine.c (find_split_point): Use address-space aware variants
1816         of memory address routines.
1817         * emit-rtl.c (operand_subword): Likewise.
1818         (change_address_1): Likewise.
1819         (adjust_address_1): Likewise.
1820         (offset_address): Likewise.
1821         * expr.c (emit_move_insn): Likewise.
1822         (expand_assignment): Likewise.
1823         (expand_expr_real_1): Likewise.
1824         * recog.c (verify_changes): Likewise.
1825         (general_operand): Likewise.
1826         (offsettable_memref_p): Likewise.
1827         (offsettable_nonstrict_memref_p): Likewise.
1828         (constrain_operands): Likewise.
1829         * reload.c (get_secondary_mem): Likewise.
1830         (find_reloads_toplev): Likewise.
1831         (find_reloads_address): Likewise.
1832         (find_reloads_subreg_address): Likewise.
1833         * reload1.c (reload): Likewise.
1834         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
1835         * rtl.h (address_cost): Add ADDRSPACE argument.
1836         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
1837         aware variant of memory address routines.
1838         * loop-invariant.c (create_new_invariant): Update address_cost call.
1839         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
1840         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
1841         Use address-space aware variant of memory address routines.
1842         (propagate_rtx_1): Update call to should_replace_address.
1843         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
1844         argument.
1845         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
1846         ADDRSPACE argument.  Use per-address-space instead of global cache.
1847         Use address-space aware variant of memory address routines.
1848         (get_address_cost): Likewise.
1849         (get_computation_cost_at): Update calls.
1850         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
1851         Use address-space aware variant of memory address routines.
1852         (create_mem_ref_raw): Update call to valid_mem_ref_p.
1853         (most_expensive_mult_to_index): Update call to
1854         multiplier_allowed_in_address_p.
1855
1856         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
1857         attribute to indicate named address spaces.
1858
1859         * varasm.c (get_variable_section): DECLs in named address spaces
1860         cannot be "common".
1861
1862         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
1863         for addresses in a non-generic address space.
1864
1865         * expr.c (emit_block_move_hints): Do not use libcalls for
1866         memory in non-generic address spaces.
1867         (clear_storage_hints): Likewise.
1868         (expand_assignment): Likewise.
1869
1870         * fold-const.c (operand_equal_p): Expressions refering to different
1871         address spaces are not equivalent.
1872
1873         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
1874         spaces are not equivalent.
1875         (rtx_equal_p): Likewise.
1876         * cse.c (exp_equiv_p): Likewise.
1877         * jump.c (rtx_renumbered_equal_p): Likewise.
1878         * reload.c (operands_match_p): Likewise.
1879
1880         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
1881         address spaces may alias.
1882         (true_dependence): Likewise.
1883         (canon_true_dependence): Likewise.
1884         (write_dependence_p): Likewise.
1885
1886         * dse.c (canon_address): Handle named address spaces.
1887         * ifcvt.c (noce_try_cmove_arith): Likewise.
1888
1889         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
1890         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
1891         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
1892         to handle conversions between different address spaces.
1893         * fold-const.c (fold_convert_loc): Likewise.
1894         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
1895         * tree-pretty-print.c (dump_generic_node): Likewise.
1896         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
1897         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
1898         * tree-inline.c (estimate_operator_cost): Likewise.
1899         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
1900         to different address spaces are not useless.
1901
1902 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
1903
1904         PR bootstrap/41345
1905         * cfgcleanup.c (trivially_empty_bb_p): New function.
1906         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
1907
1908         PR debug/41828
1909         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
1910         add_name_and_src_coords_attributes, gen_namespace_die,
1911         dwarf2out_set_name): Handle dwarf2_name returning NULL.
1912
1913 2009-10-26  Nick Clifton  <nickc@redhat.com>
1914
1915         * config.gcc: Add support for RX target.
1916         * config/rx: New directory.
1917         * config/rx/constraints.md: New file.
1918         * config/rx/predicates.md: New file.
1919         * config/rx/rx.c: New file.
1920         * config/rx/rx.h: New file.
1921         * config/rx/rx.md: New file.
1922         * config/rx/rx.opt: New file.
1923         * config/rx/rx-protos.h: New file.
1924         * config/rx/t-rx: New file.
1925         * doc/extend.texi: Document RX function attributes.
1926         * doc/invoke.texi: Document RX specific command line options.
1927         * doc/contrib.texi: Document RX contribution.
1928         * doc/md.texi: Document RX constraints.
1929         * doc/install.texi: Document RX support.
1930
1931 2009-10-26  Michael Matz  <matz@suse.de>
1932
1933         PR tree-optimization/41783
1934         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
1935         case for simple diamonds.
1936         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
1937         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
1938         argument, use alias oracle to skip some vdefs.
1939         (phi_translate_1): Change call to above, don't allocate new
1940         value ids if they can stay the same.
1941         (compute_avail): Allow vuse walking when looking up references.
1942
1943 2009-10-26  Richard Guenther  <rguenther@suse.de>
1944
1945         PR tree-optimization/41826
1946         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
1947         access to re-allocated vector fields.
1948
1949 2009-10-26  Richard Guenther  <rguenther@suse.de>
1950
1951         * graphite-sese-to-poly.c (check_poly_representation): Fix
1952         compile without checking.
1953
1954 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
1955
1956         PR fortran/41714
1957         * gimple.h (tree_annotate_all_with_location): Remove prototype.
1958         * gimplify.c (tree_should_carry_location_p,
1959         tree_annotate_one_with_location,tree_annotate_all_with_location):
1960         Remove obsolete functions.
1961
1962 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
1963
1964         PR target/41813
1965         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
1966
1967 2009-10-25  Richard Guenther  <rguenther@suse.de>
1968
1969         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
1970         Stream DECL_RESTRICTED_P.
1971         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
1972
1973 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
1974
1975         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
1976         a note when expanding to nothing.
1977
1978 2009-10-25  Richard Guenther  <rguenther@suse.de>
1979
1980         PR middle-end/41814
1981         * tree.c (find_decls_types_r): Deal with Java overloading
1982         BINFO_VIRTUALS for its own purpose.
1983
1984 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
1985
1986         * config/mips/predicates.md (hilo_operand): New predicate.
1987         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
1988         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
1989         splitter part from here ...:
1990         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
1991         op0 and op4 to match the DINS case.
1992         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
1993
1994 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1995
1996         PR middle-end/19154
1997         * avr.md (QIDI): Add new mode iterator.
1998         (sbrx_branch<mode>): Create new zero extract bit, test and jump
1999         patterns for all QI thru DI modes combinations.
2000         (sbrx_and_branch<mode>): Create new and based bit test and jump
2001         patterns for QI thru SI modes.
2002         avr.c (avr_out_sbxx_branch): Use only bit number.
2003
2004 2009-10-24  Jan Hubicka  <jh@suse.cz>
2005
2006         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
2007         to memory.
2008         (analyze_function): When analyzing noreturn nothrow call, do not
2009         compute written stats; free bitmaps of vars early if possible.
2010         (generate_summary): Only update bitmaps if computed.
2011         (propagate): Only dump bitmaps if computed.
2012         (ipa_reference_read_summary): Fix pasto.
2013
2014 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
2015
2016         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
2017         (aliasing_component_refs_p): ...this.  Return true if there is no
2018         common base and the base access types have the same alias set.
2019         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
2020         (indirect_refs_may_alias_p): Likewise.
2021
2022 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2023
2024         PR c/40033
2025         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
2026         a C_MAYBE_CONST_EXPR.
2027
2028 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
2029
2030         PR target/41787
2031         * config/rs6000/rs6000.c (struct machine_function): Add
2032         vsx_or_altivec_used_p to record if vector types are used.
2033         (rs6000_expand_to_rtl_hook): Rename from
2034         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
2035         any vector operations, so if there are, we can set VRSAVE to
2036         non-zero when only floating point vector registers are used.
2037         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
2038         (rs6000_check_vector_mode): Inner function to check if vector
2039         types are used in the code.
2040         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
2041         vector instructions are used.
2042
2043         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
2044         Indicate that VSX registers which overlap floating point
2045         registers, can't be used across a call, since the ABI only states
2046         the scalar part of the register will be saved and restored.
2047
2048 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
2049
2050         PR c/41673
2051         * alias.c (get_alias_set): Call langhook before returning 0 for
2052         types with structural equality.
2053         * c-common.c (c_common_get_alias_set): Use alias set of element
2054         type for arrays with structural comparison.
2055
2056 2009-10-23  Richard Guenther  <rguenther@suse.de>
2057
2058         PR middle-end/41805
2059         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
2060         gimple_call_nothrow_p.
2061
2062 2009-10-23  Richard Guenther  <rguenther@suse.de>
2063
2064         PR tree-optimization/41778
2065         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
2066         redundancy along a path in the CFG we want to optimize for speed
2067         is going to be removed.
2068         (execute_pre): Do partial-PRE only if the function is to be
2069         optimized for speed.
2070         (gate_pre): Do not turn off all of PRE when not optimizing a
2071         function for speed.
2072
2073 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2074
2075         * builtins.c (fold_builtin_cabs): Use validate_arg().
2076         (fold_builtin_cexp): Fix if-logic.
2077         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
2078
2079 2009-10-22  Jeff Law  <law@redhat.com>
2080
2081         * ira-lives.c (process_single_reg_class_operands): Update the
2082         hard reg costs for all the hard registers desired by the
2083         single reg class operand.
2084
2085 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2086
2087         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
2088         for rtxes that aren't handled specially.
2089
2090 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
2091
2092         * rtl.h (shallow_copy_rtvec): Declare.
2093         * rtl.c (shallow_copy_rtvec): New function.
2094         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
2095         rtx field if the subrtx has changed.
2096
2097 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
2098
2099         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
2100         (m32c_function_value): Make static, add new 'outgoing' argument.
2101         (m32c_libcall_value): Make static, add new 'fun' argument.
2102         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2103         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2104         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
2105         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
2106         (m32c_function_value, m32c_libcall_value): Delete declaration.
2107
2108 2009-10-22  Diego Novillo  <dnovillo@google.com>
2109
2110         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
2111
2112 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2113
2114         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
2115         space.
2116
2117 2009-10-22  Richard Guenther  <rguenther@suse.de>
2118
2119         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
2120         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
2121         (lto_symtab_merge): Do not merge cgraph nodes here.
2122         (lto_symtab_resolve_can_prevail_p): Simplify.
2123         (lto_symtab_resolve_symbols): Store cgraph node.
2124         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
2125         functions from the symtab.
2126         (lto_symtab_merge_cgraph_nodes_1): New function.
2127         (lto_symtab_merge_cgraph_nodes): Likewise.
2128
2129 2009-10-22  Richard Guenther  <rguenther@suse.de>
2130
2131         PR lto/41791
2132         * lto-streamer-out.c (lto_output_location): Stream the
2133         system header flag.
2134         * lto-streamer-in.c (lto_input_location): Likewise.
2135
2136 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
2137
2138         * cfgloopmanip.c (duplicate_subloops): Export.
2139         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
2140         (transform_to_exit_first_loop): Duplicate bbs starting from
2141         header up to loop->latch instead of exit->src.
2142         Initialize control variable to the correct number of iterations.
2143         (gather_scalar_reductions): Do not register double reductions.
2144         (parallelize_loops): Dump which loop is tested.
2145         Indicate whether the parallelized loop is inner or not.
2146         Remove the innermost-loop requirement.
2147         * cfgloop.h (duplicate_subloops): Export.
2148         * tree-cfg.c (add_phi_args_after_redirect): New function.
2149         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
2150         Call duplicate_subloops.
2151         Update number of iterations at the exit condition.
2152         Don't redirect nexits always to the loop exit.
2153         Redirect copied edges from latch to the loop exit.
2154
2155 2009-10-22  Jan Hubicka  <jh@suse.cz>
2156
2157         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
2158         flag_ltrans check.
2159         * ipa-inline.c (cgraph_mark_inline_edge,
2160         cgraph_decide_inlining_of_small_function,
2161         cgraph_decide_inlining, inline_read_summary): Disable indirect
2162         inlining for WPA for time being.
2163
2164         PR tree-optimize/40556
2165         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
2166
2167 2009-10-22  Richard Guenther  <rguenther@suse.de>
2168
2169         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
2170         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
2171
2172 2009-10-22  Jan Hubicka  <jh@suse.cz>
2173
2174         PR lto/41730
2175         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
2176         global vars.
2177         (check_call): Handle only indirect calls.
2178         (propagate_bits): Update comment.
2179         (write_node_summary_p): Turn bogus check to assert.
2180         (ipa_reference_write_summary): Stream calls_read_all properly.
2181         (ipa_reference_read_summary): Stream in calls_read_all properly.
2182         (read_write_all_from_decl): New function.
2183         (propagate): Handle OVERWRITABLE nodes and external calls here.
2184         * ipa-pre-const.c (check_call): In IPA mode handle indirect
2185         calls only.
2186         (analyze_function): Do not check visibility here.
2187         (add_new_function): We summary OVERWRITABLE too.
2188         (generate_summary): Stream OVERWRITABLE nodes too.
2189         (propagate): Handle external calls and OVERWRITABLE nodes here.
2190         (local_pure_const): Check visibility here.
2191
2192 2009-10-22  Jan Hubicka  <jh@suse.cz>
2193
2194         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
2195         (pass_ipa_cp): Register them.
2196         (ipcp_init_stage): Analyze all functions for whopr/lto.
2197         (ipcp_propagate_stage): Skip external calls.
2198         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
2199         * ipa-reference.c (write_node_summary_p): Fix thinko about
2200         availability.
2201         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
2202         when in ltrans, skip executing of ipa passes since everything
2203         should've been done.
2204         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
2205         (inline_generate_summary): Likewise.
2206         (inline_read_summary): New function.
2207         (inline_write_summary): New function.
2208         (pass_ipa_inline): Register new hooks.
2209         * ipa-prop.c: Inlcude lto-streamer.h
2210         (ipa_edge_args_vector): Update declaration.
2211         (ipa_count_arguments, ipa_compute_jump_functions,
2212         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
2213         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
2214         ipa_read_node_info): New static functions.
2215         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
2216         (duplicate_array): Use xmalloc.
2217         (duplicate_ggc_array): New.
2218         (ipa_edge_duplication_hook): Use it.
2219         (ipa_update_after_lto_read): New function.
2220         * ipa-prop.h (ipa_prop_write_jump_functions,
2221         ipa_prop_read_jump_functions): Declare.
2222         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
2223         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
2224         (ipa_edge_args_vector): Move into GGC.
2225         (ipa_check_create_edge_args): Update.
2226         (ipa_update_after_lto_read): New.
2227         * passes.c (ipa_write_summaries_1): When in wpa, do not write
2228         summaries.
2229         (ipa_read_summaries): When in ltrans, so not read summaries.
2230         * lto-streamer.c (lto_get_section_name): Add
2231         LTO_section_jump_functions.
2232         * lto-streamer.h (LTO_section_jump_functions): New section.
2233         (produce_asm): Declare.
2234         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
2235         * lto-streamer-out.c (produce_asm): Export.
2236         * lto-streamer-in.c: Include tree-pass.h
2237         (input_function): Free dominance info when done.
2238         (lto_read_body): Push ipa_inline in ltrans stage.
2239         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
2240         * Makefile.in (GTFILES): Add ipa-prop.h
2241
2242 2009-10-22  Matthias Klose  <doko@ubuntu.com>
2243
2244         * doc/install.texi: Document --enable-browser-plugin.
2245
2246 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
2247
2248         * doc/invoke.texi (fira-loop-pressure): Update default value.
2249         * opts.c (decode_options): Remove default value setting for
2250         flag_ira_loop_pressure.
2251         * config/ia64/ia64.c (ia64_override_options): Set
2252         flag_ira_loop_pressure up for -O3.
2253         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
2254
2255 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
2256
2257         PR tree-optimization/41497
2258         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
2259         chrec_dont_know if the evolution function returned by follow_ssa_edge
2260         is constant in the analyzed loop and is not compatible with the
2261         initial value before the loop.
2262         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
2263
2264 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
2265
2266         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
2267
2268 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
2269
2270         PR other/25507
2271         * doc/invoke.texi: Document -print-multi-os-directory.
2272
2273 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
2274
2275         PR c++/41313
2276         * gcc/config/darwin10.h: Use default_emit_unwind_label.
2277         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
2278         when darwin_emit_unwind_label is used.
2279
2280 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
2281
2282         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
2283         order of checks.
2284
2285 2009-10-20  Richard Henderson  <rth@redhat.com>
2286
2287         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
2288         before emit_post_landing_pad.
2289
2290 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
2291
2292         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
2293         Use when calling rtx_costs.
2294         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
2295         global optimize_size.  Pass speed to mips_binary_cost.
2296
2297 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2298
2299         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
2300         of TREE_CONSTANT.
2301
2302 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
2303
2304         * rtl.h (simplify_replace_fn_rtx): Declare.
2305         (wrap_constant, unwrap_constant): Delete.
2306         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
2307         (expand_debug_expr): Don't call wrap_constant.
2308         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
2309         (auto_adjust_pair): Fold into...
2310         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
2311         Just return a new value.
2312         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
2313         otherwise use simplify_replace_rtx.
2314         * cselib.c (wrap_constant): Reinstate old definition.
2315         (cselib_expand_value_rtx_1): Don't wrap constants.
2316         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
2317         simplify_replace_rtx.
2318         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
2319         * reload1.c (reload): Skip all uses for an insn before adjusting it.
2320         Use simplify_replace_rtx.
2321         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
2322         adapted from...
2323         (simplify_replace_rtx): ...here.  Turn into a wrapper for
2324         simplify_replace_fn_rtx.
2325         (simplify_unary_operation): Don't unwrap CONSTs.
2326         * var-tracking.c (check_wrap_constant): Delete.
2327         (vt_expand_loc_callback): Don't call it.
2328         (vt_expand_loc): Likewise.
2329
2330 2009-10-20  Pascal Obry  <obry@adacore.com>
2331             Eric Botcazou  <ebotcazou@adacore.com>
2332
2333         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
2334
2335 2009-10-20  Michael Matz  <matz@suse.de>
2336
2337         * loop-invariant.c (create_new_invariant): Use different magic number.
2338
2339 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
2340
2341         PR target/39247
2342         * arm.c (arm_override_options): Forcibly disable hot/cold block
2343         partitioning.
2344
2345 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2346
2347         PR debug/41739
2348         * haifa-sched.c (try_ready): Skip debug deps updating speculation
2349         status.
2350
2351 2009-10-20  Richard Guenther  <rguenther@suse.de>
2352
2353         * ggc-page.c: Include cfgloop.h.
2354         (struct max_alignment): Drop long double, add void *.
2355         (extra_order_size_table): Add low non-power-of-two multiples
2356         of MAX_ALIGNMENT.  Drop small type-based entries, add
2357         tree_type, cgraph_node and loop.
2358         * alloc-pool.c (struct allocation_object_def): Drop long double
2359         aligning element.
2360
2361 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
2362
2363         PR debug/41340
2364         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
2365         referenced just in DEBUG_INSNs.
2366
2367 2009-10-20  Richard Guenther  <rguenther@suse.de>
2368
2369         PR lto/41761
2370         * gimple.c (gimple_register_type): Make sure we register
2371         the types main variant first.
2372
2373 2009-10-20  Richard Guenther  <rguenther@suse.de>
2374
2375         * gimple.c (gimple_types_compatible_p): Simplify.  Move
2376         cheap checks before hashtable queries.  Add checks for
2377         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
2378
2379 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
2380
2381         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
2382         without size or with size that can't be represented as a host integer.
2383
2384 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
2385
2386         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
2387         the removal of a debug stmt as a significant change.
2388
2389 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
2390
2391         * config/s390/s390.md: Added agen condition to operand
2392         forwarding bypasses.  Added bypass for early address generation
2393         use of int results.  Updated comments.
2394
2395 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
2396
2397         * config/i386/i386.c: Remove signal.h #include.
2398
2399 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
2400
2401         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
2402         * doc/rtl.texi: Document ss_abs.
2403
2404 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2405
2406         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
2407         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
2408         instead of C_LEX_RAW_STRINGS.
2409         (lex_string): Handle CPP_UTF8STRING.
2410         * c-parser.c (c_parser_postfix_expression): Likewise.
2411         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
2412         (C_LEX_STRING_NO_JOIN): ... this.
2413
2414 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
2415
2416         * config/cris/cris.c (cris_function_value, cris_libcall_value,
2417         cris_function_value_regno_p): New functions.
2418         (cris_promote_function_mode): Update comment.
2419         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
2420         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
2421         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
2422         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
2423
2424 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2425
2426         * unwind-dw2.c (execute_stack_op): Fix operand order for
2427         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
2428
2429 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
2430
2431         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
2432         (lower_stmt) <GIMPLE_BIND>: Add comment.
2433         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
2434         and return.
2435         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
2436         Otherwise lower it and set cannot_fallthru to true.
2437         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
2438         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
2439         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
2440         to true for a noreturn call.  Do not remove statements.
2441         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
2442         Set cannot_fallthru to false on function exit.
2443         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
2444         <GIMPLE_ASSIGN>: Remove.
2445
2446 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2447
2448         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
2449
2450 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2451
2452         * config/s390/s390.c (s390_z10_optimize_cmp): Use
2453         next/prev_active_insn to skip DEBUG_INSNs as well.
2454
2455 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
2456
2457         * config/arm/arm.c (output_move_neon): Use DImode in call to
2458         adjust_address.
2459
2460 2009-10-19  Matthias Klose  <doko@ubuntu.com>
2461
2462         PR target/40134
2463         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
2464
2465 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
2466
2467         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
2468
2469 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2470
2471         PR middle-end/41738
2472         * optabs.c (expand_binop): Make mode of shift count expression mode
2473         of shift count not target.
2474         Remove indent nit.
2475
2476 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2477
2478         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
2479         case.  Force using values to replace references within the statement.
2480         (convert_local_reference_stmt): Likewise.
2481
2482 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2483
2484         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
2485         remove a subsequent GOTO or RETURN statement.
2486
2487 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
2488
2489         * config/avr.md (*movqi): Add zero as equally preferable constraint
2490         as general register.
2491         (*movhi): Ditto.
2492
2493 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
2494
2495         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
2496
2497 2009-10-17  Richard Guenther  <rguenther@suse.de>
2498
2499         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
2500
2501 2009-10-17  Richard Guenther  <rguenther@suse.de>
2502
2503         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
2504         operands in COMPONENT_REFs.
2505
2506 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
2507
2508         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
2509         if not defined. Change type of second argument to const_rtx.
2510         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
2511         macro not defined.
2512         * targhooks.h (default_libcall_value): Update prototype.
2513         * target.h (struct gcc_target): Change type of second argument of
2514         libcall_value to const_rtx.
2515         * config/arm/arm.c (arm_libcall_value): Change type of second argument
2516         to const_rtx.
2517         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
2518         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
2519
2520 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
2521
2522         PR debug/40521
2523         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
2524         * cgraphunit.c (cgraph_optimize): Call it.
2525         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
2526         (dwarf2out_assembly_start): ... here.  New hook.
2527         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
2528         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
2529         hook.
2530         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
2531         * sdbout.c (sdb_debug_hooks): Likewise.
2532         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
2533         (vmsdbgout_assembly_start): New hook.
2534
2535 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2536
2537         * rtl.h (RTL_LOCATION): Fix typo.
2538
2539 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2540
2541         * print-rtl.c (print_rtx): Print locators in asm_operands
2542         and asm_input.
2543
2544 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
2545
2546         PR debug/41535
2547         * sched-deps.c (depl_on_debug_p): New.
2548         (attach_dep_link): Reject debug deps before nondebug deps.
2549         (add_to_deps_list): Insert debug deps after nondebug deps.
2550         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
2551         deps.
2552         (sd_add_dep): Do not reject debug deps.
2553         (add_insn_mem_dependence): Don't count debug deps.
2554         (remove_from_deps): Likewise.
2555         (sched_analyze_2): Set up mem deps on debug insns.
2556         (sched_analyze_insn): Record reg uses for deps on debug insns.
2557         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
2558         try_ready nondebug insn after debug insn.
2559         * ddg.c (create_ddg_dep_from_intra_loop_link,
2560         create_ddg_dep_no_link): Don't reject debug deps.
2561
2562 2009-10-16  Richard Guenther  <rguenther@suse.de>
2563
2564         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
2565         (maybe_merge_incomplete_and_complete_type): Likewise.
2566         (lto_symtab_merge): Do not call them.  Do not warn for
2567         complete vs. incomplete compatible types.
2568         (lto_symtab_merge_decls_2): Simplify.
2569         * gimple.c (gimple_force_type_merge): Remove.
2570         (gimple_types_compatible_p): Make it static.
2571         * gimple.h (gimple_force_type_merge): Remove.
2572         (gimple_types_compatible_p): Likewise.
2573
2574 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
2575
2576         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
2577         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
2578
2579 2009-10-16  Richard Guenther  <rguenther@suse.de>
2580
2581         PR tree-optimization/41728
2582         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
2583         if fold_stmt did anything.
2584
2585 2009-10-16  Richard Guenther  <rguenther@suse.de>
2586
2587         PR lto/41715
2588         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
2589         (maybe_fixup_handled_component): New function.
2590         (input_gimple_stmt): Fixup mismatched decl replacements.
2591
2592 2009-10-16  Richard Guenther  <rguenther@suse.de>
2593
2594         PR lto/41713
2595         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
2596         the same as VAR_DECL.
2597
2598 2009-10-16  Richard Guenther  <rguenther@suse.de>
2599
2600         * gimple.c (iterative_hash_gimple_type): For integer types
2601         also hash their minimum and maximum values and the string flag.
2602         For array types hash their domain and the string flag.
2603
2604 2009-10-16  Richard Guenther  <rguenther@suse.de>
2605
2606         * gimple.c (gimple_types_compatible_p): Restrict completing
2607         types to record or unions.  Simplify completion.
2608         Do not merge records or unions with different
2609         TYPE_STRUCTURAL_EQUALITY_P tag.
2610         (iterative_hash_gimple_type): Restrict non-recursing into
2611         pointer targets for records and unions.
2612
2613 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2614
2615         PR debug/41717
2616         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
2617         * dwarf2out.c (mem_loc_descriptor): Don't handle
2618         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
2619         punt if it is not lowpart subreg or if inner mode isn't
2620         MODE_INT.
2621
2622 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2623
2624         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
2625         investigating previous or next insns.
2626
2627 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
2628
2629         * tree-sra.c (build_ref_for_offset_1): Update comment.
2630
2631 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
2632
2633         * config/s390/s390.md (atype): Added missing values.
2634
2635 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2636
2637         PR target/41702
2638         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
2639         (casesi64p): Update pattern to reflect above.
2640
2641 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
2642
2643         PR rtl-optimization/41697
2644         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
2645
2646 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
2647
2648         PR target/23983
2649         * config/rs6000/predicates.md: Update copyright year.
2650         * config/rs6000/altivec.md: Ditto.
2651
2652         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
2653         (MD_INCLUDES): Add a2.md.
2654
2655         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
2656         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
2657         (builtin_classify): New static vector to classify various builtins
2658         to get the tree attributes correct.
2659         (def_builtin): Set the attributes of builtins based on what the
2660         builtin does (i.e. memory operation, floating point, saturation
2661         need special attributes, others are pure functions).
2662
2663         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
2664         the builtins.
2665         (enum rs6000_builtins): Include rs6000-builtin.def to define the
2666         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
2667         RS6000_BUILTIN_COUNT.
2668         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
2669         MAX_RS6000_BUILTINS.
2670
2671         * config/rs6000/rs6000-builtin.def: New file that combines the
2672         builtin enumeration name and attributes.
2673
2674 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
2675
2676         * config/i386/linux.h (ASM_SPEC): Add --32.
2677
2678 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2679
2680         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
2681         and DW_TAG_template_alias.
2682         (dwarf_attr_name): Handle DW_AT_main_subprogram,
2683         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
2684         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
2685         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
2686         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
2687         and DW_AT_GNU_odr_signature.
2688         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
2689         DW_FORM_flag_present and DW_FORM_ref_sig8.
2690         (output_signature): Only print name on the first byte.
2691         (output_die): Likewise for dw_val_class_data8.
2692
2693 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
2694
2695         * doc/invoke.texi: Clarify that most optimizations are not enabled
2696         without -O.
2697
2698 2009-10-15  Richard Guenther  <rguenther@suse.de>
2699
2700         PR lto/41668
2701         * gimple.c (compare_type_names_p): Handle anonymous names
2702         differently based on new mode argument.
2703         (gimple_types_compatible_p): For structs also compare the tags.
2704         (iterative_hash_type_name): Rename to ...
2705         (iterative_hash_name): ... this.  Hash all names.
2706         (iterative_hash_gimple_type): Fix hashing the struct tag of
2707         pointer targets.  Hash field decl names.
2708
2709 2009-10-15  Richard Guenther  <rguenther@suse.de>
2710
2711         PR lto/41669
2712         * gimple.c (gimple_get_alias_set): Avoid recursing on
2713         invalid type topology.
2714
2715 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2716
2717         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
2718
2719 2009-10-15  Richard Guenther  <rguenther@suse.de>
2720
2721         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
2722
2723 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
2724
2725         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
2726         add --with-tune{,-32,-64} configured default for -mtune if explicit
2727         -mcpu is used.
2728
2729 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
2730
2731         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
2732
2733 2009-10-14  DJ Delorie  <dj@redhat.com>
2734
2735         * config/h8300/h8300.c (F): New.
2736         (Fpa): New.
2737         (h8300_emit_stack_adjustment): Call them.
2738         (push): Likewise.
2739         (h8300_push_pop): Likewise.
2740         (h8300_expand_prologue): Likewise.
2741         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
2742         (MUST_USE_SJLJ_EXCEPTIONS): Define.
2743         (INCOMING_RETURN_ADDR_RTX): Define.
2744         (INCOMING_FRAME_SP_OFFSET): Define.
2745         (DWARF_CIE_DATA_ALIGNMENT): Define.
2746
2747 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2748
2749         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
2750         fields in builtin structs.
2751         (finalize_record_size): Likewise.
2752
2753 2009-10-14  Richard Guenther  <rguenther@suse.de>
2754
2755         * gimple.c (gtc_ob): New global.
2756         (struct type_pair_d): Replace pointers with type UIDs.
2757         (type_pair_hash): Adjust.
2758         (type_pair_eq): Likewise.
2759         (lookup_type_pair): Likewise.  Allocate from an obstack.
2760         (gimple_force_type_merge): Adjust.
2761         (gimple_types_compatible_p): Likewise.
2762         (free_gimple_type_tables): Free the obstack.
2763
2764 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2765
2766         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
2767         stmts setting DEBUG_EXPR_DECLs.
2768
2769         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
2770         Don't crash if mode1 is VOIDmode.
2771
2772 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
2773
2774         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
2775         * params.h (IRA_LOOP_RESERVED_REGS): New.
2776         * tree-pass.h (pass_subregs_of_mode_init,
2777         pass_subregs_of_mode_finish): Remove.
2778         * passes.c (pass_subregs_of_mode_init,
2779         pass_subregs_of_mode_finish): Remove.
2780         (pass_reginfo_init): Move before loop optimizations.
2781         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
2782         * common.opt (fira-loop-pressure): New.
2783         * toplev.h (flag_ira_loop_pressure): New.
2784         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
2785         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
2786         Make external and void type functions.
2787         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
2788         pass_subregs_of_mode_finish): Remove.
2789         * ira-costs.c (init_costs): Call init_subregs_of_mode.
2790         * regmove.c: Include ira.h.
2791         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
2792         register pressure calculation in loops.
2793         * loop-invariant.c: Include REGS_H and ira.h.
2794         (struct loop_data): New members max_reg_pressure, regs_ref, and
2795         regs_live.
2796         (struct invariant): New member orig_regno.
2797         (curr_loop): New variable.
2798         (find_exits): Initialize regs_ref and regs_live.
2799         (create_new_invariant): Initialize orig_regno.
2800         (get_cover_class_and_nregs): New.
2801         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
2802         array.  Add code for flag_ira_loop_pressure.
2803         (gain_for_invariant): Make new_regs an array.  Add code for
2804         flag_ira_loop_pressure.
2805         (best_gain_for_invariant): Ditto.
2806         (set_move_mark): New parameter gain.  Use it for debugging output.
2807         (find_invariants_to_move): Make regs_needed and new_regs an array.
2808         Add code for flag_ira_loop_pressure.
2809         (move_invariant_reg): Set up orig_regno.
2810         (move_invariants): Set up reg classes for pseudos for
2811         flag_ira_loop_pressure.
2812         (free_loop_data): Clear regs_ref and regs_live.
2813         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
2814         get_regno_cover_class, change_pressure, mark_regno_live,
2815         mark_regno_death, mark_reg_store, mark_reg_clobber,
2816         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
2817         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
2818         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
2819         register pressure calculation in loops if new regs were added.
2820         Call finish_subregs_of_mode.
2821         * opts.c (decode_options): Set up flag_ira_loop_pressure.
2822         * Makefile.in (loop-invariant.o): Add ira.h.
2823         (regmove.o): Ditto.
2824         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
2825         Describe.
2826         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
2827
2828 2009-10-14  Richard Guenther  <rguenther@suse.de>
2829
2830         * lto-symtab.c (lto_symtab_compatible): Fold in ...
2831         (lto_symtab_merge): ... here.  Rewrite both to take the
2832         prevailing and a to-be-merged entry and to queue diagnostics properly.
2833         (lto_symtab_resolve_replaceable_p): New predicate for
2834         symbol resolution.
2835         (lto_symtab_resolve_can_prevail_p): Likewise.
2836         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
2837         handles merging commons by choosing the largest decl.  Fold
2838         in code that gives ODR errors.
2839         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
2840         diagnostics here.
2841         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
2842         case of no prevailing decl here.  Diagnose mismatches
2843         in object types here.  Drop all but the prevailing decls.
2844         (lto_symtab_prevailing_decl): Return the single prevailing decl.
2845         * lto-streamer-in.c (lto_input_tree_ref): Deal with
2846         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
2847
2848 2009-10-14  Richard Guenther  <rguenther@suse.de>
2849
2850         PR lto/41521
2851         * lto-streamer-in.c (input_bb): Replace debug stmts with
2852         nops instead of dropping them.
2853
2854 2009-10-14  Nick Clifton  <nickc@redhat.com>
2855
2856         * gcc/doc/extended.texi: Replace the dash character with @minus{}
2857         in situations where it is being used as a minus symbol.
2858         * gcc/doc/tm.texi: Likewise.
2859         * gcc/doc/md.texi: Likewise.
2860
2861 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
2862
2863         PR preprocessor/41543
2864         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
2865         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
2866         * tree.c: Include intl.h.
2867         (expand_location): Handle BUILTINS_LOCATION.
2868         * Makefile.in (tree.o): Depend on intl.h.
2869
2870         PR debug/41695
2871         * dwarf2out.c (dwarf2out_var_location): Always clear
2872         last_postcall_label when changing last_label.
2873
2874 2009-10-14  Pascal Obry  <obry@adacore.com>
2875
2876         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
2877         (process_command): Handle -E as done with -c and -S.  Do not add
2878         the target executable suffix to the output file when -E is used.
2879         (main): Adjust error message accordingly.
2880
2881 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
2882
2883         PR debug/41343
2884         PR debug/41447
2885         PR debug/41264
2886         PR debug/41338
2887         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
2888         decl with rtl.
2889         (tree_code_size): Likewise.
2890
2891 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2892
2893         * builtins.c (fold_builtin_1): Support complex "arc" functions.
2894         * real.h (HAVE_mpc_arc): Define.
2895
2896 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
2897
2898         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
2899         (struct builtin_description): Add fndecl field.
2900         (bdesc): Remove const qualifier.  Update initializer.
2901         (sh_media_init_builtins): Remove const qualifier for d.  Record
2902         the result of add_builtin_function to the fndecl field.
2903         (sh_builtin_decl): New.
2904         (sh_media_builtin_decl): New.
2905
2906 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
2907
2908         PR target/38948
2909         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
2910         requests between special registers.
2911
2912 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
2913
2914         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
2915
2916 2009-10-13  Richard Henderson  <rth@redhat.com>
2917
2918         PR tree-optimization/41377
2919         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
2920         (cleanup_empty_eh_merge_phis): New change_region parameter;
2921         pass it on to redirect_eh_edge_1.  Update callers.
2922         (cleanup_empty_eh_unsplit): Don't require an existing EH label
2923         at the destination block.
2924
2925 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
2926
2927         * passes.c (register_pass): Replaced gcc_unreachable by
2928         fatal_error on failure. Mentions plugins in comments & messages.
2929
2930 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
2931
2932         PR target/41693
2933         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
2934         * sched-vis.c (print_value): Use it.
2935         * cselib.c (cselib_hash_rtx): Likewise.
2936         * print-rtl.c (print_rtx): Likewise.
2937         * cfgexpand.c (expand_debug_rtx): Likewise.
2938         * var-tracking.c (vt_expand_loc_callback): Likewise.
2939
2940 2009-10-13  Richard Guenther  <rguenther@suse.de>
2941
2942         PR lto/41565
2943         * opts.c (handle_option): Split out code to handle setting
2944         the options flag var ...
2945         (set_option): ... here.
2946         * opts.h (set_option): Declare.
2947         * lto-opts.c (register_user_option_p): Include -fexceptions
2948         and all position independent code variants.
2949         (handle_common_option): Remove.
2950         (lto_reissue_options): Use set_option.
2951
2952 2009-10-13  Martin Jambor  <mjambor@suse.cz>
2953
2954         PR tree-optimization/41661
2955         * ipa-prop.c (compute_complex_pass_through): Allow only operations
2956         that are tcc_comparisons or do not change the type in any
2957         un-usleless way.
2958         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
2959         folding tcc_comparison operations.
2960
2961 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
2962
2963         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
2964         properly.
2965
2966 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
2967
2968         PR debug/41343
2969         PR debug/41447
2970         PR debug/41264
2971         PR debug/41338
2972         * tree.def (DEBUG_EXPR_DECL): New.
2973         * rtl.def (DEBUG_EXPR): New.
2974         * gengtype.c (adjust_field_rtx_def): Handle it.
2975         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
2976         (insert_debug_temp_for_var_def): ... this.  Drop support for
2977         moving.  Take iterator for def stmt; insert debug stmt before it.
2978         Scan early for use count and kind in debug stmts.
2979         (propagate_defs_into_debug_stmts): Rename to...
2980         (insert_debug_temps_for_defs): ... this.  Likewise.
2981         * tree.h (DEBUG_TEMP_UID): New.
2982         * tree.c (next_debug_decl_uid): New.
2983         (make_node_stat): Count debug decls separately.
2984         (copy_node_stat): Likewise.
2985         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
2986         * var-tracking.c (dv_is_decl_p): Recognize it.
2987         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
2988         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
2989         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
2990         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
2991         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
2992         (cselib_hash_rtx): Likewise.
2993         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
2994         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
2995         debug bind stmts.
2996         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
2997         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
2998         * rtl.c (copy_rtx): Likewise.
2999         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
3000         * print-rtl.c (print_rtx): Likewise.
3001         * sched-vis.c (print_value): Likewise.
3002         (print_insn): Handle DEBUG_EXPR_DECL.
3003         * tree-dump.c (dequeue_and_dump): Likewise.
3004         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
3005         * gimple-iterator (gsi_replace): Check for same lhs.
3006         (gsi_remove): Insert debug temps.
3007         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
3008         (move_computations_stmt): Drop explicit propagation into debug stmts.
3009         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
3010         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
3011         * tree-ssa-sink.c (statement_sink_location): Likewise.
3012         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
3013         * tree-ssanames.c (release_ssa_name): Adjust for rename.
3014         * tree-flow.h: Likewise.
3015         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
3016         debug temps without values.
3017         (eliminate_unnecessary_stmts): Don't discard just-inserted
3018         debug stmts.
3019
3020 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
3021
3022         PR target/26515
3023         * config/cris/cris.md (andu): Check that operand 1 is one of the
3024         general registers.  Fix typo in head comment.
3025
3026 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
3027
3028         * config/i386/i386.md (vswapmov): New.
3029         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
3030         (ix86_function_ms_hook_prologue): New.
3031         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
3032         * configure.ac: Test for swap suffix support in as.
3033         * configure: Rebuild.
3034
3035 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
3036
3037         PR target/41680
3038         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
3039         paradoxical subregs to prevent partial register stalls if the inner
3040         mode is integer mode.
3041
3042 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3043
3044         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
3045
3046 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
3047
3048         PR c++/41570
3049         * gcc/dwarf2out.c (template_parameter_pack_die,
3050         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
3051
3052 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
3053
3054         PR debug/41616
3055         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
3056         on updates too.
3057         (maybe_register_def): Likewise.  Take stmt iterator.
3058         (rewrite_update_stmt): Take stmt iterator and pass it on.
3059         (rewrite_update_enter_block): Pass stmt iterator.
3060
3061 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3062
3063         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
3064         (spu_builtin_decl): New function.
3065
3066 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
3067
3068         * config/i386/i386.md (SWIM): New mode iterator.
3069         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
3070         using SWIM mode iterator.
3071         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
3072         patterns using SWI48 mode iterator.
3073         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
3074         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
3075         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
3076         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
3077         patterns using SWI248 mode iterator.
3078         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
3079         gen_x86_movdicc_0_m1_rex64 for renamed function
3080
3081 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
3082             Eric Botcazou  <ebotcazou@adacore.com>
3083
3084         PR target/33743
3085         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
3086         * config/sparc/sol2-unwind.h: New file.
3087
3088 2009-10-11  Olivier Hainque  <hainque@adacore.com>
3089             Eric Botcazou  <ebotcazou@adacore.com>
3090
3091         PR target/33743
3092         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
3093         * config/i386/sol2-unwind.h: New file.
3094
3095 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
3096
3097         PR target/41665
3098         * config/i386/i386.md (addsi_1_zext): Get the proper second
3099         operand for lea.
3100
3101 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
3102
3103         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
3104         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
3105         replacement value.
3106
3107 2009-10-11  Richard Guenther  <rguenther@suse.de>
3108
3109         * gimple.c (iterative_hash_type_name): Do not handle special
3110         anonymous names.
3111
3112 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
3113
3114         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
3115         (*setcc_si_1_and): Ditto.
3116         (*setcc_si_1_movzbl): Ditto.
3117         (*setcc_<mode>_2): Ditto.
3118         (*setcc_qi): Rename from *setcc_1.
3119         (*setcc_qi_slp): Rename from *setcc_2.
3120
3121         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
3122         (*zero_extendqisi2_movzbw_and splitter): Ditto.
3123
3124         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
3125         "if" condition, there is already assert with reload_completed present.
3126
3127 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
3128
3129         * plugin.c (try_init_one_plugin): Improve constness of variable err.
3130
3131 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
3132
3133         * doc/install.texi (Final install): Refer to
3134         http://gcc.gnu.org/bugs/ for bug reporting.
3135
3136 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
3137
3138         * configure.ac: Add test for dci instruction.
3139         * configure: Regenerate.
3140         * config.in: Likewise.
3141         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
3142         * doc/invoke.texi: Add cpu_type 476 and 476fp.
3143         (-mmulhw): Add 476 to description.
3144         (-mdlmzb): Likewise.
3145         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
3146         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
3147         (processor_target_table): Add 476 and 476fp entries.
3148         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
3149         (rs6000_issue_rate): Add CPU_PPC476.
3150         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
3151         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
3152         (processor_type): Add PROCESSOR_PPC476.
3153         (EXTRA_SPECS): Add asm_cpu_476 string.
3154         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
3155         (define_attr "cpu"): Add ppc476.
3156         Include 476.md.
3157         Update comments for 476.
3158         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
3159         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
3160         Update copyright year.
3161         * config/rs6000/476.md: New file.
3162         * config/rs6000/40x.md: Add description for "isel" attribute.
3163         Update copyright year.
3164         * config/rs6000/440.md: Likewise.
3165         * config/rs6000/603.md: Likewise.
3166         * config/rs6000/6xx.md: Likewise.
3167         * config/rs6000/7450.md: Likewise.
3168         * config/rs6000/7xx.md: Likewise.
3169         * config/rs6000/8540.md: Likewise.
3170         * config/rs6000/cell.md: Likewise.
3171         * config/rs6000/e300c2c3.md: Likewise.
3172         * config/rs6000/e500mc.md: Likewise.
3173         * config/rs6000/mpc.md: Likewise.
3174         * config/rs6000/power4.md: Likewise.
3175         * config/rs6000/power5.md: Likewise.
3176         * config/rs6000/power6.md: Likewise.
3177         * config/rs6000/power7.md: Likewise.
3178         * config/rs6000/rios1.md: Likewise.
3179         * config/rs6000/rios2.md: Likewise.
3180         * config/rs6000/rs64.md: Likewise.
3181
3182 2009-10-10  Richard Guenther  <rguenther@suse.de>
3183
3184         PR tree-optimization/41654
3185         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
3186         a cond expr before calling gimple_cond_set_condition_from_tree.
3187         (ifcombine_iforif): Likewise.
3188
3189 2009-10-09  Ian Lance Taylor  <iant@google.com>
3190
3191         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
3192         * configure: Rebuild.
3193
3194 2009-10-09  Neil Vachharajani <nvachhar@google.com>
3195
3196         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
3197         deprecated.
3198
3199 2009-10-09  Richard Guenther  <rguenther@suse.de>
3200
3201         PR lto/41638
3202         * target-def.h (TARGET_BUILTIN_DECL): Define.
3203         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
3204         * target.h (struct gcc_target): Add builtin_decl target hook.
3205         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
3206         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
3207         target builtins.
3208         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
3209         not gcc_unreachable.
3210         (lto_output_builtin_tree): Sorry if the target does not support
3211         streaming target builtins.
3212         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
3213         (rs6000_builtin_decl): New function.
3214         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
3215         (ix86_builtin_decl): New function.
3216
3217 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
3218
3219         PR preprocessor/41445
3220         * c-ppoutput.c (do_line_change): New function.
3221         (cb_line_change): Use it.
3222         (scan_translation_unit): Call do_line_change if
3223         avoid_paste or PREV_WHITE and token location is on a different line
3224         than print.src_line.
3225
3226         PR debug/40521
3227         * dwarf2out.c (dwarf2out_init): Test whether
3228         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
3229         it is defined.
3230
3231         PR rtl-optimization/41646
3232         * calls.c (expand_call): For BLKmode types returned in registers
3233         avoid likely spilled hard regs in copy_blkmode_from_reg generated
3234         insns.
3235
3236 2009-10-09  Richard Guenther  <rguenther@suse.de>
3237
3238         PR tree-optimization/41634
3239         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
3240         we remove the correct elements.
3241         (optimize_stmt): Make sure to update stmt operands before
3242         optimizing redundancies.
3243
3244 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3245
3246         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
3247
3248 2009-10-09  Richard Guenther  <rguenther@suse.de>
3249
3250         PR driver/41637
3251         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
3252         globals.
3253         (lto_wrapper_exit): New function.
3254         (fatal): Use it.
3255         (fatal_perror): Likewise.
3256         (fork_execute): Use global args_name, do not free it.
3257         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
3258         * lto-streamer.h: Remove duplicate prototypes.
3259
3260 2009-10-09  Richard Guenther  <rguenther@suse.de>
3261
3262         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
3263         before calling stmt_can_throw_external.
3264
3265 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
3266
3267         PR tree-optimization/40071
3268         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
3269         pointer if the original data reference doesn't conflict with the
3270         created vector data reference.  Fix long line.
3271
3272 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
3273
3274         * config/i386/i386.md (any_div): New code iterator.
3275         (u): Handle div and udiv.
3276         (sgnprefix): Ditto.
3277         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
3278         code iterator.
3279         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
3280         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
3281         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
3282         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
3283
3284 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
3285
3286         * gcc.c (main): Remove trailing "." from diagnostics.
3287
3288 2009-10-08  Cary Coutant  <ccoutant@google.com>
3289
3290         Add support for debugging with ICF (Identical Code Folding).
3291         * calls.c (debug.h): New #include.
3292         (emit_call_1): Call virtual_call_token debug hook.
3293         * common.opt (-fenable-icf-debug): New option.
3294         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
3295         locations in the source).
3296         (poc_label_num): New variable.
3297         (dcall_entry, vcall_entry): New typedefs.
3298         (dcall_table, vcall_table): New variables.
3299         (struct vcall_insn): New type.
3300         (vcall_insn_table): New variable.
3301         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
3302         (size_of_dcall_table): New function.
3303         (output_dcall_table): New function.
3304         (size_of_vcall_table): New function.
3305         (output_vcall_table): New function.
3306         (dwarf2out_direct_call): New function.
3307         (vcall_insn_table_hash): New function.
3308         (vcall_insn_table_eq): New function.
3309         (dwarf2out_virtual_call_token): New function.
3310         (dwarf2out_virtual_call): New function.
3311         (dwarf2out_init): Allocate new tables and sections.
3312         (prune_unused_types): Mark DIEs referenced from direct call table.
3313         (dwarf2out_finish): Output direct and virtual call tables.
3314         * final.c (final_scan_insn): Call direct_call and virtual_call
3315         debug hooks.
3316         * debug.h (struct gcc_debug_hooks): Add direct_call,
3317         virtual_call_token, virtual_call hooks.
3318         (debug_nothing_uid): New function.
3319         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
3320         (debug_nothing_uid): New function.
3321         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
3322         (xcoff_debug_hooks): Likewise.
3323         * sdbout.c (sdb_debug_hooks): Likewise.
3324         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3325         * doc/invoke.texi (-fenable-icf-debug): New option.
3326
3327 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
3328
3329         PR debug/41353
3330         * regmove.c (regmove_backward_pass): Replace src with dst in the
3331         debug insn, and check for dst before rather than after.
3332
3333 2009-10-08  Janis Johnson <janis187@us.ibm.com>
3334
3335         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
3336         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
3337
3338 2009-10-08  Jan Hubicka  <jh@suse.cz>
3339
3340         PR middle-end/41626
3341         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
3342         do not mark cgraph nodes as needed.
3343         (record_references_in_initializer): Add new only_vars parameter.
3344         * cgraph.h (record_references_in_initializer): New parameter.
3345         * varasm.c (assemble_variable): Update call.
3346         * varpool.c (varpool_analyze_pending_decls): Always look for
3347         referenced vars.
3348
3349 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
3350
3351         * config/avr/avr.c (last_insn_address) Remove variable.
3352         (expand_prologue): Don't initialise last_insn_address variable.
3353         (final_prescan_insn): Don't output insn size.
3354         * config/avr/avr.opt (msize): Remove switch.
3355         * doc/invoke.texi (AVR Options): Remove documentation of -msize
3356         switch.
3357
3358 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
3359
3360         * combine.c (label_tick_ebb_start): Fix comment.
3361         (combine_instructions): Set label_tick and label_tick_ebb_start before
3362         calling setup_incoming_promotions.  Start them from 1.  Increment
3363         label_tick instead of deriving it from the BB index.  Rather than
3364         comparing ticks use the block from the previous iteration to decide
3365         whether to start a new EBB.  Remove empty lines before function.
3366
3367 2009-10-08  Michael Matz  <matz@suse.de>
3368
3369         PR middle-end/41573
3370         * builtins.c (fold_builtin_isascii): Use fold_build2.
3371         (fold_builtin_isdigit): Ditto.
3372         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
3373         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
3374         remove_useless_stmts_cond, remove_useless_stmts_tf,
3375         remove_useless_stmts_tc, remove_useless_stmts_bind,
3376         remove_useless_stmts_goto, remove_useless_stmts_label,
3377         remove_useless_stmts_1, remove_useless_stmts,
3378         pass_remove_useless_stmts): Remove.
3379         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
3380         * passes.c (init_optimization_passes): Don't add
3381         pass_remove_useless_stmts.
3382         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
3383         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
3384         static constants.
3385         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
3386         for static constants.
3387         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
3388         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
3389
3390 2009-10-08  Richard Guenther  <rguenther@suse.de>
3391
3392         * gimple.c (free_gimple_type_tables): New function.
3393         * gimple.h (free_gimple_type_tables): Declare.
3394
3395 2009-10-07  Mark Heffernan  <meheff@google.com>
3396
3397         * ipa-prop.c (ipa_print_node_params) Only print
3398         names of named arguments.
3399
3400 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
3401
3402         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
3403         being statically linked.
3404
3405 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3406
3407         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
3408
3409 2009-10-08  Jan Hubicka  <jh@suse.cz>
3410
3411         PR bootstrap/41620
3412         * ipa.c (cgraph_externally_visible_p,
3413         function_and_variable_visibility,
3414         whole_program_function_and_variable_visibility): Skip non-finalized
3415         nodes.
3416
3417 2009-10-08  Nick Clifton  <nickc@redhat.com>
3418
3419         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
3420         CONST_DOUBLEs.
3421
3422 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
3423
3424         PR bootstrap/37739
3425         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
3426
3427 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
3428
3429         PR c/41182
3430         * c-common.c (c_fully_fold_internal): Strip nops from the result
3431         of recursive calls to c_fully_fold_internal.
3432         (c_wrap_maybe_const): New.
3433         (c_save_expr): Use c_wrap_maybe_const.
3434         * c-common.h (c_wrap_maybe_const): Declare.
3435         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
3436         build_binary_op): Use c_wrap_maybe_const.
3437
3438 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3439
3440         * real.c: Fix comment to reflect actual exponent size.
3441
3442 2009-10-08  Ben Elliston  <bje@au.ibm.com>
3443
3444         * config/rs6000/a2.md: Add FSF comment header.
3445
3446 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
3447
3448         * config/i386/i386.md (any_extend): New code iterator.
3449         (u, s): New code attributes.
3450         (sgnprefix): Ditto.
3451         (DWIH): Rewrite as code iterator for SI and DI modes.
3452         (DWI): Rewrite as mode attribute.
3453         (dwi): New mode attribute.
3454         (di): Depend on SI mode and DI mode.
3455         (doubleint_general_operand): Remove mode attribute.
3456
3457         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
3458         DWIH mode iterator.
3459
3460         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
3461         (*sub<mode>3_doubleword): Ditto.
3462
3463         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
3464         using SWIM248 mode iterator.
3465         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
3466         using SWI48 mode iterator.
3467         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
3468         patterns using DWIH mode iterator and any_extend code iterator.
3469         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
3470         using any_extend code iterator.
3471         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
3472         patterns using DWIH mode iterator and any_extend code iterator.
3473         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
3474         using any_extend code iterator.
3475         (<s>mul<mode>3_highpart): Macroize expander from
3476         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
3477         and any_extend code iterator.
3478         (*<s>muldi3_highpart_1): Macroize insn from
3479         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
3480         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
3481         patterns using any_extend code iterator.
3482         (*<s>mulsi3_highpart_zext): Macroize insn from
3483         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
3484
3485 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
3486
3487         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
3488         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
3489         refering to a DIE with DW_AT_const_value.
3490
3491 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
3492
3493         PR middle-end/22072
3494         * ira-lives.c (check_and_make_def_conflict): Process all operands.
3495
3496 2009-10-06  Jan Hubicka  <jh@suse.cz>
3497
3498         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
3499         correctly.
3500
3501 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3502
3503         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
3504         *lea_2_rex64): Move before *add<mode>_1 pattern.
3505
3506 2009-10-07  Jan Hubicka  <jh@suse.cz>
3507
3508         * collect2.c (main): Add -fno-whole-program.
3509         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
3510
3511 2009-10-07  Jan Hubicka  <jh@suse.cz>
3512
3513         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
3514         has no address taken.
3515         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
3516         never needed.
3517         (cgraph_clone_node): Clear externally_visible flag for clones.
3518         * cgraph.h (cgraph_only_called_directly_p,
3519         cgraph_can_remove_if_no_direct_calls_p): New predicates.
3520         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
3521         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
3522         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
3523         ipcp_insert_stage): Likwise.
3524         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
3525         externally_visible flag.
3526         (verify_cgraph_node): Verify that inline clones look right.
3527         (process_function_and_variable_attributes): Do not set
3528         externally_visible flags.
3529         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
3530         been already run.
3531         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
3532         boundaries.
3533         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
3534         clear externally_visible when turning into inline clones
3535         (cgraph_mark_inline_edge): Use new predicates.
3536         (cgraph_estimate_growth): Likewise.
3537         (cgraph_decide_inlining): Likewise.
3538         * ipa.c (cgraph_postorder): Likewise.
3539         (cgraph_remove_unreachable_nodes): Likewise; sanity check
3540         that inline clones are not needed.
3541         (cgraph_externally_visible_p): New predicate.
3542         (function_and_variable_visibility): Add whole_program parameter;
3543         always set externally_visible flag; handle COMDAT function
3544         privatization.
3545         (local_function_and_variable_visibility): New function.
3546         (gate_whole_program_function_and_variable_visibility): New function.
3547         (whole_program_function_and_variable_visibility): New function.
3548         (pass_ipa_whole_program_visibility): New function.
3549         * passes.c  (init_optimization_passes): Add whole program visibility
3550         pass.
3551         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
3552         not care about needed/reachable flags.
3553         * varpool.c: Include flags.h
3554         (decide_is_variable_needed): When doing LTO assume whole-program mode.
3555         (varpool_finalize_decl): When we are in LTO read-back, all variables
3556         are analyzed.
3557         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
3558
3559 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3560
3561         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
3562         add MASK_HARD_DFP.
3563
3564 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
3565
3566         * config.gcc: Don't include the makefile fragments intended for
3567         libgcc.
3568         * config/s390/fixdfdi.h: File removed.
3569         * config/s390/libgcc-glibc.ver: File removed.
3570         * config/s390/s390.h: Remove the fixdfdi.h hack.
3571         * config/s390/t-crtstuff: File moved to libgcc dir.
3572         * config/s390/t-linux: Likewise.
3573         * config/s390/t-tpf: libgcc specific parts removed.
3574         * config/s390/t-linux64: Likewise.
3575
3576 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
3577
3578         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
3579         (lto-compress.o): Likewise.
3580
3581 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
3582
3583         PR target/41512
3584         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
3585         dllexport to class members here.
3586         (i386_pe_determine_dllimport_p): Only check static class data for
3587         definition.
3588         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
3589         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
3590         functions for vague linkage.
3591         (i386_pe_type_dllexport_p): Fix formatting.
3592         (maybe_add_dllexport) New function.
3593         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
3594         to class members.
3595
3596 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3597
3598         * config/rs6000/a2.md: Remove duplicated lines.
3599
3600 2009-10-07  Ben Elliston  <bje@au.ibm.com>
3601
3602         * config.gcc (powerpc*-*-*): Handle a2.
3603         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
3604         * config/rs6000/a2.md: New file.
3605         * config/rs6000/rs6000.opt (mno-update): New.
3606         (mupdate): Return to using a mask, not a var.
3607         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
3608         (enum processor_type): Add PROCESSOR_PPCA2.
3609         * config/rs6000/rs6000.c (ppca2_cost): New costs.
3610         (rs6000_override_options): Add "a2" to processor_target_table.
3611         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
3612         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
3613
3614 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3615
3616         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
3617         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
3618         reference to nonexistent gen_truncxfxf2 function.
3619
3620 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
3621
3622         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
3623         (DWIH, g, di, doubleint_general_operand): New mode attributes.
3624         (general_operand): Handle TI mode.
3625         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
3626         using SDWIM mode iterator.
3627         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
3628         pattern from *add{di,ti}3_1 patterns and corresponding splitters
3629         using DWI mode iterator.
3630         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
3631         patterns using SWI mode iterator.
3632         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
3633         using SWI48 mode iterator.
3634         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
3635         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
3636         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
3637         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
3638         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
3639         using SDWIM mode iterator.
3640         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
3641         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
3642         using DWI mode iterator.
3643         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
3644         patterns using SWI mode iterator.
3645         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
3646         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
3647         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
3648         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
3649         patterns using plusminus code iterator.
3650         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
3651         sub<mode>3 patterns using plusminus code iterator.
3652         * config/i386/i386.c (override_options): Update the call to
3653         gen_subdi_carry_rex64 for renamed function.
3654         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
3655         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
3656         calls to instruction expanders.
3657
3658 2009-10-06  Martin Jambor  <mjambor@suse.cz>
3659
3660         PR bootstrap/41395
3661         * opts.c (decode_options): Run IPA-SRA at -O2.
3662
3663 2009-10-06  Richard Guenther  <rguenther@suse.de>
3664
3665         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
3666
3667 2009-10-06  Tobias Burnus  <burnus@net-b.de>
3668
3669         PR lto/41591
3670         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
3671         -flto and -fwhole-program flags can be combined.
3672
3673 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
3674
3675         PR driver/41217
3676         * gcc.c (process_command): Check that -o argument was specified.
3677
3678 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
3679
3680         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
3681
3682 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3683
3684         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
3685         * doc/invoke.texi (Warning Options): Annotate allowed languages
3686         for -Wunsuffixed-float-constants.
3687
3688 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
3689
3690         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
3691         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
3692         same name and isn't the main variant.
3693
3694         PR debug/41558
3695         * dwarf2out.c (loc_by_reference): Removed.
3696         (dw_loc_list_1): New function.
3697         (dw_loc_list): Remove toplev argument, add want_address argument.
3698         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
3699         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
3700         want_address == 2 to dw_loc_list.  For successful dw_loc_list
3701         set have_address to 1 only if want_address is not 0.
3702
3703 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
3704
3705         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
3706         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
3707         a code block followed by two pointers.
3708         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
3709         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
3710         (MIPS_MOVE): Likewise.
3711         (MIPS_LUI): Likewise.
3712         (MIPS_JR): Likewise.
3713         (MIPS_BAL): Likewise.
3714         (MIPS_NOP): Likewise.
3715         (mips_asm_trampoline_template): Delete.
3716         (mips_trampoline_code_size): New function.
3717         (mips_trampoline_init): Add shorter sequences for all cases
3718         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
3719         Calculate the opcodes directly, rather than copying from a template.
3720         Only flush the code part of the trampoline.
3721         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
3722
3723 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
3724
3725         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
3726         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
3727         (INCOMING_RETURN_ADDR_RTX): Likewise.
3728         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
3729         with AT_REGNUM.
3730         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
3731         with RETURN_ADDR_REGNUM.
3732         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
3733         * config/mips/mips.c (mips16_build_call_stub): Replace
3734         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
3735         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
3736         (mips_print_operand_punctuation): Likewise.
3737         (mips_frame_set): Likewise.
3738         (mips16e_output_save_restore): Likewise.
3739         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
3740         (mips_save_reg_p): Likewise.
3741         (mips_return_addr): Likewise.
3742         (mips_set_return_address): Likewise.
3743         (mips_direct_save_slot_move_p): Likewise.
3744         (mips_output_function_prologue): Likewise.
3745         (mips_restore_reg): Likewise.
3746         (mips_expand_epilogue): Likewise.
3747         (mips_epilogue_uses): Likewise.
3748         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
3749         (*mov<mode>_ra): Use it instead of a hard-coded 31.
3750         (clear_hazard_<mode>): Likewise.
3751         (call_internal): Likewise.
3752         (call_internal_direct): Likewise.
3753         (call_direct_split): Likewise.
3754         (call_value_internal): Likewise.
3755         (call_value_split): Likewise.
3756         (call_value_internal_direct): Likewise.
3757         (call_value_direct_split): Likewise.
3758         (call_value_multiple_internal): Likewise.
3759         (call_value_multiple_split): Likewise.
3760
3761 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
3762             Jakub Jelinek  <jakub@redhat.com>
3763
3764         PR rtl-optimization/41511
3765         * combine.c (record_value_for_reg): Pass explicit values as argument
3766         to get_last_value_validate.
3767         (get_last_value_validate): Document INSN parameter.
3768         For non-readonly MEMs, assume they might have been modified if INSN
3769         was in another basic block.
3770         (get_last_value): Minor reformatting.
3771
3772 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3773
3774         PR tree-opt/40992
3775         * final.c (asm_str_count): Split out from asm_insn_count.
3776         * rtl.h (asm_str_count): New prototype.
3777         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
3778         asm_str_count.
3779
3780 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
3781
3782         * doc/plugins.texi: Change plugin_pass to register_pass_info.
3783
3784 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
3785             Rafael Espindola  <espindola@google.com>
3786
3787         * gengtype.c (write_types): Moved call to write_func_for_structure
3788         into seperate loops.
3789
3790 2009-10-05  Richard Guenther  <rguenther@suse.de>
3791
3792         PR lto/41281
3793         * lto-cgraph.c (output_cgraph): Output toplevel asms.
3794         (input_cgraph_1): Input toplevel asms.
3795
3796 2009-10-05  Richard Guenther  <rguenther@suse.de>
3797
3798         PR lto/40902
3799         * lto-symtab.c (lto_compatible_attributes_p): Remove.
3800         (external_aggregate_decl_p): Likewise.
3801         (lto_symtab_compatible): Re-structure.  Remove dead code.
3802         For variables ignore toplevel qualifiers when comparing types.
3803         Issue warnings, not errors for mismatched user-alignment.
3804
3805 2009-10-05  Richard Guenther  <rguenther@suse.de>
3806
3807         PR lto/41552
3808         PR lto/41487
3809         * lto-symtab.c (struct lto_symtab_base_def): Remove.
3810         (struct lto_symtab_identifier_def): Likewise.
3811         (struct lto_symtab_decl_def): Likewise.
3812         (struct lto_symtab_entry_def): New.
3813         (lto_symtab_identifier_t): Rename to ...
3814         (lto_symtab_entry_t): ... this.
3815         (lto_symtab_decls): Remove.
3816         (lto_symtab_base_hash): Rename to ...
3817         (lto_symtab_entry_hash): ... this.
3818         (lto_symtab_base_eq): Rename to ...
3819         (lto_symtab_entry_eq): ... this.
3820         (lto_symtab_base_marked_p): Rename to ...
3821         (lto_symtab_entry_marked_p): ... this.
3822         (lto_symtab_identifier_marked_p): Remove.
3823         (lto_symtab_decl_marked_p): Likewise.
3824         (lto_symtab_maybe_init_hash_tables): Rename to ...
3825         (lto_symtab_maybe_init_hash_table): ... this.
3826         (lto_symtab_set_resolution_and_file_data): Remove.
3827         (lto_symtab_register_decl): New function.
3828         (lto_symtab_get_identifier): Remove.
3829         (lto_symtab_get): New function.
3830         (lto_symtab_get_resolution): Adjust.
3831         (lto_symtab_get_identifier_decl): Remove.
3832         (lto_symtab_set_identifier_decl): Likewise.
3833         (lto_symtab_merge_decl): Rename to ...
3834         (lto_symtab_merge): ... this.  Rewrite.
3835         (lto_symtab_merge_var): Remove.
3836         (lto_symtab_merge_fn): Likewise.
3837         (lto_symtab_prevailing_decl): Adjust.
3838         (lto_cgraph_replace_node): New function.
3839         (lto_symtab_merge_decls_2): Likewise.
3840         (lto_symtab_merge_decls_1): Likewise.
3841         (lto_symtab_fixup_var_decls): Likewise.
3842         (lto_symtab_resolve_symbols): Likewise.
3843         (lto_symtab_merge_decls): Likewise.
3844         (lto_symtab_prevailing_decl): Adjust.
3845         (lto_symtab_get_symtab_def): Remove.
3846         (lto_symtab_get_file_data): Likewise.
3847         (lto_symtab_clear_resolution): Adjust.
3848         (lto_symtab_clear_resolution): Likewise.
3849         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
3850         (input_cgraph_1): Likewise.
3851         * lto-streamer-in.c (get_resolution): Do not provide fake
3852         symbol resolutions here.
3853         (deferred_global_decls): Remove.
3854         (lto_register_deferred_decls_in_symtab): Likewise.
3855         (lto_register_var_decl_in_symtab): Change signature, register
3856         variable via lto_symtab_register_decl.
3857         (lto_register_function_decl_in_symtab): Likewise.
3858         (lto_read_tree): Adjust.
3859         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
3860         (lto_symtab_merge_var): Likewise.
3861         (lto_symtab_merge_fn): Likewise.
3862         (lto_symtab_register_decl): Declare.
3863         (lto_symtab_merge_decls): Likewise.
3864
3865 2009-10-05  Richard Guenther  <rguenther@suse.de>
3866
3867         PR tree-optimization/23821
3868         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
3869         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
3870         simple IV increments.
3871
3872 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3873
3874         * config/arm/arm.c (arm_override_options): Really initialize
3875         flag_dwarf2_cfi_asm to 0.
3876
3877 2009-10-05  Doug Kwan  <dougkwan@google.com>
3878
3879         PR rtl-optimization/41574
3880         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
3881         floating point and we are not doing unsafe math optimizations.
3882
3883 2009-10-03  Simon Baldwin  <simonb@google.com>
3884             Cary Coutant  <ccoutant@google.com>
3885             Rafael Espindola  <espindola@google.com>
3886             Richard Guenther  <rguenther@suse.de>
3887             Jan Hubicka  <jh@suse.cz>
3888             Doug Kwan <dougkwan@google.com>
3889             H.J. Lu  <hongjiu.lu@intel.com>
3890             Bill Maddox  <maddox@google.com>
3891             Ryan Mansfield  <rmansfield@qnx.com>
3892             Diego Novillo  <dnovillo@google.com>
3893             Ollie Wild  <aaw@google.com>
3894             Kenneth Zadeck <zadeck@naturalbridge.com>
3895
3896         * lto-cgraph.c: New file.
3897         * lto-compress.c: New file.
3898         * lto-compress.h: New file.
3899         * lto-opts.c: New file.
3900         * lto-section-in.c: New file.
3901         * lto-section-out.c: New file.
3902         * lto-streamer-in.c: New file.
3903         * lto-streamer-out.c: New file.
3904         * lto-streamer.c: New file.
3905         * lto-streamer.h: New file.
3906         * lto-symtab.c: New file.
3907         * lto-wpa-fixup.c: New file.
3908         * lto-wrapper.c: New file.
3909
3910 2009-10-03  Simon Baldwin  <baldwin@google.com>
3911             Ben Elliston  <bje@au.ibm.com>
3912             Rafael Espindola  <espindola@google.com>
3913             Nathan Froyd  <froydnj@codesourcery.com>
3914             Jan Hubicka  <jh@suse.cz>
3915             Doug Kwan  <dougkwan@google.com>
3916             Diego Novillo  <dnovillo@google.com>
3917             Kenneth Zadeck  <zadeck@naturalbridge.com>
3918
3919         * Makefile.in (enable_lto): New.
3920         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
3921         (LINKER_PLUGIN_API_H): Define.
3922         (LTO_SYMTAB_H): Define.
3923         (LTO_STREAMER_H): Define.
3924         (TREE_VECTORIZER_H): Define.
3925         (INCLUDES): Add LIBELFINC.
3926         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
3927         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
3928         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
3929         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
3930         (native): Add lto-wrapper$(exeext)
3931         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
3932         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
3933         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
3934         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
3935         (varasm.o): Add dependency on tree-iterator.h.
3936         (cgraph.o): Add dependency on cif-code.def.
3937         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
3938         (ipa-pure-const.o): Likewise.
3939         (GTFILES): Add lto-symtab.c.
3940         (install-lto-wrapper): New.
3941         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
3942         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
3943         * config.in: Regenerate.
3944
3945 2009-10-03  Rafael Espindola  <espindola@google.com>
3946             Diego Novillo  <dnovillo@google.com>
3947
3948         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
3949         ipa_write_summaries.
3950         Call execute_ipa_summary_passes for all_regular_ipa_passes and
3951         all_lto_gen_passes.
3952         (cgraph_optimize): Make extern.
3953
3954 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
3955             Kenneth Zadeck <zadeck@naturalbridge.com>
3956
3957         * toplev.c (in_lto_p): Declare.
3958         * collect2.c (scan_prog_file): Read all the output when reading
3959         information for LTO.
3960         (enum lto_mode_d): Declare.
3961
3962 2009-10-03  Richard Guenther  <rguenther@suse.de>
3963             Diego Novillo  <dnovillo@google.com>
3964
3965         * gimple.c: Include target.h and alias.h.
3966         (gimple_types): Declare.
3967         (type_hash_cache): Declare.
3968         (gimple_alloc_stat): Make extern.
3969         (gimple_build_eh_must_not_throw): Call
3970         gimple_eh_must_not_throw_set_fndecl.
3971         (struct type_pair_d): Declare.
3972         (type_pair_t): Declare.
3973         (type_pair_hash): New.
3974         (type_pair_eq): New.
3975         (lookup_type_pair): New.
3976         (gimple_force_type_merge): New.
3977         (compare_type_names_p): New.
3978         (compare_field_offset): New.
3979         (gimple_types_compatible_p): New.
3980         (struct sccs): Declare.
3981         (next_dfs_num): Declare.
3982         (iterative_hash_gimple_type): New.
3983         (visit): New.
3984         (iterative_hash_type_name): New.
3985         (iterative_hash_gimple_type): New.
3986         (gimple_type_hash): New.
3987         (gimple_type_eq): New.
3988         (gimple_register_type): New.
3989         (print_gimple_types_stats): New.
3990         (gimple_signed_or_unsigned_type): New.
3991         (gimple_unsigned_type): New.
3992         (gimple_signed_type): New.
3993         (gimple_get_alias_set): New.
3994         (gimple_decl_printable_name): Do not use DMGL_TYPES.
3995         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
3996         (gimple_force_type_merge): Declare.
3997         (gimple_types_compatible_p): Declare.
3998         (gimple_register_type): Declare.
3999         (print_gimple_types_stats): Declare.
4000         (gimple_unsigned_type): Declare.
4001         (gimple_signed_type): Declare.
4002         (gimple_get_alias_set): Declare.
4003         (gimple_eh_must_not_throw_set_fndecl): New.
4004
4005 2009-10-03  Jan Hubicka  <jh@suse.cz>
4006             Kenneth Zadeck <zadeck@naturalbridge.com>
4007
4008         * ipa-pure-const.c: Include lto-streamer.h.
4009         (register_hooks): Factor out of ...