OSDN Git Service

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