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