1 2007-07-04 Richard Guenther <rguenther@suse.de>
3 PR tree-optimization/32482
4 * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
5 original ssa name if we didn't find a shift expression.
6 Fix shift constant for bit zero test.
8 2007-07-04 Richard Sandiford <richard@codesourcery.com>
10 * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
12 2007-07-04 Richard Sandiford <richard@codesourcery.com>
14 * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
15 * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
16 * config/arm/vxworks.h (ASM_SPEC): Delete.
17 (SUBTARGET_EXTRA_ASM_SPEC): Define.
19 2007-07-04 Sebastian Pop <sebpop@gmail.com>
21 * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
22 (DDR_REVERSED_P): New.
23 * tree-data-ref.c (initialize_data_dependence_relation,
24 build_classic_dist_vector): Set DDR_REVERSED_P.
26 2007-07-04 Sebastian Pop <sebpop@gmail.com>
29 * tree-data-ref.c (analyze_siv_subscript_cst_affine,
30 compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
31 init_omega_for_ddr_1): Use non conservative number of iterations
33 (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
34 (analyze_siv_subscript): Remove FIXME and reinitialization of
35 last_conflicts to chrec_dont_know.
36 * testsuite/gfortran.dg/vect/pr32457.f90: New.
38 2007-07-04 Douglas Gregor <doug.gregor@gmail.com>
40 * tree.c (maybe_canonicalize_argtypes): Improve description.
42 2007-07-04 Douglas Gregor <doug.gregor@gmail.com>
44 * tree.c (maybe_canonicalize_argtypes): New.
45 (build_function_type): Set canonical type.
46 (build_method_type_directly): Ditto.
47 (reconstruct_complex_type): Rebuild the METHOD_TYPE node
50 2007-07-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
52 * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
54 (rewrite_use_nonlinear_expr): Likewise.
56 2007-07-03 Seongbae Park <seongbae.park@gmail.com>
58 * rtl.def (UNSPEC, USE, CLOBBER): More comments.
60 2007-07-04 Ben Elliston <bje@au.ibm.com>
62 * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
65 * c-objc-common.c (c_types_compatible_p): Fix indentation.
67 * doc/tm.texi (Run-time Target): Capitalise "CPU".
68 (Exception Handling): Likewise.
70 2007-07-03 Jan Hubicka <jh@suse.cz>
72 * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
74 2007-07-03 Eric Christopher <echristo@apple.com>
76 * doc/cppopts.texi: Add conflicting option note to -dM.
77 * doc/invoke.texi: Add note about possible conflicts with
78 -E for -dCHARS and note that -dM will not produce
79 any results if there is no machine dependent reorg.
81 2007-07-03 Geoffrey Keating <geoffk@apple.com>
83 * tree.h (DECL_ALIGN): Back out previous change.
85 2007-07-03 Joseph Myers <joseph@codesourcery.com>
87 * configure.ac: Test for .dtprelword support on MIPS.
88 * configure, config.in: Regenerate.
89 * config/mips/mips.c (mips_output_dwarf_dtprel): New.
90 (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
92 2007-07-03 Julian Brown <julian@codesourcery.com>
94 * config.gcc (with_fpu): Allow --with-fpu=vfp3.
95 * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
96 * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
97 * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
99 (all_fpus): Add FPUTYPE_VFP3.
100 (fp_model_for_fpu): Add VFPv3 field.
101 (arm_rtx_costs_1): Give cost to VFPv3 constants.
102 (vfp3_const_double_index): New function. Return integer index of
103 VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
105 (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
106 and argument represents a valid RTX for a VFPv3 constant.
107 (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
109 (vfp_emit_fstmd): Similar, for fstmd.
110 (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
111 constants, represented as integer indices.
112 (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
113 VFP_REGNO_OK_FOR_DOUBLE macros.
114 (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
115 (arm_file_start): Set float-abi attribute for VFPv3, and output
116 correct ".fpu" assembler directive.
117 (arm_dbx_register_numbering): Add FIXME.
118 * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
119 (fputype): Add FPUTYPE_VFP3.
120 (FIXED_REGISTERS): Add 32 registers for D16-D31.
121 (CALL_USED_REGISTERS): Likewise.
122 (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
123 of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
124 (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
125 (D7_VFP_REGNUM): New.
126 (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
127 (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
128 (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
129 (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
130 (REG_ALLOC_ORDER): Adjust for VFPv3.
131 (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
132 (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
133 VFP_LO_REGS, VFP_HI_REGS.
134 (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
135 (IS_VFP_CLASS): Define macro.
136 (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
138 (REGISTER_MOVE_COST): Likewise.
139 * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
140 * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
141 (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
142 (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
143 (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
144 (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
145 (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
146 (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
147 (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
148 (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
149 (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
150 where appropriate for single-word registers.
151 (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
152 As above. Fix type attributes.
153 * config/arm/constraints.md (register_contraint "t"): Define.
154 (register_constraint "w"): Change to D0-D15, or D0-D31 for
156 (register_constraint "x"): Define.
157 (constraint "Dv"): Define.
159 2007-07-03 Geoffrey Keating <geoffk@apple.com>
161 * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
163 2007-07-03 Tom Tromey <tromey@redhat.com>
165 * c-parser.c (objc_pq_context): Removed.
166 (objc_need_raw_identifier): Likewise.
167 (c_parser) <objc_pq_context>: New field.
168 <objc_need_raw_identifier>: Likewise.
169 (OBJC_NEED_RAW_IDENTIFIER): Removed.
170 (c_lex_one_token): Update.
171 (c_parser_objc_protocol_definition): Update.
172 (c_parser_objc_method_definition): Update.
173 (c_parser_objc_methodproto): Update.
174 (c_parser_declspecs): Update.
176 2007-07-03 David Ung <davidu@mips.com>
178 * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
180 2007-07-03 David Ung <davidu@mips.com>
181 Richard Sandiford <richard@codesourcery.com>
183 * doc/invoke.texi: Document -march=74kf3_2.
184 * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
185 (TUNE_74K): Check for it.
186 * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
187 (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
188 * config/mips/mips.md (cpu): Add 74kf3_2.
189 * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
190 (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
191 (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
192 (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
193 74kf3_2 to the CPU list.
194 (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
195 (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
196 (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
197 (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
198 (r74kf3_2_fxfer_from_c1): New insn reservations.
200 2007-07-03 Richard Sandiford <richard@codesourcery.com>
201 David Ung <davidu@mips.com>
203 * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
204 -march=24kx with -march=24kf1_1. Likewise 24ke[fx], 34k[fx]
205 and 74k[fx]. Document aliases for the new options.
206 * config/mips/mips.h (PROCESSOR_24KF): Rename to...
207 (PROCESSOR_24KF2_1): ...this.
208 (PROCESSOR_24KX): Rename to...
209 (PROCESSOR_24KF1_1): ...this.
210 (PROCESSOR_74KF): Rename to...
211 (PROCESSOR_74KF2_1): ...this.
212 (PROCESSOR_74KX): Rename to...
213 (PROCESSOR_74KF1_1): ...this.
214 (TUNE_74K): Update PROCESSOR_* names.
215 * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
216 for 24kf. Add 24kf1_1 and 24kfx as synonyms for 24kx. Likewise
217 the 24ke*, 34k* and 74k* processors. Update PROCESSOR_* names.
218 (mips_rtx_cost_data): Update processor names in comments.
219 (mips_issue_rate): Update PROCESSOR_* names.
220 * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
221 24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
222 * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
223 to r24kf2_1_*. Rename r24kx_* insn reservations to r24kf1_1_*.
224 Update cpu attribute names.
225 (r24k_fpu_iss): Rename this reservation to...
226 (r24kf2_1_fpu_iss): ...this and update all uses.
227 (r24kx_fpu_iss): Rename this reservation to...
228 (r24kf1_1_fpu_iss): ...this and update all uses.
229 * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
230 to r74kf2_1_*. Rename r74kx_* insn reservations to r74kf1_1_*.
231 Update cpu attribute names.
233 2007-07-01 Kaz Kojima <kkojima@gcc.gnu.org>
235 * config/m32r/constraints.md: New file.
236 * config/m32r/m32r.c: Include tm-constrs.h.
237 (small_data_operand): Use satisfies_constraint_* instead of macro.
238 (addr24_operand, gen_compare): Likewise.
239 * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
240 (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
241 CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
242 EXTRA_CONSTRAINT): Likewise.
243 * config/m32r/m32r.md: Include constraints.md.
244 (*movsi_insn): Use satisfies_constraint_* instead of macro.
245 (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
246 * config/m32r/predicates.md (conditional_move_operand): Likewise.
247 (two_insn_const_operand, int8_operand, uint16_operand,
248 reg_or_int16_operand, reg_or_uint16_operand,
249 reg_or_cmp_int16_operand, cmp_int16_operand,
250 seth_add3_operand): Likewise.
252 2007-07-03 Eric Christopher <echristo@gmail.com>
254 * libgcc2.h: Conditionally declare __bswapsi2 and
257 2007-07-03 H.J. Lu <hongjiu.lu@intel.com>
259 * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
262 2007-07-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
265 * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
266 (__gthrw_pragma): Provide default definition.
268 * gthr-posix.c (__gthrw_pragma): Define.
270 2007-07-03 Daniel Berlin <dberlin@dberlin.org>
272 * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
273 before declaring inequality.
275 2007-07-03 Rask Ingemann Lambertsen <rask@sygehus.dk>
277 * combine.c (recog_for_combine): Log the success or failure of
278 matching new insn patterns against the machine description in
281 2007-07-03 Revital Eres <eres@il.ibm.com>
283 * ddg.c (print_sccs): New function.
284 (check_sccs): New function.
285 (create_ddg_all_sccs): Use it.
286 * ddg.h (print_sccs): Declare.
287 * modulo-sched.c (sms_order_nodes): Call print_sccs.
289 2007-07-03 Uros Bizjak <ubizjak@gmail.com>
291 * targhooks.h (default_mode_for_suffix): New function declaration.
292 * targhooks.c (default_mode_for_suffix): New default target hook.
293 * target.h (struct c): New structure in the targetm struct.
294 (mode_for_suffix): New target hook as part of struct c.
295 target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
296 default_mode_for_suffix.
297 (TARGET_C): New define.
298 * c-lex.c: Include "target.h".
299 (interpret_float): Use targetm.c.mode_for_suffix to determine
300 the mode for a given non-standard suffix.
301 Makefile.in (c-lex.o): Depend on $(TARGET_H).
303 * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
304 (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
306 * doc/extend.texi (Floating Types): New node. Document __float80 and
307 __float128 types. Document 'w', 'W', 'q' and 'Q' suffixes.
309 2007-07-03 Kaz Kojima <kkojima@gcc.gnu.org>
312 * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
313 predicate instead of target_operand.
314 (divsi3_i1_media, divsi3_media_2): Likewise.
316 2007-07-02 Eric Botcazou <ebotcazou@adacore.com>
318 * tree.h (alias_sets_might_conflict_p): Rename into
319 alias_sets_must_conflict_p.
320 * alias.c (alias_sets_might_conflict_p): Likewise.
321 (alias_sets_conflict_p): Use it.
322 (objects_must_conflict_p): Likewise.
323 * c-common.c (strict_aliasing_warning): Adjust.
325 2007-07-02 Andrew Pinski <andrew_pinski@playstation.sony.com>
327 * rtlhooks.c (gen_lowpart_if_possible): Check for
328 invalid subreg before calling gen_lowpart_SUBREG.
330 2007-07-02 Geoffrey Keating <geoffk@apple.com>
332 * config/darwin9.h: Add copyright notice.
333 (LINK_COMMAND_SPEC): Add comment.
334 (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
335 * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
336 DARWIN_LIBSYSTEM_HAS_UNWIND.
338 2007-07-02 Jakub Jelinek <jakub@redhat.com>
341 * omp-low.c (check_combined_parallel): New function.
342 (lower_omp_parallel): Call it via walk_stmts, set
343 OMP_PARALLEL_COMBINED if appropriate.
344 (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
345 isn't the only statement in WS_ENTRY_BB or OMP_RETURN
346 the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
347 don't consider it as combined parallel.
349 2007-07-02 Richard Sandiford <richard@codesourcery.com>
351 * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
352 (gcc_tooldir): Likewise.
353 * configure: Regenerate.
354 * Makefile.in (libsubdir_to_prefix): New variable, based on the
355 old configure.ac gcc_tooldir setting.
356 (prefix_to_exec_prefix): New variable.
357 (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
358 rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
360 2007-07-02 Daniel Berlin <dberlin@dberlin.org>
362 Fix PR tree-optimization/32583
363 Fix PR tree-optimization/32584
364 * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
365 (phi_translate_set): Use phi_translate directly now.
366 (make_values_for_stmt): Don't value number RHS if we already know
369 2007-07-02 Steve Ellcey <sje@cup.hp.com>
370 Jim Wilson <wilson@specifix.com>
373 * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
376 2007-07-02 Sandra Loosemore <sandra@codesourcery.com>
377 Richard Sandiford <richard@codesourcery.com>
378 Nigel Stephens <nigel@mips.com>
380 * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
381 (mips16e_output_save_restore): Declare.
382 (mips16e_save_restore_pattern_p): Likewise.
383 * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
384 * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
385 for GENERATE_MIPS16E_SAVE_RESTORE. Return 0x400 for TARGET_MIPS16
386 && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
387 (BITSET_P): New global macro, extracted from...
388 (mips_for_each_saved_reg): ...here.
389 (mips16e_save_restore_info): New struct.
390 (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
391 (mips16e_save_restore_regs): New variable.
392 (mips_split_plus, mips16e_find_first_register): New functions.
393 (mips16e_mask_registers): New function.
394 (compute_frame_size): Expand the commentary before the function.
395 Enforce the MIPS16e save and restore register range restrictions.
396 Pad the general register save area at the low end.
397 (mips16e_save_restore_reg, mips16e_build_save_restore)
398 (mips16e_save_restore_pattern_p, mips16e_add_register_range)
399 (mips16e_output_save_restore, mips16e_collect_propagate_value)
400 (mips16e_collect_argument_save, mips16e_collect_argument_saves):
402 (mips_expand_prologue, mips_expand_epilogue): Handle
403 GENERATE_MIPS16E_SAVE_RESTORE.
404 * config/mips/mips.md (*mips16e_save_restore): New pattern.
406 2007-07-02 Uros Bizjak <ubizjak@gmail.com>
408 PR tree-optimization/31966
409 PR tree-optimization/32533
410 * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
411 "basic_block" description as its third argument. Update function
412 calls to get destination bb from "edge" argument. Save "cond" into
413 aux field of the edge. Update prototype for changed arguments.
414 (if_convertible_loop_p): Clear aux field of incoming edges if bb
416 (find_phi_replacement_condition): Operate on incoming edges, not
417 on predecessor blocks. If there is a condition saved in the
418 incoming edge aux field, AND it with incoming bb predicate.
419 Return source bb of the first edge.
420 (clean_predicate_lists): Clean aux field of outgoing node edges.
421 (tree_if_conversion): Do not initialize cond variable. Move
422 variable declaration into the loop.
423 (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
424 initializations of new_stmt, arg0 and arg1 variables.
426 2007-07-02 Jakub Jelinek <jakub@redhat.com>
428 * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
429 SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
431 2007-07-02 Richard Guenther <rguenther@suse.de>
433 * tree-ssa.c (useless_type_conversion_p): Document
434 future intent as defining the middle-end type system.
435 Re-structure to call langhook last, group by type class,
436 mark questionable parts.
438 2007-07-02 Richard Guenther <rguenther@suse.de>
440 * tree-flow.h (types_compatible_p): Declare.
441 * tree-ssa.c (types_compatible_p): New function.
442 * ipa-type-escape.c (discover_unique_type): Use
443 types_compatible_p instead of lang_hooks.types_compatible_p.
444 * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
445 * tree-vn.c (expressions_equal_p): Likewise.
446 * tree.c (fields_compatible_p): Likewise.
447 * tree-ssa-dom.c (avail_expr_eq): Likewise.
448 (cprop_operand): Use useless_type_conversion_p instead of
449 lang_hooks.types_compatible_p.
450 * tree-inline.c (setup_one_parameter): Likewise.
451 (declare_return_variable): Likewise.
452 * tree-nrv.c (tree_nrv): Likewise.
453 * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
454 (maybe_fold_offset_to_component_ref): Likewise.
455 (maybe_fold_offset_to_reference): Likewise.
456 * tree-ssa-copy.c (may_propagate_copy): Likewise.
457 (merge_alias_info): Likewise.
458 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
459 * tree-ssa-phiopt.c (conditional_replacement): Likewise.
460 * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
461 * tree-tailcall.c (find_tail_calls): Likewise.
462 * tree-vect-generic.c (expand_vector_operations_1): Likewise.
463 * gimplify.c (canonicalize_addr_expr): Likewise.
464 (fold_indirect_ref_rhs): Likewise.
465 (gimplify_addr_expr): Likewise. Swap parameters to cpt_same_type.
466 (cpt_same_type): Likewise.
467 (check_pointer_types_r): Swap parameters to cpt_same_type
469 * fold-const.c (fold_convert): Revert fix for PR15988.
470 * tree-inline.c (setup_one_parameter): Instead fix it here by
471 using fold_build1 instead of fold_convert and checking for
472 error_mark_node. Convert only if the conversion is necessary.
474 2007-07-02 Joseph Myers <joseph@codesourcery.com>
476 * configure.ac: Check for .gnu_attribute on Power.
477 * configure: Regenerate.
478 * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
479 attribute for floating-point ABI.
481 2007-07-02 Ira Rosen <irar@il.ibm.com>
483 PR tree-optimization/32230
484 PR tree-optimization/32477
485 * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base
486 address is a constant.
488 2007-07-02 Richard Sandiford <richard@codesourcery.com>
490 * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
491 (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
492 (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
493 stanzas. Use the first part of the triplet to set MIPS_ISA_DEFAULT.
494 Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
495 64-bit targets. Add support for *-elfoabi*.
496 * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
497 different settings if $(tm_defines) does not select the EABI.
498 (MULTILIB_EXCLUSIONS): Define in those circumstances.
499 * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
500 (MIPS_ARCH_OPTION_SPEC): Likewise.
501 (MIPS_ISA_LEVEL_SPEC): Likewise.
502 (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
503 * config/mips/elfoabi.h: New file.
505 2007-07-02 Richard Guenther <rguenther@suse.de>
507 * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
508 (useless_type_conversion_p): ... this.
509 * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
510 (useless_type_conversion_p): ... this.
511 * builtins.c (fold_builtin_memory_op): Rename
512 tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
513 * tree-cfg.c (verify_expr): Likewise.
514 * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
515 * tree-ssa-ccp.c (ccp_fold): Likewise.
516 * tree-ssa-copy.c (may_propagate_copy): Likewise.
517 * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
518 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
519 * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
520 * tree-ssa-pre.c (eliminate): Likewise.
521 * tree-ssa.c (delete_tree_ssa): Likewise.
522 (tree_ssa_useless_type_conversion): Likewise.
523 * tree.c (build2_stat): Likewise.
525 2007-07-01 Daniel Berlin <dberlin@dberlin.org>
527 Fix PR tree-optimization/32571
528 * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
531 2007-07-01 Daniel Berlin <dberlin@dberlin.org>
533 * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
534 and other expected operations explicitly, change default to
537 2007-07-01 Daniel Jacobowitz <dan@codesourcery.com>
539 * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
541 * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
542 (tls_load_dot_plus_eight): Move the label number into the unspec.
543 * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
545 2007-07-01 Andreas Schwab <schwab@suse.de>
547 * dwarf2out.c (initial_return_save): Define only if used.
549 2007-07-01 Kenneth Zadeck <zadeck@naturalbridge.com>
551 Unreverting Richard's Revert of:
553 2007-06-27 Richard Sandiford <richard@codesourcery.com>
555 * dce.c (deletable_insn_p_1): New function, split out from...
556 (deletable_insn_p): ...here. Only treat bare USEs and CLOBBERs
557 specially, not those inside PARALLELs. Remove BODY argument
558 and adjust recursive call accordingly.
559 (prescan_insns_for_dce): Update call to delete_insn_p.
561 2007-07-01 Vladimir Yanovsky <yanov@il.ibm.com>
562 Revital Eres <eres@il.ibm.com>
564 * ddg.c (create_ddg_all_sccs): Fix missed
565 initialization of scc_nodes.
567 2007-07-01 Uros Bizjak <ubizjak@gmail.com>
570 * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
571 X + ~X to 1 only for INTEGRAL_TYPE_P type.
573 2007-06-30 Joseph Myers <joseph@codesourcery.com>
575 * configure.ac: Check for .gnu_attribute on MIPS.
576 * configure, config.in: Regenerate.
577 * config/mips/mips.c (mips_file_start): If supported, output
578 attribute for floating-point ABI.
580 2007-06-30 Uros Bizjak <ubizjak@gmail.com>
583 * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
584 (ffs_cmove): New expander to expand using ctz pattern.
585 (*ffs_cmove): Remove pattern.
586 (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
587 (ffsdi2): Expand using ctz pattern.
588 (*ffs_rex64): Remove pattern.
590 2007-06-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
592 PR rtl-optimization/32296
593 * pa.md (return): Delete pattern.
594 (return_internal): Remove "(const_int 1)" from pattern.
595 (epilogue): Use return_internal pattern for trivial returns.
596 * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
597 * pa.c (hppa_can_use_return_insn_p): Delete function. Include "df.h".
599 2007-06-30 Daniel Berlin <dberlin@dberlin.org>
601 * tree-ssa-pre.c (is_exception_related): New function
602 (can_value_number_operation): Use it.
604 2007-06-30 Daniel Berlin <dberlin@dberlin.org>
606 Fix PR tree-optimization/32540
607 Fix PR tree-optimization/31651
609 * tree-ssa-sccvn.c: New file.
611 * tree-ssa-sccvn.h: Ditto.
613 * tree-vn.c: Include tree-ssa-sccvn.h
614 (val_expr_paid_d): Removed.
615 (value_table): Ditto.
617 (val_expr_pair_hash): Ditto.
618 (val_expr_pair_expr_eq): Ditto.
619 (copy_vuses_from_stmt): Ditto.
622 (shared_vuses_from_stmt): Ditto.
623 (print_creation_to_file): Moved up.
625 (sort_vuses_heap): Ditto.
626 (set_value_handle): Make non-static.
627 (make_value_handle): Ditto.
628 (vn_add): Rewritten to use sccvn lookups.
629 (vn_add_with_vuses): Ditto.
630 (vn_lookup): Ditto (and second argument removed).
631 (vn_lookup_with_vuses): Ditto.
632 (vn_lookup_or_add): Ditto (and second argument removed);
633 (vn_lookup_or_add_with_vuses): Ditto.
634 (vn_lookup_with_stmt): New.
635 (vn_lookup_or_add_with_stmt): Ditto.
636 (create_value_handle_for_expr): Ditto.
638 * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
639 (seen_during_translate): New function.
640 (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
641 (phi_trans_add): Ditto.
642 (constant_expr_p): FIELD_DECL is always constant.
643 (phi_translate_1): Renamed from phi_translate, add seen bitmap.
645 Avoid infinite recursion on mutually valued expressions.
646 Change callers of vn_lookup_or_add.
647 (phi_translate): New function.
648 (compute_antic_safe): Allow phi nodes.
649 (create_component_ref_by_pieces): Update for FIELD_DECL change.
650 (find_or_generate_expression): Rewrite slightly.
651 (create_expression_by_pieces): Updated for vn_lookup_or_add
653 Update VN_INFO for new names.
654 (insert_into_preds_of_block): Update for new names.
655 (add_to_exp_gen): New function.
656 (add_to_sets): Use vn_lookup_or_add_with_stmt.
657 (find_existing_value_expr): Rewrite to changed vn_lookup.
658 (create_value_expr_from): Ditto, and use add_to_exp_gen.
659 (try_look_through_load): Removed.
660 (try_combine_conversion): Ditto.
661 (get_sccvn_value): New function.
662 (make_values_for_phi): Ditto.
663 (make_values_for_stmt): Ditto.
664 (compute_avail): Rewritten for vn_lookup_or_add changes and to use
666 (init_pre): Update for SCCVN changes.
668 (execute_pre): Ditto.
670 * tree-flow.h (make_value_handle): Declare.
671 (set_value_handle): Ditto.
672 (sort_vuses_heap): Ditto.
673 (vn_lookup_or_add_with_stmt): Ditto.
674 (vn_lookup_with_stmt): Ditto.
675 (vn_compute): Remove.
678 (vn_lookup): Update arguments.
680 * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
682 (tree-ssa-sccvn.o): New.
683 (OBJS-common): Add tree-ssa-sccvn.o
685 2007-06-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
688 * c-typeck.c (build_external_ref): Don't mark as used if called
690 * calls.c (rtx_for_function_call): Likewise.
692 2007-06-30 Richard Sandiford <richard@codesourcery.com>
696 2007-06-27 Richard Sandiford <richard@codesourcery.com>
698 * dce.c (deletable_insn_p_1): New function, split out from...
699 (deletable_insn_p): ...here. Only treat bare USEs and CLOBBERs
700 specially, not those inside PARALLELs. Remove BODY argument
701 and adjust recursive call accordingly.
702 (prescan_insns_for_dce): Update call to delete_insn_p.
704 2007-06-30 Rask Ingemann Lambertsen <rask@sygehus.dk>
706 * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
707 (try_combine): Move potential calls to undo_all() so they happen
708 before we commit to using the combined insns.
710 2006-06-30 Jan Hubicka <jh@suse.cz>
712 * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
715 2006-06-30 Thomas Neumann <tneumann@users.sourceforge.net>
717 * ipa.c (cgraph_postorder): Cast according to the coding conventions.
718 (cgraph_remove_unreachable_nodes): Likewise.
719 * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
720 * ipa-inline.c (update_caller_keys): Cast according to the coding
722 (cgraph_decide_recursive_inlining): Likewise.
723 (cgraph_decide_inlining_of_small_function): Likewise.
724 (try_inline): Likewise.
725 (cgraph_decide_inlining_incrementally): Likewise.
726 * ipa-pure-const.c (get_function_state): Likewise.
727 (scan_function): Likewise.
728 (analyze_function): Likewise.
729 (static_execute): Likewise.
730 * gcc/ipa-reference.c (scan_for_static_refs): Likewise.
731 (merge_callee_local_info): Likewise.
732 (analyze_function): Use type safe memory macros.
733 (static_execute): Likewise. Cast according to the coding conventions.
734 * ipa-type-escape.c (scan_for_regs): Cast according to the coding
736 * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
738 (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
739 * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
742 2007-06-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
745 * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
746 for complex modes (both int and real).
748 2007-06-29 Jan Hubicka <jh@suse.cz>
750 * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
752 2007-06-29 Jan Hubicka <jh@suse.cz>
755 * cse.c (cse_insn): Avoid invalid sharing in between register note and
758 2007-06-29 Anatoly Sokolov <aesok@post.ru>
761 * config/avr/avr.c: Include dataflow header file.
762 (expand_prologue): Adjust for prologue insn change.
763 * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
766 2007-06-29 Richard Guenther <rguenther@suse.de>
769 * gimplify.c (gimplify_call_expr): Ignore variable argument parts
770 during type verification.
772 2007-06-29 Jan Hubicka <jh@suse.cz>
774 * recog.c (validate_change_rtx_1): Unshare TO argument.
776 2007-06-29 Uros Bizjak <ubizjak@gmail.com>
778 PR tree-optimization/24659
779 * tree-vect-transform.c (vectorizable_call): Handle
780 (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
782 * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
783 * config/i386/i386.c (enum ix86_builtins)
784 [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
785 (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
787 (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
788 const using def_builtin_const.
789 (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
790 input operands in the same modes as the result.
791 (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
793 2007-06-29 Richard Sandiford <rsandifo@nildram.co.uk>
795 * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
796 (df_set_dead_notes_for_mw): Likewise.
798 2007-06-29 Eric Botcazou <ebotcazou@adacore.com>
800 * c-common.c (pointer_int_sum): Do the negation in sizetype.
802 2007-06-28 DJ Delorie <dj@redhat.com>
804 * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
806 2007-06-28 Geoffrey Keating <geoffk@apple.com>
808 * doc/invoke.texi (C++ Dialect Options): Document
809 fvisibility-ms-compat.
810 * c.opt (fvisibility-ms-compat): New.
812 2007-06-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
815 * tree-affine.c (aff_combination_add_elt): Handle
816 pointer addition specially.
818 2007-06-28 Jakub Jelinek <jakub@redhat.com>
820 * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
821 decl is non-external for AIX ABI.
823 2007-06-28 David Edelsohn <edelsohn@gnu.org>
825 * config/rs6000/predicates.md (current_file_function_operand):
826 Ensure the symbol is non-external for AIX ABI.
828 2007-06-28 Nick Clifton <nickc@redhat.com>
830 * common.opt (fipa-matrix-reorg): Add Optimization attribute.
831 (fdce, fdse, fpredictive-commoning): Likewise.
833 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
836 * gcc.c (process_command): Recognize the new -static-libgfortran
839 2007-06-27 Rask Ingemann Lambertsen <rask@sygehus.dk>
842 * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
843 Use a call clobbered hard reg instead of a pseudo reg.
845 2007-06-27 Kaz Kojima <kkojima@gcc.gnu.org>
847 * config/sh/sh.md (load_gbr): Use correct operand constraint.
849 2007-06-27 Kaz Kojima <kkojima@gcc.gnu.org>
852 * config/sh/sh.md (udivsi3): Don't wrap the sequence with
853 REG_LIBCALL and REG_RETVAL notes.
854 (divsi3, mulsi3): Likewise.
855 (mulhisi3): Likewise. Use emit_libcall_block.
856 (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
858 2007-06-27 Seongbae Park <seongbae.park@gmail.com>
860 PR rtl-optimization/32481
861 * combine.c (adjust_for_new_dest): Rescan the changed insn.
863 2007-06-27 Richard Sandiford <richard@codesourcery.com>
865 * dce.c (deletable_insn_p_1): New function, split out from...
866 (deletable_insn_p): ...here. Only treat bare USEs and CLOBBERs
867 specially, not those inside PARALLELs. Remove BODY argument
868 and adjust recursive call accordingly.
869 (prescan_insns_for_dce): Update call to delete_insn_p.
871 2007-06-27 Richard Guenther <rguenther@suse.de>
874 * tree.h (fold_convertible_p): Declare.
875 * fold-const.c (fold_convertible_p): New function.
876 * gimplify.c (gimplify_call_expr): Use fold_convertible_p
877 instead of lang_hooks.types_compatible_p.
879 2007-06-26 Jan Hubicka <jh@suse.cz>
881 * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
882 * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
883 early use validate_unshare_change.
884 (reload_combine): Likewise.
885 * recog.c (change_t): New field unshare.
886 (validate_change_1): Rename from validate_change; add argument unshare.
887 (validate_change): Turn into wrapper of validate_change_1; update
889 (validate_unshare_change): New.
890 (confirm_change_group): Unshare changes if asked for; avoid unnecesary
891 calls of df_insn_rescan.
892 * recog.h (validate_change): Replace ints by bools.
893 (validate_unshare_change): Declare.
895 2007-06-26 Kenneth Zadeck <zadeck@naturalbridge.com>
897 * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
899 2007-06-26 Steve Ellcey <sje@cup.hp.com>
901 * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
903 2007-06-25 Jan Hubicka <jh@suse.cz>
905 * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
907 (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
908 cgraph_decide_inlining_incrementally): Move uninlinability checks to
909 places other call site specific checks are performed.
911 2007-06-25 Andrew Pinski <andrew_pinski@playstation.sony.com>
914 * tree-vect-transform.c (vectorizable_operation): Convert
915 POINTER_PLUS_EXPR over to PLUS_EXPR.
917 2007-06-25 Chao-ying Fu <fu@mips.com>
919 * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
920 UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
921 Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
922 Document GET_MODE_IBIT, and GET_MODE_FBIT.
924 * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
925 MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
926 (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
927 SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
928 SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
929 ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
930 ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
931 SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
932 ALL_FIXED_POINT_MODE_P): New define.
933 (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
935 (GET_MODE_IBIT, GET_MODE_FBIT): New define.
937 * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
938 MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
939 MODE_VECTOR_UACCUM): New mode classes.
941 * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
942 UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
943 Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
946 * genmodes.c (struct mode_data): Add ibit and fbit fields.
947 (blank_mode): Initialize ibit and fbit.
948 (adj_ibit, adj_fbit): New to adjust ibit and fbit.
949 (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
950 (new_adjust): Change required_class to required_class_from and
951 required_class_to for testing within a range.
952 (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
953 MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
955 (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
956 (make_fixed_point_mode): New.
957 (_ADD_ADJUST): Change C to C1 and C2.
958 (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
959 use a range for machine classes.
960 (ADJUST_IBIT, ADJUST_FBIT): New.
961 (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
963 (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
964 MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
965 Emit adjustment for ibit and fbit.
966 (emit_mode_ibit, emit_mode_fbit): New.
967 (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
969 2007-06-25 Nathan Froyd <froydnj@codesourcery.com>
971 * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
972 as the source of the set.
974 2007-06-25 Roman Zippel <zippel@linux-m68k.org>
976 * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
977 FP_REGNO_P): Use IN_RANGE.
978 (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
979 (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
980 (DATA_REG_P): Use DATA_REGNO_P.
981 (FP_REG_P): Use FP_REGNO_P.
982 (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
983 * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
984 REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
986 2007-06-24 Jan Hubicka <jh@suse.cz>
989 * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
991 2007-06-24 Sebastian Pop <sebpop@gmail.com>
994 * fold-const.c (fold_binary): Strip nops of operand 0
995 of BIT_NOT_EXPR before calling operand_equal_p.
996 * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
997 * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
999 2007-06-23 Mark Mitchell <mark@codesourcery.com>
1001 * doc/extend.texi: Document that dllimport and dllexport imply
1003 * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
1004 imported or exported declaration, including type declarations.
1005 * c-common.c (handle_visibility_attribute): Check for conflicts
1006 with dllimport/dllexport.
1007 (c_determine_visibility): Handle dllimport/dllexport as an
1008 explicit visibility atttribute.
1010 2007-06-23 Richard Guenther <rguenther@suse.de>
1012 PR tree-optimization/16876
1014 * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
1016 * tree-inline.c (initialize_inlined_parameters): Do not call
1017 lang_hooks.tree_inlining.convert_parm_for_inlining.
1018 * cgraphbuild.c (initialize_inline_failed): Set inline failed
1019 reason for mismatched types.
1020 * gimplify.c (gimplify_call_expr): Verify the call expression
1021 arguments match the called function type signature. Otherwise
1022 mark the call expression to be not considered for inlining
1023 using CALL_CANNOT_INLINE_P flag.
1024 * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
1025 edges call expression.
1026 (cgraph_decide_inlining_of_small_function): Likewise.
1027 (cgraph_decide_inlining): Likewise.
1028 * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
1030 * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
1031 * c-typeck.c (c_convert_parm_for_inlining): Remove.
1032 * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
1034 (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
1035 * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
1037 * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
1038 convert_parm_for_inlining member.
1040 2007-06-23 Richard Earnshaw <rearnsha@arm.com>
1043 * arm.md (negscc): Match the correct operand for optimized LT0 test.
1044 Remove optimization for GT.
1046 2007-06-23 Kenneth Zadeck <zadeck@naturalbridge.com>
1049 * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
1051 (prescan_insns_for_dce): Add extra parameter.
1053 2007-06-23 Jan Hubicka <jh@suse.cz>
1056 * gimplify.c (mark_addressable): New function.
1057 (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
1059 2007-06-22 Uros Bizjak <ubizjak@gmail.com>
1062 * expr.c (store_constructor): Do not clobber non-zeroed memory.
1064 2007-06-22 Uros Bizjak <ubizjak@gmail.com>
1067 * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
1068 moves between MMX/SSE registers to at least 8 units to prevent
1069 ICE caused by non-tieable SI/HI/QImodes in SSE registers.
1071 2007-06-22 Uros Bizjak <ubizjak@gmail.com>
1073 * config/i386/i386.c (override_options): Correct x86_sahf
1076 2007-06-21 David Daney <ddaney@avtrex.com>
1079 * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
1080 to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
1081 (exception_receiver): Renamed to ...
1082 (nonlocal_goto_receiver): ... this.
1084 2007-06-22 Roman Zippel <zippel@linux-m68k.org>
1086 * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
1087 (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
1088 partial register accesses.
1090 2007-06-21 Adam Nemet <anemet@caviumnetworks.com>
1092 * fold-const.c (debug_fold_checksum): Move it under
1093 ENABLE_FOLD_CHECKING.
1095 2007-06-21 Sebastian Pop <sebpop@gmail.com>
1098 * tree.h (debug_fold_checksum): Declared.
1099 * fold-const.c (build_fold_addr_expr_with_type_1): New.
1100 (build_fold_addr_expr_with_type, build_fold_addr_expr): Use
1101 build_fold_addr_expr_with_type_1.
1102 (fold_addr_expr, debug_fold_checksum): New.
1103 (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
1104 (fold_unary, fold_comparison, split_address_to_core_and_offset):
1107 2007-06-21 Sebastian Pop <sebpop@gmail.com>
1109 PR tree-optimization/19590
1110 * tree-vrp.c (adjust_range_with_scev): Set the range when the result
1111 of scev is a constant.
1112 * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
1114 2007-06-21 Kenneth Zadeck <zadeck@naturalbridge.com>
1116 * df-problems.c (df_note_bb_compute): Made computation of live
1117 info consistent with df_lr.
1119 2007-06-21 Richard Guenther <rguenther@suse.de>
1121 PR tree-optimization/32453
1122 * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
1123 for pointer anti-range.
1125 2007-06-21 H.J. Lu <hongjiu.lu@intel.com>
1127 * config/i386/i386.c (processor_target_table): Increase maximum
1128 skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
1131 * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
1132 byte alignment if > 8 byte alignment is preferred.
1133 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
1135 2007-06-21 Jakub Jelinek <jakub@redhat.com>
1137 PR tree-optimization/31866
1138 * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
1139 if ASM_EXPR's input is not a SSA_NAME.
1142 * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
1143 but decl is a global var, instead return decl.
1144 * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
1145 even for is_global_var decls, if they are private in some outer
1148 2007-06-21 Richard Guenther <rguenther@suse.de>
1150 PR tree-optimization/32451
1151 * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
1153 2007-06-21 Christian Bruel <christian.bruel@st.com>
1155 * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
1156 * config/sh/sh.c (sh_loads_bankedreg_p): New function.
1157 (push_regs): Changed saving order or banked registers.
1158 (sh_expand_epilogue): Likewise.
1159 * config/sh/sh.h (BANKED_REGISTER_P): New macro.
1160 (FIRST_BANKED_REG): Likewise.
1161 (LAST_BANKED_REG): Likewise.
1162 * config/sh/sh.md (banked) New attribute.
1163 (in_delay_slot): Check banked attribute.
1165 2007-06-20 Sebastian Pop <sebpop@gmail.com>
1167 PR tree-optimization/32075
1168 * tree-data-ref.c (subscript_dependence_tester_1,
1169 analyze_miv_subscript, analyze_overlapping_iterations,
1170 add_distance_for_zero_overlaps, build_classic_dist_vector,
1171 subscript_dependence_tester_1, analyze_overlapping_iterations,
1172 subscript_dependence_tester, access_functions_are_affine_or_constant_p,
1173 compute_affine_dependence, compute_all_dependences): Pass loop_nest
1174 to evolution_function_is_affine_multivariate_p.
1176 2007-06-20 Eric Botcazou <ebotcazou@libertysurf.fr>
1178 * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
1180 2007-06-20 Rask Ingemann Lambertsen <rask@sygehus.dk>
1183 * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
1185 * config/m32c/prologue.md (epilogue_exitd_16): New.
1186 (epilogue_reit_16): New.
1187 (epilogue_exitd): Rename to epilogue_exitd_24.
1188 (epilogue_reit): Rename to epilogue_reit_24.
1190 2007-06-20 Seongbae Park <seongbae.park@gmail.com>
1191 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
1193 * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
1195 * haifa-sched.c (queue_to_ready): Don't requeue next insn
1196 if dbg_cnt (sched_insn) reaches the limit.
1197 (choose_ready): New parameter INSN_PTR and new return value.
1198 (schedule_block): Handle dbg_cnt (sched_insn). Handle
1199 the new return value from choose_ready.
1200 * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
1201 (rest_of_handle_global_alloc): New global_alloc_at_func.
1203 2007-06-20 Adam Nemet <anemet@caviumnetworks.com>
1205 PR tree-optimization/25737
1206 * tree.h (struct tree_struct_field_tag): Add new field alias_set.
1207 (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
1208 * tree-flow.h (struct fieldoff): Add new field alias_set.
1209 * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
1210 argument addressable_type. Set alias_set of fieldoff.
1211 * tree-ssa-alias.c (create_sft): Add new argument alias_set.
1212 (create_overlap_variables_for): Pass alias_set from fieldoff to
1214 * alias.c (get_alias_set): Use alias_set from SFT if set.
1216 2007-06-20 Hui-May Chang <hm.chang@apple.com>
1218 * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
1219 of a variable as an unsigned HOST_WIDE_INT integer.
1221 2007-06-20 Zdenek Dvorak <dvorakz@suse.cz>
1223 PR rtl-optimization/32405
1224 * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
1226 2007-06-20 Jakub Jelinek <jakub@redhat.com>
1228 * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
1231 * builtins.c: Include diagnostic.h.
1232 (expand_builtin_expect): Make gcc_assert more permissive.
1233 * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
1236 * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
1240 * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
1241 if ACCUMULATE_OUTGOING_ARGS.
1243 2007-06-19 Rask Ingemann Lambertsen <rask@sygehus.dk>
1245 * config/m68hc11/m68hc11.c: Include dataflow header file.
1246 (m68hc11_reorg): Port to dataflow.
1248 2007-06-19 Kenneth Zadeck <zadeck@naturalbridge.com>
1250 * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
1251 (struct df_problem.free_blocks_on_set_blocks): New field.
1252 (struct dataflow.optional_p): New field.
1253 (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
1254 (df_live_set_all_dirty): New function.
1255 * df-scan.c (df_scan_alloc): Initialize optional_p.
1256 (problem_SCAN): Initialize free_blocks_on_set_blocks.
1257 * df-core.c (df_set_blocks): Removed use of
1258 DF_FIRST_OPTIONAL_PROBLEM. Now uses
1259 df_problem.free_blocks_on_set_blocks to determine which blocks are
1261 (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
1262 (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM. Now
1263 uses dataflow.optional_p to determine if problem should be
1265 (rest_of_handle_df_initialize): Only start live problem if
1267 (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
1268 * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
1269 df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
1270 (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
1271 problem_NOTE): Initialize free_blocks_on_set_blocks.
1272 (df_lr_bb_local_compute): Recompute luids if df_live problem is
1274 (df_live_set_all_dirty, df_note_alloc): New function.
1275 * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
1277 * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
1278 * postreload.c (reload_combine): Ditto.
1279 * cse.c (cse_extended_basic_block): Ditto.
1280 * regmove.c (mark_flags_life_zones): Ditto.
1281 * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
1282 erase_matching_seqs): Ditto.
1283 * bt-load.c (compute_defs_uses_and_gen): Ditto.
1284 * integrate (allocate_initial_values): Ditto.
1285 * combine.c (reg_dead_at_p): Ditto.
1286 * resource.c (mark_target_live_regs): Ditto.
1287 * sched-rgn.c (check_live_1, update_live_1): Ditto.
1288 * config/sh/sh.c (find_r0_life_regions): Ditto.
1289 * global.c (rest_of_handle_global_alloc): Only add back df_live
1291 * local-alloc.c (rest_of_handle_local_alloc): Only remove
1293 * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
1295 (if_convert): Make sure df_live is there at -O == 1.
1296 (pass_if_after_combine): Cleanup flags.
1297 * init-regs.c (initialize_uninitialized_regs): Make sure df_live
1298 is there at -O == 1.
1300 2007-06-19 Seongbae Park <seongbae.park@gmail.com>
1302 * config/arm/arm.c (arm_get_frame_offsets): Set
1303 offsets->locals_base to avoid negative stack size.
1304 (thumb1_expand_prologue): Assert on negative stack size.
1306 2007-04-19 Sebastian Pop <sebpop@gmail.com>
1308 PR tree-optimization/32367
1309 * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side
1310 of the chrec has no evolution in that loop.
1311 * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
1313 2007-06-19 Bob Wilson <bob.wilson@acm.org>
1315 * config/xtensa/xtensa.c: Include "df.h".
1316 (xtensa_builtin_saveregs): Use adjust_address instead of change_address.
1317 (xtensa_va_start): Invoke make_tree with sizetype for
1318 expand_builtin_saveregs and then convert the result to a pointer.
1319 Use POINTER_PLUS_EXPR. Use size_int instead of build_int_cst.
1320 (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
1321 Subtract argument size from index value as integers and then use
1322 POINTER_PLUS_EXPR to add the result to the array address.
1324 2007-06-19 Rask Ingemann Lambertsen <rask@sygehus.dk>
1327 * config/m32c/m32c.c: Include dataflow header file.
1328 (m32c_emit_prologue): Adjust for prologue insn change.
1329 * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
1330 once inside a PARALLEL. Assume frame size passed in operand 0
1331 includes space to save the fb register.
1332 (prologue_enter_24): Likewise.
1333 (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
1335 2007-06-19 David Daney <ddaney@avtrex.com
1338 * config/mips/mips.md (cprestore): Mark $gp as used.
1340 2007-06-19 Rask Ingemann Lambertsen <rask@sygehus.dk>
1343 * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
1344 (frv_ifcvt_modify_insn): Likewise.
1346 2007-06-19 Richard Guenther <rguenther@suse.de>
1348 * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
1349 only handle positive offsets that fit in a HOST_WIDE_INT.
1351 2007-06-19 Uros Bizjak <ubizjak@gmail.com>
1353 * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
1354 result of rsqrt insn for zero input argument to avoid NaN.
1356 2007-06-19 Richard Guenther <rguenther@suse.de>
1359 * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
1361 2007-06-19 Jakub Jelinek <jakub@redhat.com>
1363 PR tree-optimization/32353
1364 * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
1366 2007-06-19 Nick Clifton <nickc@redhat.com>
1368 * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
1370 2007-06-18 Uros Bizjak <ubizjak@gmail.com>
1373 * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
1374 * config/i386/i386.c (assign_386_stack_local): Assert that
1375 SLOT_VIRTUAL is valid only before virtual regs are instantiated.
1376 (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
1377 Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
1378 * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
1380 2007-06-18 Steve Ellcey <sje@cup.hp.com>
1382 * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
1384 2007-06-18 Seongbae Park <seongbae.park@gmail.com>
1386 PR rtl-optimization/32321
1387 * gcse.c (replace_store_insn): Update the note before
1388 calling emit_insn_after.
1390 2007-06-18 Kenneth Zadeck <zadeck@naturalbridge.com>
1393 * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
1395 * df-problems.c (df_note_bb_compute): Fix dumping info.
1397 2007-06-18 Kazu Hirata <kazu@codesourcery.com>
1399 * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
1400 insn with emit_jump_insn.
1402 2007-06-18 Uros Bizjak <ubizjak@gmail.com>
1404 PR tree-optimization/32383
1405 * targhooks.c (default_builtin_reciprocal): Add new bool argument.
1406 * targhooks.h (default_builtin_reciprocal): Update prototype.
1407 * target.h (struct gcc_target): Update builtin_reciprocal.
1408 * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
1409 * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
1410 where arg1 is not SSA_NAME. Pass true to targetm.builtin_reciprocal
1411 when fndecl is in BUILT_IN_MD class.
1412 (execute_convert_to_rsqrt): Ditto.
1414 * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
1415 argument. Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
1416 Convert BUILT_IN_SQRTF code only when md_fn is false.
1418 2007-06-18 Kaz Kojima <kkojima@gcc.gnu.org>
1420 * bt-load.c (move_btr_def): Fix the order of arguments
1421 to validate_replace_rtx.
1423 2007-06-18 Nathan Sidwell <nathan@codesourcery.com>
1425 * config/m68k/m68k-devices.def: Add 54450..54455.
1427 2007-06-17 Uros Bizjak <ubizjak@gmail.com>
1429 PR rtl-optimization/32366
1430 * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
1431 FLOAT_EXTEND]: Prevent non-scalar modes from entering
1434 2007-06-17 Kenneth Zadeck <zadeck@naturalbridge.com>
1437 * modulo-sched (generate_reg_moves): Added rescan parameter and if
1438 this is true, rescan insn being modified.
1439 (sms_schedule): Added rescan parameter.
1440 (rest_of_handle_sms): Moved freeing of dominance info to before
1441 getting out of cfg_layout.
1443 2007-06-17 Nathan Sidwell <nathan@codesourcery.com>
1445 * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
1446 * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
1449 * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
1450 FL_CF_EMAC from the entry for isac.
1452 * config/m68k/predicates.md (const_call_operand): Adjust comment.
1453 (const_sibcall_operand): New.
1454 (sibcall_operand): Use it.
1455 * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
1456 (m68k_isas): ISAC does not imply FPU or EMAC.
1457 (override_options): Add ISA_C logic for symbolic jump & call.
1459 2007-06-17 Eric Botcazou <ebotcazou@libertysurf.fr>
1461 * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
1462 return mode from the builtin itself.
1463 (sparc_fold_builtin): Fix cast of zero constant.
1465 2007-06-16 Uros Bizjak <ubizjak@gmail.com>
1467 * targhooks.c (default_builtin_reciprocal): New default target hook.
1468 * targhooks.h (default_builtin_reciprocal): Add prototype.
1469 * hooks.c (hook_tree_tree_bool_null): Remove hook.
1470 * hooks.h (hook_tree_tree_bool_null): Remove prototype.
1471 * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
1472 default_builtin_reciprocal.
1474 2007-06-16 Uros Bizjak <ubizjak@gmail.com>
1477 * hooks.c (hook_tree_tree_bool_null): New hook.
1478 * hooks.h (hook_tree_tree_bool_null): Add prototype.
1479 * tree-pass.h (pass_convert_to_rsqrt): Declare.
1480 * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
1481 * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
1482 and convert it to reciprocal a*rfunc(b).
1483 (execute_convert_to_rsqrt): New function.
1484 (gate_convert_to_rsqrt): New function.
1485 (pass_convert_to_rsqrt): New pass definition.
1486 * target.h (struct gcc_target): Add builtin_reciprocal.
1487 * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
1488 (TARGET_INITIALIZER): Initialize builtin_reciprocal with
1489 TARGET_BUILTIN_RECIPROCAL.
1490 * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
1492 * config/i386/i386.h (TARGET_RECIP): New define.
1493 * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
1494 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1495 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1496 and not optimizing for size.
1497 (*rcpsf2_sse): New insn pattern.
1498 (*rsqrtsf2_sse): Ditto.
1499 (rsqrtsf2): New expander. Expand by calling ix86_emit_swsqrtsf
1500 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1501 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1502 and not optimizing for size.
1503 (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
1504 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1505 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1506 and not optimizing for size.
1507 * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
1508 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1509 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1510 and not optimizing for size.
1511 (*sse_rsqrtv4sf2): Do not export.
1513 (sse_rsqrtv4sf2): New expander. Expand by calling ix86_emit_swsqrtsf
1514 for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
1515 flag_unsafe_math_optimizations are set, flag_trapping_math is unset
1516 and not optimizing for size.
1518 * config/i386/i386.opt (mrecip): New option.
1519 * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
1520 (ix86_emit_swsqrtsf): Ditto.
1521 * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
1522 (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
1524 (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
1525 ix86_expand_unop1_builtin.
1526 (ix86_emit_swdivsf): New function.
1527 (ix86_emit_swsqrtsf): Ditto.
1528 (ix86_builtin_reciprocal): New function.
1529 (TARGET_BUILTIN_RECIPROCAL): Use it.
1530 (ix86_vectorize_builtin_conversion): Rename from
1531 ix86_builtin_conversion.
1532 (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
1533 * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
1534 "i386 and x86_64 Options" section.
1535 (Intel 386 and AMD x86_64 Options): Document -mrecip.
1537 2007-06-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
1538 Zdenek Dvorak <dvorakz@suse.cz>
1539 Richard Guenther <rguenther@suse.de>
1540 Kaz Kojima <kkojima@gcc.gnu.org>
1542 * tree-vrp.c (compare_values_warnv): Convert val2 to
1544 (extract_range_from_assert): Create
1545 POINTER_PLUS_EXPR for pointer types.
1546 (extract_range_from_binary_expr): Handle
1547 only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
1549 * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
1550 * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
1551 POINTER_PLUS_EXPR as PLUS_EXPR.
1552 (number_of_iterations_lt_to_ne):
1553 For pointer types, use sizetype when
1554 creating MINUS_EXPR/PLUS_EXPRs.
1555 (assert_loop_rolls_lt): For pointer types, use sizetype when
1556 creating MINUS_EXPR/PLUS_EXPRs.
1557 (number_of_iterations_le): Likewise.
1558 (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
1559 (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
1560 like PLUS_EXPR and MINUS_EXPR.
1561 * tree-pretty-print.c (dump_generic_node): Handle
1563 (op_prio): Likewise.
1564 (op_symbol_1): Likewise.
1565 * optabs.c (optab_for_tree_code): Likewise.
1566 * tree-ssa-loop-manip.c (create_iv): Handle pointer base
1568 * tree-tailcall.c (process_assignment): Mention
1569 POINTER_PLUS_EXPR in a TODO comment.
1570 * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or
1571 MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
1572 not used with a pointer and an integer type.
1573 * tree-scalar-evolution.c (add_to_evolution_1): Convert the
1574 increment using chrec_convert_rhs instead of chrec_convert.
1575 (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
1576 PLUS_EXPR except for the right hand side's type will be
1578 (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
1579 (fold_used_pointer_cast): Kill.
1580 (pointer_offset_p): Kill.
1581 (fold_used_pointer): Kill.
1582 (pointer_used_p): Kill.
1583 (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
1584 call fold_used_pointer.
1585 (instantiate_parameters_1): Convert the increment
1586 using chrec_convert_rhs instead of chrec_convert.
1587 Handle POINTER_PLUS_EXPR as PLUS_EXPR.
1588 * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
1589 instead of PLUS_EXPR.
1590 (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
1591 PLUS_EXPR for pointers.
1592 (std_gimplify_va_arg_expr): Likewise.
1593 (fold_builtin_memory_op): Likewise.
1594 (fold_builtin_strstr): Likewise.
1595 (fold_builtin_strchr): Likewise.
1596 (fold_builtin_strrchr): Likewise.
1597 (fold_builtin_strpbrk): Likewise.
1598 (expand_builtin_memory_chk): Likewise.
1599 (fold_builtin_memory_chk): Likewise.
1600 (std_expand_builtin_va_start): Use
1601 sizetype for the call to make_tree and then convert
1602 to the pointer type.
1603 (fold_builtin_memchr): Use POINTER_PLUS_EXPR
1604 instead of PLUS_EXPR for adding to a pointer.
1605 (std_gimplify_va_arg_expr): Use fold_build2 for
1606 the creating of POINTER_PLUS_EXPR. For the BIT_AND_EXPR, cast
1607 the operands to sizetype first and then cast the BIT_AND_EXPR
1608 back to the pointer type.
1609 * fold-const.c (build_range_check): Handle pointer types
1611 (extract_array_ref): Look for POINTER_PLUS_EXPR instead
1612 of PLUS_EXPR's. Make sure the offset is converted to
1614 (try_move_mult_to_index): Strip the NOPs from the offset.
1615 Remove code argument and replace all uses with PLUS_EXPR.
1616 (fold_to_nonsharp_ineq_using_bound): Handle pointer types
1617 specially. Don't use a pointer type for MINUS_EXPR.
1618 (fold_unary): Handle for (T1)(X op Y),
1619 only p+ as that is the only as that can be handled for
1620 binary operators now.
1621 (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
1623 <case PLUS_EXPR>: Add folding of PTR+INT into
1625 Don't call try_move_mult_to_index.
1626 <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
1627 into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
1628 (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
1629 Don't call try_move_mult_to_index.
1630 (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
1631 (tree_expr_nonzero_p): Likewise.
1632 (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
1633 of PLUS_EXPR for the complex expression folding.
1634 * tree-chrec.c (chrec_fold_plus_poly_poly): If the
1635 first chrec is a pointer type, then the second should
1636 be sizetype and not the first's type.
1637 For POINTER_PLUS_EXPR, use a different right hand side type.
1638 Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1639 (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
1640 different right hand side type.
1641 Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1642 (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
1643 instead of PLUS_EXPR.
1644 When either operand is zero, convert the other operand.
1645 (chrec_apply): Use chrec_convert_rhs
1646 on the argument x instead of chrec_convert.
1647 (reset_evolution_in_loop): For pointer types, the new_evol
1649 (convert_affine_scev): For POINTER_PLUS_EXPR, use a
1650 different right hand side type.
1651 Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1652 (chrec_convert_rhs): New function.
1653 (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
1654 different right hand side type.
1655 Handle POINTER_PLUS_EXPR like PLUS_EXPR.
1656 * tree-chrec.h (chrec_convert_rhs): New prototype.
1657 (build_polynomial_chrec): For pointer types, the right hand
1658 * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
1659 POINTER_PLUS_EXPR instead of PLUS_EXPR's.
1660 Remove subtraction case as it is always addition now.
1661 Make sure the offset is converted to sizetype.
1662 (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
1663 Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
1664 * tree-ssa-loop-ivopts.c (determine_base_object): Abort for
1665 PLUS_EXPR in pointer type.
1666 Handle POINTER_PLUS_EXPR.
1667 (tree_to_aff_combination): Likewise.
1668 (force_expr_to_var_cost): Likewise.
1669 (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
1670 instead of PLUS_EXPR for pointers.
1671 * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
1672 instead of PLUS_EXPR of pointer types.
1673 * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
1675 (check_va_list_escapes): Likewise.
1676 (check_all_va_list_escapes): Likewise.
1677 * dwarf2out.c (loc_descriptor_from_tree_1):
1678 Handle POINT_PLUS_EXPR as a PLUS_EXPR.
1679 * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
1680 (string_constant): Likewise.
1681 * tree-ssa-address.c (tree_mem_ref_addr): When adding
1682 the offset to the base, use POINTER_PLUS_EXPR.
1683 (add_to_parts): Convert the index to sizetype.
1684 (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
1685 * matrix-reorg.c (collect_data_for_malloc_call): Stmt
1686 will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
1687 Offset only holds something for PLUS_EXPR.
1688 (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
1690 (analyze_transpose): POINTER_PLUS_EXPR will only show up now
1692 (analyze_accesses_for_modify_stmt): Likewise.
1693 Remove comment about the type being integral type as it is
1695 (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
1697 (transform_access_sites): POINTER_PLUS_EXPR will only show up now
1699 Correct the type which the artimentic is done in (is now
1702 * tree-data-ref.c (split_constant_offset): Handle
1704 * tree-affine.c (tree_to_aff_combination): Likewise.
1705 * c-typeck.c (build_unary_op): For pointers create the increment
1706 as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
1708 * gimplify.c (gimplify_self_mod_expr): Create a
1709 POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1710 (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
1711 * tree.def (POINTER_PLUS_EXPR): New tree code.
1712 * tree-predcom.c (ref_at_iteration): If we have a pointer
1713 type do the multiplication in sizetype.
1714 * tree-mudflap.c (mf_xform_derefs_1): Create a
1715 POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1716 * tree-ssa-forwprop.c
1717 (forward_propagate_addr_into_variable_array_index):
1718 Don't expect there to be a cast for the index as that
1719 does not exist anymore.
1720 (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
1721 instead of PLUS_EXPR.
1722 Don't check for the first operand of the POINTER_PLUS_EXPR
1723 was the index as it cannot be.
1724 Call forward_propagate_addr_into_variable_array_index with
1725 the SSA_NAME instead of the statement.
1726 * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
1727 (compare_constant): Likewise.
1728 (copy_constant): Likewise.
1729 (compute_reloc_for_constant): Likewise.
1730 (output_addressed_constants): Likewise.
1731 (initializer_constant_valid_p): Likewise.
1732 * tree-ssa.c (tree_ssa_useless_type_conversion_1):
1733 Convert the MIN/MAX of the inner type to the outer
1734 type before comparing them.
1735 * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
1736 POINTER_PLUS_EXPR instead of PLUS_EXPR.
1737 (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
1738 of PLUS_EXPR for pointers.
1739 * tree-inline.c (estimate_num_insns_1): Handle
1741 * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
1742 Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1743 (bump_vector_ptr): Create a POINTER_PLUS_EXPR
1744 instead of PLUS_EXPR for the pointer increment statement.
1745 (vect_update_ivs_after_vectorizer): For pointer types, create
1746 POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
1747 MULT_EXPR in sizetype.
1748 (vect_gen_niters_for_prolog_loop): Add a cast when creating
1750 * tree-object-size.c (plus_expr_object_size): Handle
1751 POINTER_PLUS_EXPR instead of PLUS_EXPR. Removing all the extra
1752 code which is trying to figure out which side is a pointer and
1754 (check_for_plus_in_loops_1): Likewise.
1755 (check_for_plus_in_loops): Likewise.
1756 * c-common.c (pointer_int_sum): Create a
1757 POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
1758 * tree-ssa-structalias.c (handle_ptr_arith): Handle
1759 only POINTER_PLUS_EXPR. Removing all the extra
1760 code which is trying to figure out which side is a pointer and
1762 * tree-cfg.c (verify_expr): Add extra checking for pointers and
1763 PLUS_EXPR and MINUS_EXPR.
1764 Also add checking to make sure the operands of POINTER_PLUS_EXPR
1766 * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
1767 with make_tree, instead of a pointer type.
1768 * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
1769 for pointers instead of PLUS_EXPR.
1770 (s390_gimplify_va_arg): Likewise.
1771 * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
1772 instead of PLUS_EXPR when doing addition on pointer
1773 types. Use sizetype for the second operand.
1774 (spu_gimplify_va_arg_expr): Likewise.
1775 * config/sparc/sparc.c (sparc_gimplify_va_arg): Use
1776 POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
1777 a pointer. Don't create a BIT_AND_EXPR for pointer types.
1778 * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
1779 for the pointer addition and also use size_int/sizetype
1781 (ix86_gimplify_va_arg): Likewise.
1782 Perform BIT_AND_EXPR on sizetype arguments.
1783 * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
1784 and convert its result to a pointer type. Use POINTER_PLUS_EXPR
1785 for the pointer additions and also use size_int for the offsets.
1786 (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
1787 additions and also use size_int for the offsets. Perform
1788 BIT_AND_EXPR on sizetype arguments.
1789 * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
1790 POINTER_PLUS_EXPR for pointers and create the
1791 BIT_AND_EXPR in sizetype.
1792 * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
1793 instead of PLUS_EXPR for pointer addition.
1794 (rs6000_va_start): Likewise.
1795 Also use sizetype for the offset.
1796 * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
1797 as PLUS_EXPR/MINUS_EXPR.
1798 (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
1799 PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
1800 Don't use BIT_AND_EXPR on a pointer type, convert the
1801 expression to sizetype first.
1802 * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
1804 (mips_gimplify_va_arg_expr): Likewise.
1805 Don't create BIT_AND_EXPR in a pointer type.
1807 2007-06-15 Eric Christopher <echristo@apple.com>
1809 * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
1810 (x86_64-*-darwin*): Ditto.
1811 * config/i386/darwin.h (CRTEND_SPEC): New. Add support
1814 2007-06-15 Matthew Wilcox <matthew@wil.cx>
1816 * doc/extend.texi: Document behavior of __attribute__((aligned))
1819 2007-06-15 Mark Mitchell <mark@codesourcery.com>
1821 * rtlanal.c (note_stores): Improve documentation.
1823 2007-06-15 Bernd Schmidt <bernd.schmidt@analog.com>
1825 * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
1826 LOCAL_LABEL_PREFIX): Delete.
1827 * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
1828 (bfin_internal_label): Delete.
1830 2007-06-15 Uros Bizjak <ubizjak@gmail.com>
1832 * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
1833 define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
1834 otherwise define to LIBGCC2_TF_CEXT.
1835 * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
1836 (LIBGCC_TF_CEXT): Ditto.
1839 2007-06-14 Seongbae Park <seongbae.park@gmail.com>
1841 PR rtl-optimization/32339
1842 * df-scan.c (df_uses_record): Don't modify flags but just add to
1843 it for df_ref_record.
1845 2007-06-14 Andrew Pinski <andrew_pinski@playstation.sony.com>
1847 * tree-mudflap.c: Fix whitespace issues.
1849 2007-06-15 Kazu Hirata <kazu@codesourcery.com>
1851 * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
1853 2007-06-14 Eric Christopher <echristo@apple.com>
1855 * config/i386/sse.md (movdi_to_sse): Rewrite body.
1856 (movv4sf): Use gcc_unreachable instead of abort.
1858 2007-06-14 Uros Bizjak <ubizjak@gmail.com>
1861 * config/i386/sfp-machine.h (CMPtype): New define.
1862 (mach stubs): Use CMPtype instead of int as a return type.
1864 2007-06-14 Uros Bizjak <ubizjak@gmail.com>
1866 * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
1867 config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
1868 config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
1869 config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
1870 config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
1871 config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
1872 config/soft-fp/soft-fp.h: Update from glibc CVS.
1874 2007-06-14 Bernd Schmidt <bernd.schmidt@analog.com>
1876 * config/bfin/uclinux.h (MFWRAP_SPEC): New.
1878 2007-06-14 Rask Ingemann Lambertsen <rask@sygehus.dk>
1881 * config/v850/v850.c: Include dataflow header file.
1882 (substitute_ep_register): Fix typo.
1884 2007-06-14 Paolo Bonzini <bonzini@gnu.org>
1886 * configure.ac: Fix earlier checkin.
1887 * configure: Regenerated.
1889 2007-06-14 Paolo Bonzini <bonzini@gnu.org>
1891 * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
1892 * aclocal.m4: Regenerate.
1893 * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
1894 ACX_PROG_CC_WARNINGS_ARE_ERRORS,
1895 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
1896 * configure: Regenerate.
1897 * Makefile.in (LOOSE_WARN): Subst loose_warn.
1899 * Makefile.in (quickstrap): Build libgcc too.
1901 2007-06-14 Paolo Bonzini <bonzini@gnu.org>
1903 * configure.ac: Add --enable-checking=df. Explicitly mention that
1904 the variables are initialized as for "release".
1905 * df-core.c: Use it.
1906 * configure: Regenerate.
1907 * config.in: Regenerate.
1909 2007-06-14 Bob Wilson <bob.wilson@acm.org>
1911 * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
1912 validate_replace_rtx instead of replace_rtx.
1913 (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
1915 2007-06-14 Danny Smith <dannysmith@users.sourceforge.net>
1917 * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
1918 (DWARF2_UNWIND_INFO): Override default if configured with
1920 * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
1921 (ENDFILE_SPEC): Add crtend.o.
1922 * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
1923 (ENDFILE_SPEC): Add crtend.o.
1924 (TARGET_USE_JCR_SECTION): Define.
1925 (MD_UNWIND_SUPPORT): Define for 32-bit target.
1927 * config/i386/cygming-crtbegin.c: New file.
1928 * config/i386/cygming-crtend.c: New file.
1930 2007-06-14 Pascal Obry Pascal Obry <obry@adacore.com>
1932 * config/i386/w32-unwind.h: New file.
1934 2007-06-13 Eric Christopher <echristo@apple.com>
1936 * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
1937 the user set a value below STACK_BOUNDARY.
1939 2007-06-13 Thiemo Seufer <ths@networkno.de>
1941 * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
1942 imply -lpthread for -pthread.
1944 2007-06-13 Kazu Hirata <kazu@codesourcery.com>
1946 * basic-block.h: Remove the prototype for
1947 free_basic_block_vars.
1948 * cfglayout.h: Remove the prototype for
1949 insn_locators_initialize.
1950 * tree.h: Remove the prototype for emit_line_note.
1952 * tree-ssa-pre.c (mergephitemp): Remove.
1953 (init_pre): Don't use mergephitemp.
1955 2007-06-13 Eric Christopher <echristo@apple.com>
1957 * config/i386/i386.c (override_options): If we've specified
1958 an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
1960 2007-06-13 Bob Wilson <bob.wilson@acm.org>
1962 * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
1965 2007-06-13 Bernd Schmidt <bernd.schmidt@analog.com>
1967 * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
1968 * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
1969 (eh_store_handler): New pattern.
1970 (eh_return): Emit it instead of a plain move.
1972 2007-06-13 Uros Bizjak <ubizjak@gmail.com>
1974 * config/i386/i386.c (ix86_init_mmx_sse_builtins)
1975 [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
1976 [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
1979 2007-06-13 Bernd Schmidt <bernd.schmidt@analog.com>
1981 * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
1982 (find_next_insn_start, find_load): New functions.
1983 (bfin_reorg): Use them to deal with the fact that parallel insns are
1984 no longer represented as a SEQUENCE.
1986 2007-06-13 Eric Botcazou <ebotcazou@libertysurf.fr>
1988 * config/sparc/sparc.c (sparc_override_options): Initialize
1991 2007-06-13 Dave Korn <dave.korn@artimi.com>
1993 * config/i386/i386.c (ix86_eax_live_at_start_p): Use
1996 2007-06-13 Kazu Hirata <kazu@codesourcery.com>
1998 * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
1999 config/sh/divcost-analysis, dbgcnt.def, df-core.c,
2000 df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
2001 tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
2002 tree-vect-transform.c: Fix comment typos. Follow spelling
2005 2007-06-12 Seongbae Park <seongbae.park@gmail.com>
2007 * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
2008 to the exit block use set.
2009 (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring".
2010 * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
2011 * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
2013 2007-06-12 Seongbae Park <seongbae.park@gmail.com>
2015 * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
2016 * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
2017 to indicate an error.
2018 (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
2019 (dbg_cnt_process_opt): Print an error on a bad argument.
2020 * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
2021 * common.opt (-fdbg-cnt-list): New.
2022 * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
2024 2007-06-12 Eric Botcazou <ebotcazou@adacore.com>
2026 * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
2027 flag on ref-all pointers.
2029 2007-06-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
2032 * expr.c (expand_expr_addr_expr_1): Call expand_expr
2033 for the offset with the modifier as EXPAND_INITIALIZER
2034 if the modifier is EXPAND_INITIALIZER.
2035 (expand_expr_real_1 <case INTEGER_CST>): Don't force to
2036 a register if we had an overflow.
2038 2007-06-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2040 * real.c (real_isfinite): New.
2041 (real_sqrt): Use it.
2042 * real.h (real_isfinite): New.
2043 * builtins.c: Use it.
2045 2007-06-12 Ian Lance Taylor <iant@google.com>
2046 Daniel Berlin <dberlin@dberlin.org>
2049 * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
2050 * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
2051 (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
2052 (DECL_NO_TBAA_P): Define.
2053 (struct tree_decl_common): Add no_tbaa_flag field.
2054 * tree-ssa-structalias.c (struct variable_info): Add
2055 no_tbaa_pruning field.
2056 (new_var_info): Initialize no_tbaa_pruning field.
2057 (unify_nodes): Copy no_tbaa_pruning field.
2058 (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
2059 (dump_solution_for_var): Print no_tbaa_pruning flag.
2060 (set_uids_in_ptset): Add no_tbaa_pruning parameter. Change all
2062 (compute_tbaa_pruning): New static function.
2063 (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
2064 Call compute_tbaa_pruning.
2065 * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
2066 * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
2067 * gimple-low.c (lower_stmt): Likewise.
2068 * tree-gimple.c (is_gimple_stmt): Likewise.
2069 * tree-ssa-operands.c (get_expr_operands): Likewise.
2070 * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2071 * tree-inline.c (estimate_num_insns_1): Likewise.
2072 (copy_result_decl_to_var): Likewise.
2073 * expr.c (expand_expr_real_1): Likewise.
2074 * tree-pretty-print.c (dump_generic_node): Likewise.
2075 * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
2076 * omp-low.c (omp_copy_decl_2): Likewise.
2077 * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
2078 * doc/c-tree.texi (Expression trees): Document
2079 CHANGE_DYNAMIC_TYPE_EXPR.
2081 2007-06-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2083 * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
2084 with !HONOR_NANS and !HONOR_INFINITIES.
2085 * simplify-rtx.c (simplify_binary_operation_1): Likewise.
2087 2007-06-12 Tristan Gingold <gingold@adacore.com>
2089 * gcov.c: Comments updated.
2090 (source_info): Add file_time field.
2091 (source_index): New variable.
2092 (mutiple_files): New variable.
2093 (generate_results): New function extracted from process_file.
2094 (process_file): Save and restore chain of functions, generate
2095 results and free structures only if not merging results.
2096 (release_structures): File names are now freed in create_file_names
2097 (create_file_names): Free previous file names.
2098 (find_source): File date is now read here and modifications in
2099 source files is checked here.
2100 (read_graph_file): Only reverse order of functions for the current
2102 (make_gcov_file_name): Do not generate long names if input_name is
2104 (output_lines): If merging results do not display graph, data and
2106 Checking source file modification is done in find_source.
2108 * doc/gcov.texi: Append an s to sourcefile.
2110 2007-06-12 Bernd Schmidt <bernd.schmidt@analog.com>
2112 * config/bfin/bfin.md (UNSPEC_NOP): New constant.
2113 (forced_nop): New pattern.
2114 * config/bfin/bfin.c: Include "df.h".
2115 (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
2116 (bfin_discover_loop): Use df_get_live_in instead of
2117 global_live_at_start.
2118 (bfin_reorder_loops): Pass 0 to cfg_layout_initialize. Call
2119 df_analyze when done.
2120 (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
2121 the insns. Use QImode for the final insn in a bundle. Call
2122 df_insn_rescan on generated NOPs; use gen_forced_nop instead of
2124 (reorder_var_tracking_notes): New function.
2125 (bfin_reorg): Pass no argument to split_all_insns. Don't call
2126 update_life_info. Call df_analyze after scheduling and bundle
2127 generation. Call reorder_var_tracking_notes if generating these notes.
2128 Call df_finish_pass at the end.
2130 2007-06-12 Dirk Mueller <dmueller@suse.de>
2132 * optabs.c (debug_optab_libfuncs): fix gcc_assert to
2133 a comparison, not an assignment.
2135 2007-06-12 Olivier Hainque <hainque@adacore.com>
2137 * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
2138 Request walking the subtrees only, leaving the current is_lhs/val_only
2140 (convert_non_local_reference): Likewise.
2142 2007-06-12 Nathan Sidwell <nathan@codesourcery.com>
2144 * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
2146 2007-06-12 Richard Guenther <rguenther@suse.de>
2148 PR tree-optimization/15353
2149 PR tree-optimization/31657
2150 * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
2151 * timevar.def: Add TV_TREE_IFCOMBINE.
2152 * tree-pass.h (pass_tree_ifcombine): Declare.
2153 * tree-ssa-ifcombine.c: New file.
2154 * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
2155 * tree-flow.h (blocks_in_phiopt_order): Declare.
2156 * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
2157 (tree-ssa-ifcombine.o): New dependencies.
2159 2007-06-12 Uros Bizjak <ubizjak@gmail.com>
2161 PR rtl-optimization/32293
2162 * combine.c (simplify_if_then_else): Truncate return from
2163 nonzero_bits() to correct mode.
2165 2007-06-12 Uros Bizjak <ubizjak@gmail.com>
2167 * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
2168 into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
2170 2007-06-11 Diego Novillo <dnovillo@google.com>
2172 * Makefile.in (reload1.o-warn): Remove.
2174 2007-06-11 Seongbae Park <seongbae.park@gmail.com>
2176 * combine.c (subst): Use reg_overlap_mentioned_p
2177 instead of comparing register numbers directly.
2179 2007-06-11 Kenneth Zadeck <zadeck@naturalbridge.com>
2181 * reload1.c (mark_home_live_1): Use the mode parameter.
2183 2007-06-11 Kenneth Zadeck <zadeck@naturalbridge.com>
2185 * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
2186 df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
2190 2007-06-11 Daniel Berlin <dberlin@dberlin.org>
2192 * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
2194 2007-06-11 Uros Bizjak <ubizjak@gmail.com>
2196 * config/i386/i386.md ("*movtf_internal): Penalize moves to and
2197 from integer registers.
2198 (FP mode splitters): Handle TFmode.
2200 2007-06-11 Eric Botcazou <ebotcazou@adacore.com>
2202 * tree-ssa-structalias.c (find_what_p_points_to): Return false
2203 for ref-all pointers that point-to anything.
2205 2007-06-11 Joseph Myers <joseph@codesourcery.com>
2207 * config/arm/arm.c (arm_output_dwarf_dtprel,
2208 TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
2210 2007-06-11 Bernd Schmidt <bernd.schmidt@analog.com>
2212 * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
2213 movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
2216 2007-06-11 Rafael Avila de Espindola <espindola@google.com>
2218 * gcc/tree.c (signed_or_unsigned_type_for): New.
2219 (unsigned_type_for): Use signed_or_unsigned_type_for.
2220 (signed_type_for): Use signed_or_unsigned_type_for.
2221 * gcc/tree.h (signed_or_unsigned_type_for): New.
2222 (get_signed_or_unsigned_type): Remove.
2223 * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
2224 lang_hooks.types.signed_type
2225 (size_diffop): Likewise.
2226 (all_ones_mask_p): Likewise.
2227 (build_range_check): Likewise.
2228 (fold_cond_expr_with_comparison): Likewise.
2229 (fold_cond_expr_with_comparison): Likewise.
2230 (unextend): Likewise.
2231 (extract_muldiv_1): Likewise.
2232 (fold_single_bit_test_into_sign_test): Likewise.
2233 (fold_binary): Likewise.
2234 (fold_ternary): Likewise.
2235 (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
2236 instead of get_signed_or_unsigned_type.
2237 * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
2238 (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
2239 * gcc/expr.c (signed_or_unsigned_type_for): Use
2240 signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
2241 * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
2242 (lhd_signed_or_unsigned_type): Remove.
2243 * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
2244 signed_or_unsigned_type.
2245 (lhd_signed_or_unsigned_type): Remove.
2246 * gcc/expmed.c (make_tree): Use signed_type_for instead of
2247 lang_hooks.types.signed_type.
2248 * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
2249 c_common_signed_type instead of lang_hooks.types.signed_type.
2250 (c_common_unsigned_type): New.
2251 (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
2252 (shorten_compare): Use c_common_unsigned_type instead of
2253 c_common_signed_or_unsigned_type.
2254 (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
2256 * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
2257 lang_hooks.types.signed_type.
2258 * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
2259 (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
2260 LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
2261 * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
2262 instead of unsigned_type_for.
2263 * gcc/c-decl.c (groakdeclarator): Likewise.
2264 * gcc/c-typeck.c (convert_for_assignment): Likewise.
2265 * gcc/c-common.h (c_common_unsigned_type): New.
2267 2007-06-11 Uros Bizjak <ubizjak@gmail.com>
2270 * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
2271 * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
2273 2007-06-11 Uros Bizjak <ubizjak@gmail.com>
2276 * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
2277 into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
2279 2007-06-10 Jan Sjodin <jan.sjodin@amd.com>
2280 Sebastian Pop <sebpop@gmail.com>
2282 * lambda-code.c (remove_iv): New.
2283 (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
2285 2007-06-10 Zdenek Dvorak <dvorakz@suse.cz>
2287 * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
2288 * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
2289 * tree-ssa-loop-prefetch.c: Include optabs.h.
2290 (FENCE_FOLLOWING_MOVNT): New macro.
2291 (struct mem_ref): Add independent_p and storent_p fields.
2292 (record_ref): Initalize the new fields.
2293 (gather_memory_references_ref): Return true if the reference
2295 (gather_memory_references): Check whether all memory accesses
2296 in loop were recorded.
2297 (should_issue_prefetch_p): Return false for nontemporal stores.
2298 (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
2299 may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
2300 (determine_loop_nest_reuse): Detect independent memory references.
2301 (loop_prefetch_arrays): Call mark_nontemporal_stores.
2302 * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
2303 * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
2304 * config/i386/i386.h (x86_mfence): Declare.
2305 (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
2306 * config/i386/i386.c (x86_mfence): New variable.
2307 (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
2309 * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
2310 * optabs.c (init_optabs): Initialize storent_optab.
2311 * optabs.h (enum optab_index): Add OTI_storent.
2312 (storent_optab): Declare.
2313 * genopinit.c (optabs): Add initialization for storent_optab.
2314 * tree.h (MOVE_NONTEMPORAL): New macro.
2315 * expr.c (expand_assignment, store_expr, store_constructor_field,
2316 store_constructor, store_field, expand_expr_real_1): Propagate
2317 nontemporality of the expanded store.
2318 (emit_storent_insn): New function.
2319 * expr.h (expand_assignment, store_expr): Declaration changed.
2320 * function.c (assign_parm_setup_reg): Pass false as nontemporality
2321 to expand_assignment.
2322 * stmt.c (expand_asm_expr): Ditto.
2323 * calls.c (initialize_argument_information): Pass false as
2324 nontemporality to store_expr.
2325 * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
2328 2007-06-09 Daniel Berlin <dberlin@dberlin.org>
2330 * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
2332 (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
2334 2007-06-09 Daniel Berlin <dberlin@dberlin.org>
2336 * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
2337 and allow DECL_P here.
2339 2007-06-09 Zdenek Dvorak <dvorakz@suse.cz>
2341 * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
2342 follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
2343 track of the size of the expression.
2344 * cfghooks.c (merge_blocks): Remove block from loops structure only
2345 after call of the merge_blocks hook.
2347 2007-06-09 Tom Tromey <tromey@redhat.com>
2349 * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
2350 (deprecated_state): Removed.
2351 (start_decl): Update.
2352 (enum deprecated_states): Moved earlier.
2353 (groktypename): Update.
2354 (push_parm_decl): Likewise.
2355 (grokfield): Likewise.
2356 (start_function): Likewise.
2358 2007-06-09 Ian Lance Taylor <iant@google.com>
2360 PR tree-optimization/32169
2361 * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
2362 CONVERT_EXPR, check whether min and max both converted to an
2363 overflow infinity representation.
2365 2007-06-08 Eric Botcazou <ebotcazou@adacore.com>
2367 * reload1.c (fixup_abnormal_edges): Clear bb field for insns
2368 not inserted on the edge.
2370 2007-06-08 Bob Wilson <bob.wilson@acm.org>
2372 * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
2373 instructions if they are supported.
2374 (__divsi3, __umodsi3, __modsi3): Likewise.
2375 (__ashldi3, __ashrdi3, __lshrdi3): New.
2376 * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
2378 2007-06-08 Harsha Jagasia <harsha.jagasia@amd.com>
2379 Tony Linthicum <tony.linthicum@amd.com>
2381 * doc/extend.texi: Add fvect-cost-model flag.
2382 * common.opt (fvect-cost-model): New flag.
2383 * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
2384 cost fields in stmt_vec_info struct for STMT.
2385 * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
2386 fields in stmt_vec_info struct and access functions for the same.
2387 (TARG_COND_BRANCH_COST): Define cost of conditional branch.
2388 (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
2389 load, store and vector to scalar operation.
2390 (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
2391 (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
2392 (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
2393 (TARG_VEC_STORE_COST): Define cost of vector store.
2394 (vect_estimate_min_profitable_iters): Define new function.
2395 * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
2396 check to evaluate if loop iterations are less than minimum profitable
2397 iterations determined by cost model or minimum vect loop bound defined
2398 by user, whichever is more conservative.
2399 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
2400 run-time check to evaluate if loop iterations are less than minimum
2401 profitable iterations determined by cost model or minimum vect loop
2402 bound defined by user, whichever is more conservative.
2403 (vect_estimate_min_profitable_iterations): New function to estimate
2404 mimimimum iterartions required for vector version of loop to be
2405 profitable over scalar version.
2406 (vect_model_reduction_cost): New function.
2407 (vect_model_induction_cost): New function.
2408 (vect_model_simple_cost): New function.
2409 (vect_cost_strided_group_size): New function.
2410 (vect_model_store_cost): New function.
2411 (vect_model_load_cost): New function.
2412 (vectorizable_reduction): Call vect_model_reduction_cost during
2414 (vectorizable_induction): Call vect_model_induction_cost during
2416 (vectorizable_load): Call vect_model_load_cost during analysis phase.
2417 (vectorizable_store): Call vect_model_store_cost during analysis phase.
2418 (vectorizable_call, vectorizable_assignment, vectorizable_operation,
2419 vectorizable_promotion, vectorizable_demotion): Call
2420 vect_model_simple_cost during analysis phase.
2422 2007-06-08 Simon Baldwin <simonb@google.com>
2424 * reg-stack.c (get_true_reg): Readability change. Moved default case
2425 label into direct switch statement scope.
2427 2007-06-08 Simon Baldwin <simonb@google.com>
2429 * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
2430 in gcc_assert() with '==' comparison.
2432 2007-06-08 Uros Bizjak <ubizjak@gmail.com>
2434 * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
2435 TARGET_ABM handling of x86_popcnt variable.
2437 2007-06-08 Uros Bizjak <ubizjak@gmail.com>
2439 * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
2440 __builtin_copysignq and __builtin_infq built-in functions.
2442 2007-06-08 Uros Bizjak <ubizjak@gmail.com>
2444 * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
2445 SSE4.2 section. Correct built-in function names in SSE4A section.
2447 2007-06-08 Uros Bizjak <ubizjak@gmail.com>
2449 PR tree-optimization/32243
2450 * tree-vect-transform.c (vectorizable_type_promotion): Move check
2451 for ncopies after ratio check between nunits_out and nunits_in.
2452 (vectorizable_type_demotion): Remove single-use variable "scalar_type".
2454 2007-06-08 Dorit Nuzman <dorit@il.ibm.com>
2456 PR tree-optimization/32224
2457 * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
2458 vectorization upon a non GIMPLE_MODIFY_STMT.
2460 2007-06-08 Christian Bruel <christian.bruel@st.com>
2463 * config/sh/sh.md (doloop_end): New pattern and splitter.
2464 * loop-iv.c (simple_rhs_p): Check for hardware registers.
2466 2007-06-08 Zdenek Dvorak <dvorakz@suse.cz>
2469 * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
2471 (verify_dominators): Do not change dominance tree.
2473 2007-06-08 Kaz Kojima <kkojima@gcc.gnu.org>
2475 * config/sh/constraints.md: New file.
2476 * config/sh/sh.c: Include tm-constrs.h.
2477 (reg_class_from_letter): Remove.
2478 (prepare_cbranch_operands): Use satisfies_constraint_*
2479 function instead of macro.
2480 (andcosts, broken_move, sh_secondary_reload): Likewise.
2481 * config/sh/predicates.md (trapping_target_operand): Likewise.
2482 (and_operand, arith_operand, arith_reg_or_0_operand,
2483 cmp_operand, logical_operand, target_operand,
2484 ua_address_operand, ua_offset, xor_operand): Likewise.
2485 * config/sh/sh.md: Include constraints.md.
2486 (*movsicc_t_false): Use satisfies_constraint_* function
2488 (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
2489 lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
2490 movdi_const_16bit+1, beq, bne, *ptb): Likewise.
2491 * config/sh/sh.h (reg_class_from_letter): Remove prototype.
2492 (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
2493 (REG_CLASS_FROM_CONSTRAINT): Remove.
2494 (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
2495 CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
2496 CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
2497 CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
2498 CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
2499 (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
2500 function instead of macro.
2501 (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
2502 (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
2503 EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
2504 EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
2505 (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
2506 (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
2507 (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
2508 (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
2509 (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
2510 EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
2511 EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
2512 EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
2513 EXTRA_CONSTRAINT_STR): Likewise.
2514 (GO_IF_LEGITIMATE_INDEX): Fix indentation.
2516 2007-06-07 Geoffrey Keating <geoffk@apple.com>
2518 * config/i386/darwin.h (STACK_BOUNDARY): Define.
2520 2007-06-07 Simon Martin <simartin@users.sourceforge.net>
2523 * c-common.h (flag_cpp0x): Replaced by...
2524 (cxx_dialect): ... this new variable specifying the C++ dialect that
2526 * c-common.c (flag_cpp0x): Removed.
2527 (cxx_dialect): Defined.
2528 * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
2530 * c-opts.c (c_common_post_options): Likewise.
2531 (set_std_cxx98): Set cxx_dialect to cxx98.
2532 (set_std_cxx0x): Set cxx_dialect to cxx0x.
2534 2007-06-07 Geoffrey Keating <geoffk@apple.com>
2535 Hui-May Chang <hm.chang@apple.com>
2537 * doc/invoke.texi (Darwin Options): Update documentation for
2538 -mmacosx-version-min.
2539 * config.gcc (*-*-darwin*): Set extra_gcc_objs.
2540 * config/darwin-driver.c: New file.
2541 * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
2542 * config/t-darwin (darwin-driver.o): New rule.
2544 * config/darwin-c.c (version_as_macro): Ignore low digit.
2546 2007-06-07 Uros Bizjak <ubizjak@gmail.com>
2548 * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
2549 (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
2550 (CSGNMODE): New mode macro.
2551 (CSGNVMODE): New mode attribute.
2552 (copysign<mode>3): Rename from copysingsf3 and copysigndf3. Macroize
2553 expander using CSGNMODE mode macro. Handle TFmode.
2554 (copysign<mode>3_const): Rename from copysignsf3_const and
2555 copysigndf3_const. Macroize pattern using CSGNMODE mode macro.
2557 (copysign<mode>3_var): Rename from copysignsf3_var and
2558 copysigndf3_var. Macroize pattern using CSGNMODE mode macro.
2560 (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
2561 mode macro. Handle TFmode.
2562 * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
2563 (iortf3, *iortf3): Ditto.
2564 (xortf3, *xortf3): Ditto.
2565 * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
2566 TFmode and TImode masks.
2567 (ix86_expand_copysign): Expand TFmode copysign insn.
2568 (IX86_BUILTIN_INFQ): New.
2569 (IX86_BUILTIN_FABSQ): Ditto.
2570 (IX86_BUILTIN_COPYSIGNQ): Ditto.
2571 (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
2572 [__builtin_fabsq]: Ditto.
2573 [__builtin_copysignq]: Ditto.
2574 (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
2575 [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
2576 [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
2577 ix86_expand_binop_builtin().
2579 2007-06-07 Bob Wilson <bob.wilson@acm.org>
2581 * config/xtensa/lib1funcs.asm: Clean up whitespace.
2583 2007-06-07 Steve Ellcey <sje@cup.hp.com>
2586 * rtl.h (push_to_sequence2): New.
2587 * emit-rtl.c (push_to_sequence2): New.
2588 * function.c (assign_parm_data_all): Add new fields.
2589 (assign_parm_setup_block): Call push_to_sequence2 instead of
2591 (assign_parm_setup_reg): Ditto.
2592 (assign_parm_setup_stack): Ditto.
2593 (assign_parms_unsplit_complex): Ditto.
2594 (assign_parms): Change field name.
2596 2007-06-07 Zdenek Dvorak <dvorakz@suse.cz>
2598 PR tree-optimization/32220
2599 * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
2600 phi node is reached before defining statement.
2602 2007-06-06 Andrew Pinski <andrew_pinski@playstation.sony.com>
2605 * tree-vect-transform.c (vectorizable_call): Call update_stmt
2606 after changing the right hand side of the assignment.
2608 2007-06-06 Eric Christopher <echristo@apple.com>
2610 * config.gcc (i?86-*-darwin*): Remove arch parameter.
2611 (x86_64-*-darwin*): Ditto.
2612 * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
2613 (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2615 2007-06-06 Thomas Neumann <tneumann@users.sourceforge.net>
2617 * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
2619 (add_key): Likewise.
2620 * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
2621 * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
2623 * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
2624 (add_cost_one_coalesce): Likewise.
2625 * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
2626 variable names. Rename orig to orig_name for consistency.
2627 * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
2629 (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
2630 (record_equivalences_from_stmt): Likewise.
2631 * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
2632 the coding conventions.
2633 (memory_ssa_name_same): Likewise.
2634 (dse_optimize_stmt): Likewise.
2635 (dse_record_phis): Likewise.
2636 (dse_finalize_block): Likewise.
2637 * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
2638 keywords as variable names.
2639 (may_move_till): Cast according to the coding conventions.
2640 (force_move_till_expr): Avoid using C++ keywords as variable names.
2641 (force_move_till): Cast according to the coding conventions.
2642 (memref_hash): Likewise.
2643 (memref_eq): Likewise.
2644 (gather_mem_refs_stmt): Likewise.
2645 * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
2646 keywords as variable names.
2647 (idx_find_step): Cast according to the coding conventions.
2648 (idx_record_use): Likewise.
2649 (find_depends): Likewise.
2650 (prepare_decl_rtl): Likewise.
2651 (mbc_entry_hash): Likewise.
2652 (mbc_entry_eq): Likewise.
2653 * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
2654 (simplify_replace_tree): Avoid using C++ keywords as variable names.
2655 (idx_infer_loop_bounds): Cast according to the coding conventions.
2656 * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
2657 * tree-ssa-math-opts.c (occ_new ): Likwise.
2658 * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
2660 * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
2662 (add_use_op): Likewise.
2663 (add_vop): Likewise.
2664 (add_vuse_op): Likewise.
2665 (add_vdef_op): Likewise.
2666 (get_expr_operands): Likewise.
2667 (push_stmt_changes): Use type safe memory macros.
2668 * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
2669 keywords as variable names.
2670 (conditional_replacement): Likewise.
2671 (minmax_replacement): Likewise.
2672 (abs_replacement): Likewise.
2673 * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
2675 (insert_fake_stores): Avoid using C++ keywords as variable names.
2676 * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
2678 * tree-ssa-structalias.c (heapvar_lookup): Likewise.
2679 (heapvar_insert): Use type safe memory macros.
2680 (new_var_info): Cast according to the coding conventions.
2681 (new_constraint): Likewise.
2682 (remove_preds_and_fake_succs): Use type safe memory macros.
2683 * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
2685 (thread_single_edge): Likewise.
2686 (thread_through_loop_header): Likewise.
2688 2007-06-06 Eric Christopher <echristo@apple.com>
2690 * config/i386/i386.c (override_options): Move handling
2691 of TARGET_SUBTARGET* earlier.
2693 2007-06-06 Paolo Bonzini <bonzini@gnu.org>
2695 * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
2698 2007-06-06 Zdenek Dvorak <dvorakz@suse.cz>
2700 * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
2701 emited outside of basic block.
2702 * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
2704 * rtl.h (delete_insn_chain): Declaration changed.
2705 * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
2707 (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
2708 (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
2709 rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
2710 to delete_insn_chain.
2711 (rtl_verify_flow_info_1): Verify that the insns in header and footer
2712 do not have bb field set.
2713 (rtl_verify_flow_info): Verify that insns between basic blocks do not
2715 * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
2716 * cfgcleanup.c (try_optimize_cfg): Ditto.
2718 2007-06-06 Thomas Neumann <tneumann@users.sourceforge.net>
2720 * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
2721 (lambda_body_vector_new): Use type safe memory macros.
2722 (lambda_linear_expression_new): Likewise.
2723 (lambda_loopnest_new): Likewise.
2724 (lambda_lattice_new): Likewise.
2725 (replace_uses_equiv_to_x_with_y): Cast according to the coding
2726 conventions. Use type safe memory macros.
2727 * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
2728 (lambda_body_vector_s): Likewise.
2729 * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
2730 * lambda-trans.c (lambda_trans_matrix_new): Likewise.
2732 2007-06-06 Richard Guenther <rguenther@suse.de>
2734 * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
2735 if we need to schedule cfg_cleanup.
2736 (tree_ssa_forward_propagate_single_use_vars): Do so.
2738 2007-06-06 Ian Lance Taylor <iant@google.com>
2740 * fold-const.c (merge_ranges): If range_successor or
2741 range_predecessor fail, just return 0.
2743 2007-06-06 Uros Bizjak <ubizjak@gmail.com>
2745 PR tree-optimization/32216
2746 * tree-vectorizer.c (supportable_widening_operation): Determine
2747 signedness of FIX_TRUNC_EXPR from output operand.
2748 (supportable_narrowing_operation): Ditto.
2749 * tree-vect-generic.c (expand_vector_operations_1): Determine
2750 signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
2753 2007-06-06 Thomas Neumann <tneumann@users.sourceforge.net>
2755 * config/i386/i386.c (enum pta_flags): Move out of struct scope...
2756 (struct pta): ...from here. Change flags to unsigned to avoid
2757 excessive casting (as it is used as a bit mask).
2758 (override_options): Add casts according to the coding convenventions.
2759 (x86_64_elf_unique_section): Likewise.
2760 (examine_argument): Avoid using C++ keywords as variable names.
2761 (construct_container): Likewise.
2762 (legitimize_pic_address): Likewise.
2763 (get_dllimport_decl): Cast according to the coding conventions. Use
2764 type safe memory macros.
2765 (legitimize_address): Cast according to the coding conventions.
2766 (emit_i387_cw_initialization): Corrected the type of slot to enum
2768 (ix86_init_machine_status): Use type safe memory macros.
2769 (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
2770 (bdesc_pcmpistr): Likewise.
2771 (bdesc_crc32): Likewise.
2772 (bdesc_sse_3arg): Likewise.
2773 (bdesc_2arg): Likewise.
2774 (bdesc_1arg): Likewise.
2775 (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
2776 (ix86_expand_sse_pcmpistr): Likewise.
2777 (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
2778 (ix86_builtin_vectorized_function): Change the type of fn to unsigned
2779 int to match the langhook definition.
2780 (ix86_builtin_conversion): Change the type of code to unsigned init to
2781 match the langhook definition.
2782 (ix86_preferred_reload_class): Avoid using C++ keywords as variable
2784 (ix86_preferred_output_reload_class): Likewise.
2785 (ix86_cannot_change_mode_class): Likewise.
2786 (ix86_memory_move_cost): Likewise.
2787 (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
2788 avoid excessive casting later on.
2789 (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
2791 2007-06-06 Uros Bizjak <ubizjak@gmail.com>
2793 * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
2794 as flags setting insn.
2795 (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
2797 2007-06-06 Uros Bizjak <ubizjak@gmail.com>
2799 * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
2800 (UNSPEC_ROUND): New.
2801 ("sse4_1_round<mode>2"): New insn pattern.
2802 ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
2804 ("floor<mode>2"): Rename from floordf2 and floorsf2. Macroize
2805 expander using SSEMODEF mode macro. Expand using
2806 "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2807 ("ceil<mode>2"): Rename from ceildf2 and ceilsf2. Macroize
2808 expander using SSEMODEF mode macro. Expand using
2809 "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2810 ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2. Macroize
2811 expander using SSEMODEF mode macro. Expand using
2812 "sse4_1_round<mode>2" pattern for SSE4.1 targets.
2813 * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
2814 UNSPEC_ROUND instead of UNSPEC_ROUNDP.
2815 ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
2818 2007-06-06 Jan Sjodin <jan.sjodin@amd.com>
2819 Sebastian Pop <sebpop@gmail.com>
2821 * lambda.h (build_linear_expr): New.
2822 * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
2823 Use build_linear_expr, call fold and force_gimple_operand.
2824 (lambda_loopnest_to_gcc_loopnest): Check that there is
2825 something to insert.
2826 * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
2828 2007-06-05 Joerg Wunsch <j.gnu@uriah.heep.sax.de>
2830 PR preprocessor/23479
2831 * doc/extend.texi: Document the 0b-prefixed binary integer
2834 2007-06-05 Uros Bizjak <ubizjak@gmail.com>
2836 PR tree-optimization/32215
2837 * tree-vectorizer.c (supportable_widening_operation): Return false
2838 for unsupported FIX_TRUNC_EXPR tree code.
2839 (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
2841 2007-06-06 Nathan Froyd <froydnj@codesourcery.com>
2843 * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
2844 register on SPE targets. Change documentation to reflect
2846 * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
2847 Change FIXED_SCRATCH to 14 and document why we're keeping r14
2848 out of the register allocation pool.
2849 (rs6000_reg_live_or_pic_offset_p): New function.
2850 (rs6000_emit_prologue): Move the actual saving of LR up to free
2851 r0 for holding r11. Split saving of SPE 64-bit registers into
2852 its own case. Ensure that offsets will always be in-range for
2853 'evstdd' by using r11 as a scratch register to point at the start
2854 of the SPE save area. Save r11 if necessary, as it is the static
2856 (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
2857 into its own case. Ensure that offsets will always be in-range
2858 for 'evldd' by using r11 as a scratch register to point at the
2859 start of the SPE save area. Also adjust r11 when restoring
2860 the stack pointer to compensate for pre-loading r11.
2862 2007-06-05 Thomas Neumann <tneumann@users.sourceforge.net>
2864 * cfg.c (init_flow): Use type safe memory macros.
2865 (alloc_block): Likewise.
2866 (unchecked_make_edge): Likewise.
2867 (dump_flow_info): Avoid using C++ keywords as variable names.
2868 (copy_original_table_clear): Cast according to the coding conventions.
2869 (copy_original_table_set): Likewise.
2870 * cfgexpand (label_rtx_for_bb): Likewise.
2871 (expand_gimple_basic_block): Likewise.
2872 * cfghooks.c (dump_bb): Likewise.
2873 (lv_adjust_loop_header_phi): Avoid using C++ keywords as
2875 (lv_add_condition_to_bb): Likewise.
2876 * cfglayout (relink_block_chain): Cast according to the coding
2878 (fixup_reorder_chain): Likewise.
2879 (fixup_fallthru_exit_predecessor): Likewise.
2880 * cfgloop.c (glb_enum_p): Likewise.
2881 (get_exit_description): Likewise.
2882 (dump_recorded_exit): Likewise.
2883 * cfgloop.h (enum loop_estimation): Move out of struct scope...
2884 (struct loop): ... from here.
2885 * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
2887 * cfgrtl.c (rtl_create_basic_block): Likewise.
2888 (rtl_split_block): Likewise.
2889 (rtl_dump_bb): Likewise.
2890 (cfg_layout_split_block): Likewise.
2891 (init_rtl_bb_info): Use typesafe memory macros.
2893 * graphds.h (struct graph_edge): Renamed edge to graph_edge.
2894 * graphds.h: Updated all usages of edge to graph_edge.
2895 * graphds.c: Likewise.
2896 * cfgloopanal.c: Likewise.
2898 2007-06-05 Ian Lance Taylor <iant@google.com>
2900 * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
2901 PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
2902 (extract_range_from_assert): Set TREE_NO_WARNING when creating an
2904 (test_for_singularity): Likewise.
2906 2007-06-05 H.J. Lu <hongjiu.lu@intel.com>
2908 * config/i386/constraints.md ("Y2"): Replaced by ...
2910 * config/i386/i386.md: Likewise.
2911 * config/i386/mmx.md: Likewise.
2912 * config/i386/sse.md: Likewise.
2914 2007-06-05 H.J. Lu <hongjiu.lu@intel.com>
2916 * config/i386/constraints.md ("z"): Replaced by ...
2918 * config/i386/sse.md (sse4_1_blendvpd): Likewise.
2919 (sse4_1_blendvps): Likewise.
2920 (sse4_1_pblendvb): Likewise.
2921 (sse4_2_pcmpestr): Likewise.
2922 (sse4_2_pcmpestrm): Likewise.
2923 (sse4_2_pcmpestr_cconly): Likewise.
2924 (sse4_2_pcmpistr): Likewise.
2925 (sse4_2_pcmpistrm): Likewise.
2926 (sse4_2_pcmpistr_cconly): Likewise.
2928 2007-06-05 Razya Ladelsky <razya@il.ibm.com>
2930 * matrix-reorg.c (transform_access_sites): Fix computation.
2931 (transform_allocation_sites): Same.
2933 2007-06-05 Uros Bizjak <ubizjak@gmail.com>
2935 * config/i386/i386.c (override_options): Use
2936 TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
2938 2007-06-05 Uros Bizjak <ubizjak@gmail.com>
2940 * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
2941 (nonimm_not_xmm0_operand): Ditto.
2942 * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
2943 as operand[0] and operand[1] predicate. Use "nonimm_not_xmm0_operand"
2944 as operand[2] predicate. Require "z" class XMM register for
2945 operand[3]. Adjust asm template.
2946 ("sse4_1_blendvpd"): Ditto.
2947 ("sse4_1_pblendvb"): Ditto.
2948 * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
2949 force op2 into xmm0 register for variable blend instructions.
2951 2007-06-04 Tom Tromey <tromey@redhat.com>
2953 * c-tree.h (start_enum): Update.
2954 (build_enumerator): Likewise.
2955 * c-decl.c (enum_next_value): Removed.
2956 (enum_overflow): Likewise.
2957 (start_enum): Add c_enum_contents argument. Don't use globals.
2958 (build_enumerator): Likewise.
2959 * c-tree.h (struct c_enum_contents): New struct.
2961 2007-06-04 Tom Tromey <tromey@redhat.com>
2963 * c-common.c (c_common_get_alias_set): Fix indentation.
2965 2007-06-04 Ian Lance Taylor <iant@google.com>
2967 * tree-vrp.c (adjust_range_with_scev): When loop is not expected
2968 to overflow, reduce overflow infinity to regular infinity.
2969 (vrp_var_may_overflow): New static function.
2970 (vrp_visit_phi_node): Check vrp_var_may_overflow.
2972 2007-06-04 Kazu Hirata <kazu@codesourcery.com>
2974 * stor-layout.c (layout_type): Remove duplicate code.
2976 2007-06-04 Uros Bizjak <ubizjak@gmail.com>
2979 * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
2980 before build_common_builtin_nodes ().
2982 2007-06-04 Steve Ellcey <sje@cup.hp.com>
2985 * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
2987 2007-06-04 Jan Hubicka <jh@suse.cz>
2989 * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
2990 reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
2991 instead of _stat version.
2993 2007-06-03 Zdenek Dvorak <dvorakz@suse.cz>
2995 PR tree-optimization/32194
2996 * tree-predcom.c (determine_offset): Check that both references have
2999 2007-06-03 Zdenek Dvorak <dvorakz@suse.cz>
3001 * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
3002 Change dom_bbs to vector. Add argument to iterate_fix_dominators call.
3003 * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
3004 * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
3005 Add argument to iterate_fix_dominators call.
3006 (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
3007 * gcse.c (hoist_code): Change domby to vector.
3008 * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
3009 Add argument to iterate_fix_dominators call.
3010 * loop-doloop.c (doloop_modify): Changed recount_dominator to
3011 recompute_dominator.
3012 * lambda-code.c (perfect_nestify): Ditto.
3013 * cfgloopanal.c: Include graphds.h.
3014 (struct edge, struct vertex, struct graph, dump_graph, new_graph,
3015 add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
3016 (mark_irreducible_loops): Use graphds_scc. Remove argument from
3018 * graphds.c: New file.
3019 * graphds.h: New file.
3020 * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
3021 (get_dominated_by, get_dominated_by_region): Change return type to
3023 (verify_dominators): Recompute all dominators and compare the results.
3024 (recount_dominator): Renamed to ...
3025 (recompute_dominator): ... this. Do not check that the block is
3027 (iterate_fix_dominators): Reimplemented.
3028 (prune_bbs_to_update_dominators, root_of_dom_tree,
3029 determine_dominators_for_sons): New functions.
3030 * et-forest.c (et_root): New function.
3031 * et-forest.h (et_root): Declare.
3032 * Makefile.in (graphds.o): Add.
3033 (cfgloopanal.o): Add graphds.h dependency.
3034 (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
3035 * basic-block.h (get_dominated_by, get_dominated_by_region,
3036 iterate_fix_dominators): Declaration changed.
3037 (recount_dominator): Renamed to ...
3038 (recompute_dominator): ... this.
3039 * tree-ssa-threadupdate.c (thread_block): Free dominance info.
3040 (thread_through_all_blocks): Do not free dominance info.
3042 2007-06-03 Andreas Schwab <schwab@suse.de>
3044 * config/m68k/m68k.c (override_options): Don't override
3046 * config/m68k/m68k-modes.def (SF, DF): Define to use
3047 motorola_single_format and motorola_double_format, resp.
3048 * real.c (motorola_single_format): Renamed from
3049 coldfire_single_format.
3050 (motorola_double_format): Renamed from coldfire_double_format.
3051 (encode_ieee_extended): Generate a proper canonical NaN image
3052 respecting canonical_nan_lsbs_set.
3053 (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
3055 * real.h: Adjust declarations.
3057 2007-06-03 Kaz Kojima <kkojima@gcc.gnu.org>
3060 * config/sh/sh.md (symGOT_load): Don't schedule insns when
3061 the symbol is generated with the stack protector.
3063 2007-06-03 Kazu Hirata <kazu@codesourcery.com>
3065 * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
3066 (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
3068 * doc/extend.texi (interrupt): Mention m68k.
3070 2007-06-02 Uros Bizjak <ubizjak@gmail.com>
3072 * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
3073 safe_vector_operand() if input operand is VECTOR_MODE_P operand.
3074 (ix86_expand_sse_pcmpestr): Do not check operands for
3075 "register_operand", when insn operand predicate is "register_operand".
3076 (ix86_expand_sse_pcmpistr): Ditto.
3078 2007-06-02 H.J. Lu <hongjiu.lu@intel.com>
3079 Uros Bizjak <ubizjak@gmail.com>
3081 * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
3082 (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
3083 (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
3084 (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
3085 * config/i386/constraints.md ("z"): New register constraint
3086 for members of SSE_FIRST_REG class.
3087 * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
3088 * config/i386/i386.c (regclass_map): Change class of %xmm0 to
3089 SSE_FIRST_REG class.
3090 (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
3091 (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
3092 (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
3093 (IX86_BUILTIN_PCMPESTRM128): Likewise.
3094 (IX86_BUILTIN_PCMPESTRA128): Likewise.
3095 (IX86_BUILTIN_PCMPESTRC128): Likewise.
3096 (IX86_BUILTIN_PCMPESTRO128): Likewise.
3097 (IX86_BUILTIN_PCMPESTRS128): Likewise.
3098 (IX86_BUILTIN_PCMPESTRZ128): Likewise.
3099 (IX86_BUILTIN_PCMPISTRI128): Likewise.
3100 (IX86_BUILTIN_PCMPISTRM128): Likewise.
3101 (IX86_BUILTIN_PCMPISTRA128): Likewise.
3102 (IX86_BUILTIN_PCMPISTRC128): Likewise.
3103 (IX86_BUILTIN_PCMPISTRO128): Likewise.
3104 (IX86_BUILTIN_PCMPISTRS128): Likewise.
3105 (IX86_BUILTIN_PCMPISTRZ128): Likewise.
3106 (struct builtin_description): Change "flag" field to unsigned.
3107 (bdesc_pcmpestr): New builtin description table.
3108 (bdesc_pcmpistr): Likewise.
3109 (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
3110 v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
3111 Initialize pcmp[ei]str[im] insns for SSE4.2.
3112 (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
3113 (ix86_expand_sse_pcmpistr): Likewise.
3114 (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
3115 * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
3116 (UNSPEC_PCMPISTR): Likewise.
3117 * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
3118 (sse4_2_pcmpestri):New isns pattern.
3119 (sse4_2_pcmpestrm): Likewise.
3120 (sse4_2_pcmpestr_cconly): Likewise.
3121 (sse4_2_pcmpistr): New insn patern and splitter.
3122 (sse4_2_pcmpistri):New isns pattern.
3123 (sse4_2_pcmpistrm): Likewise.
3124 (sse4_2_pcmpistr_cconly): Likewise.
3125 * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
3128 2007-06-01 David Daney <ddaney@avtrex.com>
3130 * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
3131 LOADGP_ABSOLUTE and not binds_local_p.
3133 2007-06-01 Geoffrey Keating <geoffk@apple.com>
3135 * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
3137 2007-06-01 Ian Lance Taylor <iant@google.com>
3139 * tree-vrp.c (compare_name_with_value): Always set
3140 used_strict_overflow if we get a result from the variable itself.
3142 2007-06-01 Ian Lance Taylor <iant@google.com>
3144 PR rtl-optimization/31455
3145 * lower-subreg.c (find_decomposable_subregs): Don't decompose
3146 subregs which have a cast between modes which are not tieable.
3148 2007-06-01 Uros Bizjak <ubizjak@gmail.com>
3150 * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
3151 breaks after return statements.
3153 2007-06-01 Kaz Kojima <kkojima@gcc.gnu.org>
3155 * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
3156 only after no_new_pseudos.
3158 2007-05-31 Eric Christopher <echristo@apple.com>
3160 * expr.c (convert_move): Assert that we don't have a BLKmode
3162 (store_expr): Handle BLKmode moves by calling emit_block_move.
3164 2007-05-31 Daniel Berlin <dberlin@dberlin.org>
3166 * c-typeck.c (build_indirect_ref): Include type in error message.
3167 (build_binary_op): Pass types to binary_op_error.
3168 * c-common.c (binary_op_error): Take two type arguments, print out
3170 * c-common.h (binary_op_error): Update prototype.
3172 2007-05-31 H.J. Lu <hongjiu.lu@intel.com>
3174 * config/i386/i386.c: Correct coments on -mno-sse4.
3176 2007-05-31 H.J. Lu <hongjiu.lu@intel.com>
3178 * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
3179 (x86_64-*-*): Likewise.
3180 * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
3181 (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
3182 (OPTION_MASK_ISA_SSE_UNSET): Likewise.
3183 (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
3184 (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
3185 (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
3186 (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
3187 (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
3188 (OPTION_MASK_ISA_SSE4): Likewise.
3189 (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
3190 (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
3191 (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET. Handle SSE4.2.
3192 (override_options): Support SSE4.2.
3193 (ix86_build_const_vector): Support SImode and DImode.
3194 (ix86_build_signbit_mask): Likewise.
3195 (ix86_expand_int_vcond): Support V2DImode.
3196 (IX86_BUILTIN_CRC32QI): New for SSE4.2.
3197 (IX86_BUILTIN_CRC32HI): Likewise.
3198 (IX86_BUILTIN_CRC32SI): Likewise.
3199 (IX86_BUILTIN_CRC32DI): Likewise.
3200 (IX86_BUILTIN_PCMPGTQ): Likewise.
3201 (bdesc_crc32): Likewise.
3202 (bdesc_sse_3arg): Likewise.
3203 (ix86_expand_crc32): Likewise.
3204 (ix86_init_mmx_sse_builtins): Support SSE4.2.
3205 (ix86_expand_builtin): Likewise.
3206 * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
3207 __SSE4_2__ for -msse4.2.
3208 * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
3209 (CRC32MODE): Likewise.
3210 (crc32modesuffix): Likewise.
3211 (crc32modeconstraint): Likewise.
3212 (sse4_2_crc32<mode>): Likewise.
3213 (sse4_2_crc32di): Likewise.
3214 * config/i386/i386.opt (msse4.2): New for SSE4.2.
3216 * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
3217 * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
3218 * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
3219 (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
3220 (vcondu<mode>): Likewise.
3221 * doc/extend.texi: Document SSE4.2 built-in functions.
3222 * doc/invoke.texi: Document -msse4.2/-msse4.
3224 2007-05-31 Zdenek Dvorak <dvorakz@suse.cz>
3226 PR tree-optimization/32160
3227 * tree-predcom.c (predcom_tmp_var): New function. Mark created
3228 variable as gimple reg.
3229 (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
3231 2007-05-31 Kazu Hirata <kazu@codesourcery.com>
3233 * gcc.c (main): Don't consider linker options when issuing the
3234 warning about a linker input file not being used.
3236 2007-05-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
3238 * tree-vrp.c (compare_names): Initialize sop.
3240 2007-05-30 Dirk Mueller <dmueller@suse.de>
3242 * cgraphunit.c (cgraph_analyze_function): Remove
3243 computation of inline parameters.
3245 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3247 * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
3249 2007-05-30 Richard Sandiford <richard@codesourcery.com>
3251 * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
3252 Add vx-common.h. Include vxworks.h between vx-common.h and
3254 * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
3256 * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
3257 (TARGET_ASM_DESTRUCTOR): Likewise.
3258 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
3259 instead of arm_is_xscale. Use VXWORKS_OS_CPP_BUILTINS.
3260 (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
3261 (CC1_SPEC): Add -tstrongarm. Line up backslashes.
3262 (VXWORKS_ENDIAN_SPEC): Define.
3263 (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
3264 (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
3265 VXWORKS_* equivalents.
3266 (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
3267 (ASM_FILE_START): Delete.
3268 (TARGET_VERSION): Reformat.
3269 (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
3270 (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
3271 * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
3272 (FPBIT, DPBIT): Define.
3273 (fp-bit.c, dp-bit.c): New rules.
3274 (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
3275 (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
3276 * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
3277 * config/arm/arm.h: Include vxworks-dummy.h.
3278 * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
3279 Mark with ATTRIBUTE_UNUSED.
3280 (arm_override_options): Do not allow VxWorks RTP PIC to be used
3281 for Thumb. Force r9 to be the PIC register for VxWorks RTPs and
3282 make it incompatible with -msingle-pic-base.
3283 (arm_function_ok_for_sibcall): Return false for calls that might
3284 go through a VxWorks PIC PLT entry.
3285 (require_pic_register): New function, split out from...
3286 (legitimize_pic_address): ...here. Do not use GOTOFF accesses
3288 (arm_load_pic_register): Handle the VxWorks RTP initialization
3289 sequence. Use pic_reg as a shorthand for cfun->machine->pic_reg.
3290 (arm_emit_call_insn): New function.
3291 (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
3292 * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
3293 (pic_offset_arm): New pattern.
3294 (call, call_value): Use arm_emit_call_insn.
3295 (call_internal, call_value_internal): New expanders.
3296 * config/arm/lib1funcs.asm (__PLT__): Define to empty for
3297 VxWorks unless __PIC__.
3299 2007-05-30 Eric Christopher <echristo@gmail.com>
3301 * genrecog.c: Include regs.h in generated file.
3302 * genemit.c: Ditto. Fix up formatting.
3303 * config/mn10300/constraints.md: New.
3304 * config/mn10300/mn10300.md: Include.
3305 * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
3306 Fix up for removed macro.
3307 * config/mn10300/predicates.md (call_address_operand): Ditto.
3308 * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
3309 (CONST_OK_FOR_I): Ditto.
3310 (CONST_OK_FOR_J): Ditto.
3311 (CONST_OK_FOR_K): Ditto.
3312 (CONST_OK_FOR_L): Ditto.
3313 (CONST_OK_FOR_M): Ditto.
3314 (CONST_OK_FOR_N): Ditto.
3315 (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
3319 (EXTRA_CONSTRAINT): Ditto.
3321 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3323 * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
3325 * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
3326 OPTION_MASK_ISA_64BIT.
3327 * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
3329 2007-05-30 Richard Guenther <rguenther@suse.de>
3332 * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
3333 types for comparison.
3334 * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
3335 with original typed arguments.
3336 * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
3338 2007-05-30 Jakub Jelinek <jakub@redhat.com>
3340 PR tree-optimization/31769
3341 * except.c (duplicate_eh_regions): Clear prev_try if
3342 ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
3344 2007-05-30 Zdenek Dvorak <dvorakz@suse.cz>
3346 * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
3347 * tree-ssa-sink.c (statement_sink_location): Return basic block and
3348 bsi of the location where statements should be inserted.
3349 (sink_code_in_bb): Take bsi from statement_sink_location.
3350 * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
3351 instead of bsi_start.
3352 * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
3354 * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
3355 (bsi_move_before): Document inconsistency with bsi_move_after.
3356 (tree_redirect_edge_and_branch): Do not create labels if not necessary.
3358 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
3360 * config/i386/i386.h (TARGET_ABM): New define.
3361 (TARGET_POPCNT): Ditto.
3362 (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
3363 New temporary defines to redefine from OPTION_ISA_* defines.
3364 (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
3365 New temporary defines to redefine from OPTION_MASK_ISA_* defines.
3366 (ix86_isa_flags): New extern int declaration.
3367 (TARGET_SUBTARGET_DEFAULT): New define.
3368 (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
3369 (TARGET_SUBTARGET32_DEFAULT): Ditto.
3370 (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
3371 (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
3372 * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
3373 * config/i386/darwin.h: Change TARGET_64BIT define to
3376 * config/i386/i386.opt (m3dnowa): Define as undocumented option
3377 using existing "ix86_isa_flags" varible.
3378 (m32, m64): Use existing "ix86_isa_flags" variable.
3379 (mmmx, m3dnow): Ditto.
3380 (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
3381 (mabm): Define as non-negative option using "x86_abm" variable.
3382 (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
3384 * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
3385 Rewrite feature test bitmap.
3386 (ix86_isa_flags): New initialized global int varible.
3387 (ix86_isa_flags_explicit): New static int variable.
3388 (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
3389 msse, msse2, msse3, msse4.1 and msse4a option is processed. Change
3390 i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
3391 target_flags_explicit.
3392 (override_options): Remove "target_enable" and "target_disable" fields
3393 from "struct ptt". Update processor_target_table accordingly. Remove
3394 PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
3395 defined and rearrange PTA_* bits. Use "ix86_isa_flags" instead of
3396 "target_flags" and "ix86_isa_flags_explicit" instead of
3397 "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
3398 MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*. Set "x86_abm" to true when
3399 PTA_ABM is set in processor_alias_table flags entry. Set "x86_popcnt"
3400 to true when either of PTA_POPCNT or PTA_ABM is set in
3401 processor_alias_table flags entry. Set "x86_prefetch_sse" to true
3402 when either of PTA_PREFETCH_SSE or PTA_SSE is set in
3403 processor_alias_table flags entry. Remove handling of
3404 "target_enable" and "target_disable" fields of processor_target_table.
3405 Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
3406 targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
3407 Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
3408 targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
3409 (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
3411 (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
3413 2007-05-29 David Daney <ddaney@avtrex.com>
3416 * config/mips/mips.c (mips_output_mi_thunk): Emit
3417 NOTE_INSN_PROLOGUE_END at beginning of the thunk.
3419 2007-05-29 Hui-May Chang <hm.chang@apple.com>
3420 * config/i386/i386.c (ix86_function_regparm): Added checking of
3421 ix86_force_align_arg_pointer to determine the number of
3422 register parameters.
3424 2007-05-29 Zdenek Dvorak <dvorakz@suse.cz>
3426 * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
3427 (SET_DR_MISALIGNMENT): New.
3428 * tree-vect-analyze.c (vect_compute_data_ref_alignment,
3429 vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
3430 Use SET_DR_MISALIGNMENT.
3431 * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
3433 * tree-data-ref.c (create_data_ref, compute_all_dependences,
3434 find_loop_nest): Export.
3435 * tree-data-ref.h (struct data_reference): Change aux field to pointer.
3436 (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
3437 * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
3438 (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
3440 (struct mem_ref): Add field reuse_distance.
3441 (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
3442 Initialize reuse_distance field.
3443 (issue_prefetch_ref): Select temporality of prefetch according to
3445 (volume_of_references, volume_of_dist_vector, add_subscript_strides,
3446 self_reuse_distance, determine_loop_nest_reuse): New functions.
3447 (loop_prefetch_arrays): Call determine_loop_nest_reuse.
3448 (tree_ssa_prefetch_arrays): Dump L2 cache size.
3449 * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
3452 2007-05-29 Daniel Berlin <dberlin@dberlin.org>
3454 * tree-ssa-alias.c: Add aliasing overview.
3456 2007-05-29 Zuxy Meng <zuxy.meng@gmail.com>
3457 Danny Smith <dannysmith@users.sourceforge.net>
3460 * config/i386/t-crtfm: Compile crtfastmath.o with
3461 -minline-all-stringops.
3462 * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
3463 * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
3465 2007-05-28 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
3467 * doc/md.texi: Document constraints on HP PA-RISC.
3469 * pa/constraints.md: New file.
3470 * pa.md: Include constraints.md.
3471 * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
3472 (integer_store_memory_operand, ldil_cint_p): New functions.
3473 * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
3474 * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
3475 IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
3476 * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
3477 * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
3479 2007-05-28 Andrew Pinski <Andrew_pinski@playstation.sony.com>
3482 * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
3483 case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
3484 case POSTDECREMENT_EXPR>): Return the error_mark_node
3485 if either the real or imaginary parts would an
3488 2007-05-28 Daniel Berlin <dberlin@dberlin.org>
3490 * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
3491 name when we remove it from a call.
3493 2007-05-28 Kazu Hirata <kazu@codesourcery.com>
3495 * targhooks.c (default_narrow_bitfield): Remove.
3496 * targhooks.h: Remove the prototype for
3497 default_narrow_bitfield.
3499 * langhooks-def.h: Remove the prototype for
3500 hook_get_alias_set_0.
3501 * langhooks.c (hook_get_alias_set_0): Remove.
3503 * global.c (EXECUTE_IF_CONFLICT): Remove.
3505 2007-05-28 Andrew Pinski <andrew_pinski@playstation.sony.com>
3508 * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
3509 return true when truth_value_p is true and the type
3512 2007-05-28 Gerald Pfeifer <gerald@pfeifer.com>
3514 * doc/install.texi (Prerequisites): We no longer require Autoconf
3515 2.13 for the top-level.
3517 2007-05-28 Uros Bizjak <ubizjak@gmail.com>
3519 * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
3520 memory access via x86_expand_vector_move_misalign() only for
3521 TImode values on 32-bit targets.
3523 2007-05-28 Razya Ladelsky <razya@il.ibm.com>
3525 * matrix-reorg.c: New file. Implement matrix flattening and
3526 transposing optimization.
3527 * tree-pass.h: Add matrix reorg pass.
3528 * common.opt: Add fipa-mreorg flag.
3529 * Makefile.in: Add matrix-reorg.c.
3530 * passes.c: Add matrix reorg pass.
3531 * varpool.c (add_new_static_var): New function.
3532 * cgraph.h (add_new_static_var): Declare.
3534 2007-05-27 Eric Christopher <echristo@apple.com>
3536 * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
3537 sp_offset depending on stack size. Save r12 depending
3538 on registers we're saving later.
3539 (rs6000_emit_epilogue): Update sp_offset depending only
3542 2007-05-27 Zdenek Dvorak <dvorakz@suse.cz>
3544 * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
3545 * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
3546 * ifcvt.c (if_convert): Ditto.
3547 * tree-ssa-threadupdate.c (thread_block): Ditto.
3548 (thread_through_all_blocks): Ditto. Assert that loops were analysed.
3549 * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
3550 verify_loop_closed_ssa): Check number_of_loops instead of
3552 * predict.c (tree_estimate_probability): Ditto.
3553 * tree-if-conv.c (main_tree_if_conversion): Ditto.
3554 * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
3555 * modulo-sched.c (sms_schedule): Ditto.
3556 * tree-scalar-evolution.c (scev_const_prop): Ditto.
3557 (scev_finalize): Do not do anything if scev analysis was not
3559 * cfgloopanal.c (mark_irreducible_loops): Do not check whether
3560 current_loops == NULL.
3561 (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
3562 * loop-init.c (loop_optimizer_init): Do not free current_loops when
3564 (loop_optimizer_finalize): Assert that loops were analyzed.
3565 (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
3566 rtl_doloop): Check number_of_loops instead of current_loops.
3567 * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
3568 current_loops == NULL.
3569 (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
3570 gate_tree_vectorize tree_linear_transform, check_data_deps,
3571 tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
3572 tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
3573 Check number_of_loops instead of current_loops.
3574 (tree_ssa_loop_done): Do not check whether current_loops == NULL.
3575 * tree-ssa-pre.c (fini_pre): Do not take do_fre argument. Always
3576 free loops if available.
3577 (execute_pre): Do not pass do_fre to fini_pre.
3579 2007-05-27 Tobias Burnus <burnus@net-b.de>
3582 * real.c (mpfr_from_real): Fix sign of -Inf.
3584 2007-05-27 H.J. Lu <hongjiu.lu@intel.com>
3586 * tree-vect-transform.c (vectorizable_conversion): Initialize
3587 tree_code variables to ERROR_MARK.
3588 (vectorizable_type_demotion): Likewise.
3589 (vectorizable_type_promotion): Likewise.
3591 2007-05-26 Uros Bizjak <ubizjak@gmail.com>
3594 * config/i386/i386.md (movti): Handle push operands via
3597 2007-05-26 Kazu Hirata <kazu@codesourcery.com>
3599 * basic-block.h: Remove the prototype for merge_seq_blocks.
3600 * cfgcleanup.c (merge_seq_blocks): Remove.
3602 * tree-flow.h: Remove the prototype for is_aliased_with.
3603 * tree-ssa-alias.c (is_aliased_with): Remove.
3605 2007-05-26 H.J. Lu <hongjiu.lu@intel.com>
3607 * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
3609 * config/i386/i386.c (ix86_expand_sse4_unpack): New.
3611 * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
3612 ix86_expand_sse4_unpack if SSE4.1 is enabled.
3613 (vec_unpacks_hi_v16qi): Likewise.
3614 (vec_unpacku_lo_v16qi): Likewise.
3615 (vec_unpacks_lo_v16qi): Likewise.
3616 (vec_unpacku_hi_v8hi): Likewise.
3617 (vec_unpacks_hi_v8hi): Likewise.
3618 (vec_unpacku_lo_v8hi): Likewise.
3619 (vec_unpacks_lo_v8hi): Likewise.
3620 (vec_unpacku_hi_v4si): Likewise.
3621 (vec_unpacks_hi_v4si): Likewise.
3622 (vec_unpacku_lo_v4si): Likewise.
3623 (vec_unpacks_lo_v4si): Likewise.
3625 2007-05-26 Kazu Hirata <kazu@codesourcery.com>
3627 * c-typeck.c, config/arm/arm.c, config/darwin.c,
3628 config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
3629 omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
3630 follow spelling conventions in various
3631 warning/error/diagnostic messages.
3633 * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
3634 df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
3635 fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
3636 tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
3637 tree-vrp.c: Fix comment typos. Follow spelling conventions.
3638 * doc/tm.texi: Follow spelling conventions.
3640 2007-05-25 Andrew Pinski <andrew_pinski@playstation.sony.com>
3643 * tree-ssa-forwprop.c
3644 (forward_propagate_addr_into_variable_array_index): Remove
3645 the lhs argument. Use the type of def_rhs instead of lhs.
3646 (forward_propagate_addr_expr_1): Update use of
3647 forward_propagate_addr_into_variable_array_index.
3649 2007-05-25 Sandra Loosemore <sandra@codesourcery.com>
3650 Nigel Stephens <nigel@mips.com>
3652 * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
3653 function attributes, "far" being an alias for "long_call".
3654 (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
3655 (mips_near_type_p, mips_far_type_p): New.
3656 (mips_comp_type_attributes): New function to check that attributes
3657 attached to a function type are compatible.
3658 (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
3659 TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
3660 to the target function of the thunk.
3661 (mips_encode_section_info): Check for "near" and "far" function
3662 attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
3664 * config/mips/predicates.md (const_call_insn_operand): Test only
3665 SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
3667 * doc/extend.texi (Function Attributes): Document MIPS "near" and
3670 * testsuite/gcc.target/mips/near-far-1.c: New test case.
3671 * testsuite/gcc.target/mips/near-far-2.c: New test case.
3672 * testsuite/gcc.target/mips/near-far-3.c: New test case.
3673 * testsuite/gcc.target/mips/near-far-4.c: New test case.
3675 2007-05-25 Eric Christopher <echristo@apple.com>
3677 * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
3678 to x86-darwin configurations.
3679 * config/i386/t-darwin: Add softfp support.
3680 * config/i386/t-darwin64: Ditto.
3681 * config/i386/sfp-machine.h: If mach then don't use
3682 aliasing, emit a stub to call.
3684 2007-05-25 Kazu Hirata <kazu@codesourcery.com>
3686 * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
3687 haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
3688 tree-predcom.c, tree-ssa-alias-warnings.c,
3689 tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
3690 comment typos. Follow spelling conventions.
3691 * doc/cpp.texi, doc/invoke.texi: Fix typos.
3693 2007-05-26 Uros Bizjak <ubizjak@gmail.com>
3696 * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
3697 constants into memory. Expand unaligned memory references for
3698 SSE modes via x86_expand_vector_move_misalign() function.
3700 2007-05-25 Uros Bizjak <ubizjak@gmail.com>
3702 * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
3703 "memory" attribute for "sseishft" type insn without operands[2].
3705 2007-05-25 Dirk Mueller <dmueller@suse.de>
3706 Marcus Meissner <meissner@suse.de>
3708 * doc/extend.texi (alloc_size): New attribute.
3709 * c-common.c (handle_alloc_size_attribute): New.
3710 * tree-object-size.c (alloc_object_size): Use alloc_size
3711 attribute, if available.
3713 2007-05-25 H.J. Lu <hongjiu.lu@intel.com>
3715 * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
3717 (__builtin_ia32_vec_ext_v2di): Likewise.
3718 (__builtin_ia32_vec_ext_v4si): Likewise.
3719 (__builtin_ia32_vec_ext_v8hi): Likewise.
3720 (__builtin_ia32_vec_ext_v16qi): Likewise.
3721 (__builtin_ia32_vec_set_v8hi): Likewise.
3723 2007-05-25 H.J. Lu <hongjiu.lu@intel.com>
3725 * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
3727 2007-05-25 Richard Sandiford <richard@codesourcery.com>
3729 * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
3730 (arm_is_longcall_p): Rename to...
3731 (arm_is_long_call_p): ...this. Take a single tree argument and
3733 * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
3734 (CUMULATIVE_ARGS): Remove call_cookie.
3735 (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
3736 (ENCODED_LONG_CALL_ATTR_P): Delete.
3737 (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
3738 LONG_CALL_FLAG_CHAR cases.
3739 (ARM_DECLARE_FUNCTION_SIZE): Delete.
3740 * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
3741 ARM_DECLARE_FUNCTION_SIZE.
3742 * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
3743 (arm_function_arg): Return const0_rtx for VOIDmode arguments.
3744 (arm_encode_call_attribute, current_file_function_operand): Delete.
3745 (arm_function_in_section_p): New function.
3746 (arm_is_longcall_p): Rename to...
3747 (arm_is_long_call_p): ...this. Take the target function as a single
3748 argument and return a bool. Do not rely on call cookies. Check
3749 whether the target symbol is in the same section as the current
3750 function, not just the same compilation unit.
3751 (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
3752 (arm_encode_section_info): Don't encode a call type.
3753 * config/arm/arm.md (call, call_value): Update calls to
3754 arm_is_long(_)call_p. Simplify logic.
3755 (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
3756 Update calls to arm_is_long(_)call_p.
3758 2007-05-25 Richard Guenther <rguenther@suse.de>
3760 PR tree-optimization/31982
3761 * tree-ssa-forwprop.c
3762 (forward_propagate_addr_into_variable_array_index): Handle arrays
3763 with element size one.
3765 2007-05-24 Andrew Pinski <andrew_pinski@playstation.sony.com>
3767 * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
3768 (umulsi3_highpart): Likewise.
3770 2007-05-24 Ian Lance Taylor <iant@google.com>
3772 PR rtl-optimization/32069
3773 * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
3776 2007-05-24 Ollie Wild <aaw@google.com>
3778 * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
3781 2007-05-24 Richard Sandiford <rsandifo@nildram.co.uk>
3783 * postreload-gcse.c (reg_changed_after_insn_p): New function.
3784 (oprs_unchanged_p): Use it to check all registers in a REG.
3785 (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
3786 (reg_set_between_after_reload_p): Delete.
3787 (reg_used_between_after_reload_p): Likewise.
3788 (reg_set_or_used_since_bb_start): Likewise.
3789 (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
3790 and reg_used_between_p instead of reg_set_or_used_since_bb_start.
3791 Use reg_set_between_p instead of reg_set_between_after_reload_p.
3792 * rtlanal.c (reg_set_p): Check whether REG overlaps
3793 regs_invalidated_by_call, rather than just checking the
3794 membership of REGNO (REG).
3796 2007-05-24 Zdenek Dvorak <dvorakz@suse.cz>
3798 * doc/passes.texi: Document predictive commoning.
3799 * doc/invoke.texi (-fpredictive-commoning): Document.
3800 * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
3801 * tree-ssa-loop-im.c (get_lsm_tmp_name): Export. Allow
3802 adding indices to the generated name.
3803 (schedule_sm): Pass 0 to get_lsm_tmp_name.
3804 * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
3805 * tree-pretty-print.c (op_symbol_1): Renamed to ...
3806 (op_symbol_code): ... and exported.
3807 (dump_omp_clause, op_symbol): Use op_symbol_code
3808 instead of op_symbol_1.
3809 * tree-pass.h (pass_predcom): Declare.
3810 * timevar.def (TV_PREDCOM): New timevar.
3811 * tree-ssa-loop.c (run_tree_predictive_commoning,
3812 gate_tree_predictive_commoning, pass_predcom): New.
3813 * tree-data-ref.c (find_data_references_in_loop): Find the
3814 references in dominance order.
3815 (canonicalize_base_object_address): Ensure that the result has
3817 (dr_analyze_innermost): Export.
3818 (create_data_ref): Code to fail for references with invariant
3820 (find_data_references_in_stmt): ... here.
3821 * tree-data-ref.h (dr_analyze_innermost): Declare.
3822 * tree-affine.c: Include tree-gimple.h and hashtab.h.
3823 (aff_combination_find_elt, name_expansion_hash,
3824 name_expansion_eq, tree_to_aff_combination_expand,
3825 double_int_constant_multiple_p, aff_combination_constant_multiple_p):
3827 * tree-affine.h (aff_combination_constant_multiple_p,
3828 tree_to_aff_combination_expand): Declare.
3829 * tree-predcom.c: New file.
3830 * common.opt (fpredictive-commoning): New option.
3831 * tree-flow.h (op_symbol_code, tree_predictive_commoning,
3832 stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
3833 * Makefile.in (tree-predcom.o): Add.
3834 (tree-affine.o): Add TREE_GIMPLE_H dependency.
3835 * passes.c (init_optimization_passes): Add dceloop after
3836 copy propagation in loop optimizer. Add predictive commoning
3837 to loop optimizer passes.
3839 2007-05-24 H.J. Lu <hongjiu.lu@intel.com>
3841 * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
3844 2007-05-24 Jan Hubicka <jh@suse.cz>
3846 * gengenrtl.c (gendecl, gendef): Output the gens annotated for
3848 (genheader): Include statistics.h.
3850 * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
3852 * print-rtl.c (flag_dump_unnumbered): Update comments.
3853 (print_rtl): Fix my previous change.
3854 * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
3857 2007-05-24 Zdenek Dvorak <dvorakz@suse.cz>
3860 * tree-ssa-threadupdate.c (thread_through_loop_header): Use
3862 (thread_through_all_blocks): Call initialize_original_copy_tables
3863 and free_original_copy_tables.
3864 * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
3866 * tree-cfg.c (tree_duplicate_sese_region): Ditto.
3867 * cfghooks.c (duplicate_block): Use get_loop_copy.
3868 * cfg.c: Include cfgloop.h.
3869 (loop_copy): New hash table.
3870 (initialize_original_copy_tables): Initialize loop_copy table.
3871 (free_original_copy_tables): Free loop_copy table.
3872 (copy_original_table_clear, copy_original_table_set,
3873 set_loop_copy, get_loop_copy): New functions.
3874 (set_bb_original, set_bb_copy): Use copy_original_table_set.
3875 * cfgloop.h (struct loop): Remove copy field.
3876 * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
3877 * basic-block.h (set_loop_copy, get_loop_copy): Declare.
3879 2007-05-24 H.J. Lu <hongjiu.lu@intel.com>
3881 * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
3882 -msse/-msse2/-msse3.
3884 2007-05-24 H.J. Lu <hongjiu.lu@intel.com>
3886 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
3887 __builtin_ia32_vec_set_v2di with MASK_64BIT.
3889 2007-05-24 Danny Smith <dannysmith@users.sourceforge.net>
3892 * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
3893 * targhooks.h (default_mangle_decl_assembler_name): Declare
3895 * targhooks.c (default_mangle_decl_assembler_name): Define
3897 * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
3899 * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
3900 * langhooks.c (lhd_set_decl_assembler_name): Call
3901 targetm.mangle_decl_assembler_name for names with global scope.
3903 * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
3905 (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
3906 * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
3908 * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
3909 New. Factored out of i386_pe_encode_section_info.
3910 (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
3911 Move check for prior decoration of stdcall
3912 symbols to i386_pe_encode_section_info.
3913 (i386_pe_encode_section_info): Adjust call to
3914 gen_stdcall_or_fastcall_suffix. Use
3915 i386_pe_maybe_mangle_decl_assembler_name, if needed.
3916 (i386_pe_mangle_decl_assembler_name): New. Wrap
3917 i386_pe_maybe_mangle_decl_assembler_name.
3919 2007-05-16 Rafael Avila de Espindola <espindola@google.com>
3921 * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
3922 INTEGRAL_TYPE_P and TYPE_UNSIGNED.
3923 * langhooks.c (get_signed_or_unsigned_type): Don't check for
3924 INTEGRAL_TYPE_P or TYPE_UNSIGNED.
3925 (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
3928 2007-05-23 Sandra Loosemore <sandra@codesourcery.com>
3929 Nigel Stephens <nigel@mips.com>
3930 Richard Sandiford <richard@codesourcery.com>
3932 Fix up MIPS16 hard float and add support for complex.
3934 * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
3935 (TARGET_SOFT_FLOAT_ABI): New.
3936 (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
3937 __mips_soft_float to reflect the ABI in use, not whether the
3938 FPU is directly accessible (e.g., in MIPS16 mode).
3939 (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
3940 (UNITS_PER_FPVALUE): Likewise.
3942 * config/mips/mips.c (mips_expand_call): Remove redundant
3943 TARGET_MIPS16 check.
3944 (mips_arg_regno): New.
3945 (function_arg_advance): When setting bits in cum->fp_code for
3946 MIPS16, don't subtract 1 from cum->arg_number, since it is now
3948 (function_arg): Use mips_arg_regno.
3949 (mips_return_mode_in_fpr_p): New.
3950 (mips16_call_stub_mode_suffix): New.
3951 (mips16_cfun_returns_in_fpr_p): New.
3952 (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
3953 (mips_output_function_prologue): Test mips16_hard_float, not
3954 !TARGET_SOFT_FLOAT, to decide when a function stub is required.
3955 (mips_expand_epilogue): Call MIPS16 helper routines to copy
3956 return value into a floating-point register.
3957 (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
3958 (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
3959 (mips16_fp_args): Handle MIPS32r2 ISA which supports
3960 TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
3961 word of double arguments from or to the high bits of 64-bit
3962 floating point registers.
3963 (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
3964 (mips16_fpret_double): New helper function.
3965 (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p. Add
3966 support for complex modes. Fill in DECL_RESULT for stubdecl.
3967 (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.