OSDN Git Service

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