OSDN Git Service

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