OSDN Git Service

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