i386.c (ix86_rtx_costs): Check op0 for ZERO_EXTEND when computing costs for widening multiplication.

* config/i386/i386.c (ix86_rtx_costs) [MULT]: Check op0 for
        ZERO_EXTEND when computing costs for widening multiplication.

From-SVN: r130809
This commit is contained in:
Torbjorn Granlund 2007-12-13 10:19:11 +01:00 committed by Uros Bizjak
parent fe9e534218
commit e3dafdf4d0
2 changed files with 69 additions and 83 deletions

View File

@ -1,3 +1,8 @@
2007-12-13 Torbjorn Granlund <tege@swox.com>
* config/i386/i386.c (ix86_rtx_costs) [MULT]: Check op0 for
ZERO_EXTEND when computing costs for widening multiplication.
2007-12-13 Richard Earnshaw <rearnsha@arm.com> 2007-12-13 Richard Earnshaw <rearnsha@arm.com>
PR target/30192 PR target/30192
@ -92,8 +97,7 @@
to extract the integer from operands[2]. to extract the integer from operands[2].
(vec_setv2di_internal): Likewise. (vec_setv2di_internal): Likewise.
* config/arm/arm.c (arm_size_return_regs): Make return type * config/arm/arm.c (arm_size_return_regs): Make return type unsigned.
unsigned.
(arm_init_neon_builtins): Move code after declarations. (arm_init_neon_builtins): Move code after declarations.
2007-12-10 Hans-Peter Nilsson <hp@axis.com> 2007-12-10 Hans-Peter Nilsson <hp@axis.com>
@ -535,8 +539,7 @@
* tree-vrp.c (adjust_range_with_scev): Clear scev cache. * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
(record_numbers_of_iterations): New function. (record_numbers_of_iterations): New function.
(execute_vrp): Cache the numbers of iterations of loops. (execute_vrp): Cache the numbers of iterations of loops.
* tree-scalar-evolution.c (scev_reset_except_niters): * tree-scalar-evolution.c (scev_reset_except_niters): New function.
New function.
(scev_reset): Use scev_reset_except_niters. (scev_reset): Use scev_reset_except_niters.
* tree-scalar-evolution.h (scev_reset_except_niters): Declare. * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
@ -1377,9 +1380,9 @@
PR tree-optimization/33953 PR tree-optimization/33953
* tree-vect-transform.c (vectorizable_operation): In case of SLP, * tree-vect-transform.c (vectorizable_operation): In case of SLP,
allocate vec_oprnds1 according to the number of created vector allocate vec_oprnds1 according to the number of created vector
statements. In case of shift with scalar argument, store scalar operand statements. In case of shift with scalar argument, store scalar
for every vector statement to be created for the SLP node. Fix a operand for every vector statement to be created for the SLP node.
comment. Fix a comment.
2007-11-10 Steven Bosscher <stevenb.gcc@gmail.com> 2007-11-10 Steven Bosscher <stevenb.gcc@gmail.com>
@ -1445,8 +1448,7 @@
2007-11-09 Richard Guenther <rguenther@suse.de> 2007-11-09 Richard Guenther <rguenther@suse.de>
* tree-flow.h (struct ptr_info_def): Make escape_mask a * tree-flow.h (struct ptr_info_def): Make escape_mask a ENUM_BITFIELD.
ENUM_BITFIELD.
(struct ptr_info_def): Likewise. (struct ptr_info_def): Likewise.
(enum escape_type): Also use bit zero. (enum escape_type): Also use bit zero.
@ -1845,8 +1847,7 @@
(in_safe_group_barrier): New variable. (in_safe_group_barrier): New variable.
(rws_update): Remove first argument, always set rws_sum array. (rws_update): Remove first argument, always set rws_sum array.
(rws_access_regno): Use rws_insn_set macro. Only call rws_update (rws_access_regno): Use rws_insn_set macro. Only call rws_update
or update rws_sum if !in_safe_group_barrier, adjust rws_update or update rws_sum if !in_safe_group_barrier, adjust rws_update args.
args.
(rtx_needs_barrier): Use rws_insn_test macro. (rtx_needs_barrier): Use rws_insn_test macro.
(safe_group_barrier_needed): Don't save/restore rws_sum array, (safe_group_barrier_needed): Don't save/restore rws_sum array,
instead set/clear in_safe_group_barrier flag. instead set/clear in_safe_group_barrier flag.
@ -1996,8 +1997,8 @@
* config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp. * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
* config/s390/s390.c: (override_options): Replace -mhard-dfp/-msoft-dfp * config/s390/s390.c: (override_options): Replace
with -mhard-dfp/-mno-hard-dfp. -mhard-dfp/-msoft-dfp with -mhard-dfp/-mno-hard-dfp.
* config/s390/s390.opt: Likewise. * config/s390/s390.opt: Likewise.
* config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
definition. definition.
@ -2493,7 +2494,7 @@
SSA_NAME pointers. SSA_NAME pointers.
2007-10-22 Seongbae Park <seongbae.park@gmail.com> 2007-10-22 Seongbae Park <seongbae.park@gmail.com>
David S. Miller <davem@davemloft.net> David S. Miller <davem@davemloft.net>
* df-scan.c (df_get_call_refs): Mark global registers as both a * df-scan.c (df_get_call_refs): Mark global registers as both a
DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF. DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
@ -3010,8 +3011,7 @@
2007-10-19 Richard Guenther <rguenther@suse.de> 2007-10-19 Richard Guenther <rguenther@suse.de>
PR middle-end/32921 PR middle-end/32921
* tree.c (build_array_type): Do not re-layout unbound array * tree.c (build_array_type): Do not re-layout unbound array types.
types.
2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk> 2007-10-19 Richard Sandiford <rsandifo@nildram.co.uk>
@ -3765,8 +3765,7 @@
PR middle-end/33669 PR middle-end/33669
* ra-conflict.c (record_one_conflict_between_regnos, * ra-conflict.c (record_one_conflict_between_regnos,
set_conflicts_for_earlyclobber, global_conflicts): Improved set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
logging.
(global_conflicts): Removed incorrect check. (global_conflicts): Removed incorrect check.
2007-10-09 Richard Sandiford <rsandifo@nildram.co.uk> 2007-10-09 Richard Sandiford <rsandifo@nildram.co.uk>
@ -3909,8 +3908,7 @@
PR tree-optimization/33655 PR tree-optimization/33655
PR middle-end/22156 PR middle-end/22156
* tree-sra.c (bitfield_overlaps_p): Handle array and complex * tree-sra.c (bitfield_overlaps_p): Handle array and complex elements.
elements.
2007-10-06 Alexandre Oliva <aoliva@redhat.com> 2007-10-06 Alexandre Oliva <aoliva@redhat.com>
@ -4024,8 +4022,7 @@
2007-10-04 Geoffrey Keating <geoffk@apple.com> 2007-10-04 Geoffrey Keating <geoffk@apple.com>
* cgraphunit.c (cgraph_build_static_cdtor): Don't set * cgraphunit.c (cgraph_build_static_cdtor): Don't set DECL_IGNORED_P.
DECL_IGNORED_P.
2007-10-04 Anatoly Sokolov <aesok@post.ru> 2007-10-04 Anatoly Sokolov <aesok@post.ru>
@ -4150,8 +4147,7 @@
2007-10-02 Richard Sandiford <rsandifo@nildram.co.uk> 2007-10-02 Richard Sandiford <rsandifo@nildram.co.uk>
PR middle-end/33617 PR middle-end/33617
* expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to expand_expr.
expand_expr.
2007-10-02 David Daney <ddaney@avtrex.com> 2007-10-02 David Daney <ddaney@avtrex.com>
@ -4263,14 +4259,12 @@
(canon_type_for_field): New. (canon_type_for_field): New.
(try_instantiate_multiple_fields): New. Infer widest possible (try_instantiate_multiple_fields): New. Infer widest possible
access mode from decl or member type, but clip it at word access mode from decl or member type, but clip it at word
size, and only widen it if a field crosses an alignment size, and only widen it if a field crosses an alignment boundary.
boundary.
(instantiate_missing_elements): Use them. (instantiate_missing_elements): Use them.
(generate_one_element_ref): Handle BIT_FIELD_REFs. (generate_one_element_ref): Handle BIT_FIELD_REFs.
(scalar_bitfield_p): New. (scalar_bitfield_p): New.
(sra_build_assignment): Optimize assignments from scalarizable (sra_build_assignment): Optimize assignments from scalarizable
BIT_FIELD_REFs. Use BITS_BIG_ENDIAN to determine shift BIT_FIELD_REFs. Use BITS_BIG_ENDIAN to determine shift counts.
counts.
(REPLDUP): New. (REPLDUP): New.
(sra_build_bf_assignment): New. Optimize assignments to (sra_build_bf_assignment): New. Optimize assignments to
scalarizable BIT_FIELD_REFs. scalarizable BIT_FIELD_REFs.
@ -4292,8 +4286,7 @@
BIT_FIELD_REFs. Explode or sync needed members for BIT_FIELD_REFs. Explode or sync needed members for
BIT_FIELD_REFs accesses or assignments. Use REPLDUP. BIT_FIELD_REFs accesses or assignments. Use REPLDUP.
(scalarize_copy): Use REPLDUP. (scalarize_copy): Use REPLDUP.
(scalarize_ldst): Move assert before dereference. Adjust EH (scalarize_ldst): Move assert before dereference. Adjust EH handling.
handling.
(dump_sra_elt_name): Handle BIT_FIELD_REFs. (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2007-10-01 Paolo Bonzini <bonzini@gnu.org> 2007-10-01 Paolo Bonzini <bonzini@gnu.org>
@ -4579,8 +4572,7 @@
2007-09-25 DJ Delorie <dj@redhat.com> 2007-09-25 DJ Delorie <dj@redhat.com>
PR target/33551 PR target/33551
* config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of XINT.
XINT.
2007-09-25 Michael Meissner <michael.meissner@amd.com> 2007-09-25 Michael Meissner <michael.meissner@amd.com>
@ -4888,8 +4880,7 @@
2007-09-22 Richard Guenther <rguenther@suse.de> 2007-09-22 Richard Guenther <rguenther@suse.de>
PR tree-optimization/33146 PR tree-optimization/33146
* fold-const.c (fold_binary): Use the original tree * fold-const.c (fold_binary): Use the original tree for negating.
for negating.
* tree.h (STRIP_SIGN_NOPS): Converting from or to pointer * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
also changes "sign". also changes "sign".
@ -5352,8 +5343,7 @@
* doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document. * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
* unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define. * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
(_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to declaration.
declaration.
(_Unwind_ForcedUnwind): Likewise. (_Unwind_ForcedUnwind): Likewise.
(_Unwind_Resume): Likewise. (_Unwind_Resume): Likewise.
(_Unwind_Resume_or_Rethrow): Likewise. (_Unwind_Resume_or_Rethrow): Likewise.
@ -5417,8 +5407,7 @@
PR target/32337 PR target/32337
* config/ia64/ia64.c (find_gr_spill): Don't decrement * config/ia64/ia64.c (find_gr_spill): Don't decrement
current_frame_info.n_local_regs. Don't return emitted local current_frame_info.n_local_regs. Don't return emitted local regs.
regs.
(ia64_compute_frame_size): Improve unwind hack to put (ia64_compute_frame_size): Improve unwind hack to put
RP, PFS, FP in that order by allowing some of the registers RP, PFS, FP in that order by allowing some of the registers
been already emitted, as long as they are emitted to the been already emitted, as long as they are emitted to the
@ -5563,19 +5552,15 @@
pointer to hold the argument. pointer to hold the argument.
(function_args_iter_cond): Inline function to return the next (function_args_iter_cond): Inline function to return the next
argument. argument.
(function_args_iter_cond_next): Advance the function args (function_args_iter_cond_next): Advance the function args iterator.
iterator. (stdarg_p): New function, return true if variable argument function.
(stdarg_p): New function, return true if variable argument (prototype_p): New function, return true if function is prototyped.
function.
(prototype_p): New function, return true if function is
prototyped.
(function_args_count): New function, count the number of arguments (function_args_count): New function, count the number of arguments
of a function. of a function.
* tree.c (stdarg_p): New function, return true if variable * tree.c (stdarg_p): New function, return true if variable
argument function. argument function.
(prototype_p): New function, return true if function is (prototype_p): New function, return true if function is prototyped.
prototyped.
* config/i386/i386.h (TARGET_SSE5): New macro for SSE5. * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
(TARGET_ROUND): New macro for the round/ptest instructions which (TARGET_ROUND): New macro for the round/ptest instructions which
@ -6067,8 +6052,8 @@
2007-09-12 Jan Hubicka <jh@suse.cz> 2007-09-12 Jan Hubicka <jh@suse.cz>
PR target/33393 PR target/33393
* i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable * config/i386/i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory):
for !SSE_MATH Disable for !SSE_MATH
2007-09-12 Christian Bruel <christian.bruel@st.com> 2007-09-12 Christian Bruel <christian.bruel@st.com>
@ -6084,8 +6069,8 @@
2007-09-12 Ira Rosen <irar@il.ibm.com> 2007-09-12 Ira Rosen <irar@il.ibm.com>
* params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and
to 1. minimum to 1.
2007-09-11 James E. Wilson <wilson@specifix.com> 2007-09-11 James E. Wilson <wilson@specifix.com>
@ -6285,15 +6270,15 @@
2007-09-11 Zdenek Dvorak <ook@ucw.cz> 2007-09-11 Zdenek Dvorak <ook@ucw.cz>
* fold-const.c (extract_muldiv_1): Do not simplify * fold-const.c (extract_muldiv_1): Do not simplify var * c * c to var.
var * c * c to var.
2007-09-11 Jan Hubicka <jh@suse.cz> 2007-09-11 Jan Hubicka <jh@suse.cz>
* i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS. * config/i386/i386.h (ix86_tune_indices): Add
X86_TUNE_INTER_UNIT_CONVERSIONS.
(TARGET_INTER_UNIT_CONVERSIONS): New. (TARGET_INTER_UNIT_CONVERSIONS): New.
* i386.md (floatsi expanders): Remove redundant check for SImode * config/i386/i386.md (floatsi expanders): Remove redundant check
source; offload to memory when asked for. for SImode source; offload to memory when asked for.
(floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse): floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
Update conditions; Update conditions;
@ -6581,7 +6566,7 @@
2007-09-09 H.J. Lu <hongjiu.lu@intel.com> 2007-09-09 H.J. Lu <hongjiu.lu@intel.com>
* i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead * config/i386/i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
of cvtpq2ps. of cvtpq2ps.
(*floatsisf2_sse_vector): Likewise. (*floatsisf2_sse_vector): Likewise.
@ -6615,10 +6600,10 @@
2007-09-09 Jan Hubicka <jh@suse.cz> 2007-09-09 Jan Hubicka <jh@suse.cz>
Dwarakanath Rajagopal <dwarak.rajagopal@amd.com> Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
* i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS. * config/i386/i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
(TARGET_USE_VECTOR_CONVERTS): New. (TARGET_USE_VECTOR_CONVERTS): New.
* i386.md: New post-reload splitters for converting SF to DF and DF to * config/i386/i386.md: New post-reload splitters for converting
SF. SF to DF and DF to SF.
(floatsi* expander): Special case vector conversions. (floatsi* expander): Special case vector conversions.
(floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit, (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
floatsisf2_sse_vector_internunit, floatsisf2_sse_vector, floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
@ -6626,8 +6611,8 @@
(floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse): (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
Disable when doing vector converts. Disable when doing vector converts.
(floatsi<mode>2_i387): Disable when (floatsi<mode>2_i387): Disable when
* sse.md (vec_dupv2df): Export. * config/i386/sse.md (vec_dupv2df): Export.
* i386.c (ix86_tune_features): Enable SSE conversions. * config/i386/i386.c (ix86_tune_features): Enable SSE conversions.
2007-09-09 Richard Guenther <rguenther@suse.de> 2007-09-09 Richard Guenther <rguenther@suse.de>
@ -7356,8 +7341,8 @@
2007-09-06 Jan Hubicka <jh@suse.cz> 2007-09-06 Jan Hubicka <jh@suse.cz>
* i386.c (ix86_expand_lround, ix86_expand_round): Update call of * config/i386/i386.c (ix86_expand_lround, ix86_expand_round):
real_2expN. Update call of real_2expN.
2007-09-06 Richard Sandiford <richard@codesourcery.com> 2007-09-06 Richard Sandiford <richard@codesourcery.com>
@ -7514,8 +7499,8 @@
2007-09-06 Jan Hubicka <jh@suse.cz> 2007-09-06 Jan Hubicka <jh@suse.cz>
* i386.c (ix86_expand_lround, ix86_expand_round): Update call of * config/i386/i386.c (ix86_expand_lround, ix86_expand_round):
real_2expN. Update call of real_2expN.
2007-09-06 Jan Hubicka <jh@suse.cz> 2007-09-06 Jan Hubicka <jh@suse.cz>
@ -10095,7 +10080,7 @@
2007-08-19 Jan Hubicka <jh@suse.cz> 2007-08-19 Jan Hubicka <jh@suse.cz>
* i386.md: Replace "rim" and "mri" constraints by "g". * config/i386/i386.md: Replace "rim" and "mri" constraints by "g".
2007-08-19 Joseph Myers <joseph@codesourcery.com> 2007-08-19 Joseph Myers <joseph@codesourcery.com>
@ -10547,8 +10532,8 @@
2007-08-14 Kai Tietz <kai.tietz@onevision.com> 2007-08-14 Kai Tietz <kai.tietz@onevision.com>
* i386.c: (legitimize_address): Move dllimported variable check * config/i386/i386.c (legitimize_address): Move dllimported variable
infront of legitimizing pic address of CONST symbols. check infront of legitimizing pic address of CONST symbols.
2007-08-14 Steve Ellcey <sje@cup.hp.com> 2007-08-14 Steve Ellcey <sje@cup.hp.com>
@ -11924,8 +11909,8 @@
2007-08-03 Jan Hubicka <jh@suse.cz> 2007-08-03 Jan Hubicka <jh@suse.cz>
* i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred * config/i386/i386.c (setup_incoming_varargs_64): Tolerate 64bit
stack boundary. preferred stack boundary.
2007-08-03 David Edelsohn <edelsohn@gnu.org> 2007-08-03 David Edelsohn <edelsohn@gnu.org>
@ -13673,7 +13658,7 @@
2007-07-23 Jan Hubicka <jH@suse.cz> 2007-07-23 Jan Hubicka <jH@suse.cz>
* i386.c (ix86_secondary_memory_needed): Break out to... * config/i386/i386.c (ix86_secondary_memory_needed): Break out to...
(inline_secondary_memory_needed): ... here. (inline_secondary_memory_needed): ... here.
(ix86_memory_move_cost): Break out to ... (ix86_memory_move_cost): Break out to ...
(inline_memory_move_cost): ... here; add support for IN value of 2 for (inline_memory_move_cost): ... here; add support for IN value of 2 for
@ -19411,7 +19396,7 @@
extra_headers. extra_headers.
(x86_64-*-*): Likewise. (x86_64-*-*): Likewise.
* i386/i386-modes.def (V2QI): New. * config/i386/i386-modes.def (V2QI): New.
* config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
SSE4A. SSE4A.
@ -25875,9 +25860,9 @@
* reg-stack.c (reg_to_stack): Large models don't allow NAN to be * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
loaded for constant large models. Non-large 64bit PIC can do. loaded for constant large models. Non-large 64bit PIC can do.
* i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit. * config/i386/i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
* cmodel.h: Add LARGE PIC. * cmodel.h: Add LARGE PIC.
* i386.md (UNSPEC_PLTOFF): New. * config/i386/i386.md (UNSPEC_PLTOFF): New.
(UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
unspecs as needed. unspecs as needed.
(*call_1_rex64): Disable for large models. (*call_1_rex64): Disable for large models.
@ -25886,10 +25871,10 @@
(*call_value_1_rex64_large): New. (*call_value_1_rex64_large): New.
(set_rip_rex4): New. (set_rip_rex4): New.
(set_got_offset_rex64): New. (set_got_offset_rex64): New.
* predicates.md (constant_call_address_operand): For large model * config/i386/predicates.md (constant_call_address_operand): For
constant calls are not possible. large model constant calls are not possible.
* i386-protos.h (construct_plt_address): Declare. * config/i386/i386-protos.h (construct_plt_address): Declare.
* i386.c (override_options): Accept large models. * config/i386/i386.c (override_options): Accept large models.
(ix86_expand_prologue): Expand large PIC GOT pointer load. (ix86_expand_prologue): Expand large PIC GOT pointer load.
(legitimate_constant_p): Add new UNSPECs. (legitimate_constant_p): Add new UNSPECs.
(legitimate_pic_operand_p): Likewise. (legitimate_pic_operand_p): Likewise.
@ -26883,7 +26868,7 @@
Jan Hubicka <jh@suse.cz> Jan Hubicka <jh@suse.cz>
PR target/30778 PR target/30778
* i386.c (counter_mode): New function. * cofnig/i386/i386.c (counter_mode): New function.
(expand_set_or_movmem_via_loop): Use it. (expand_set_or_movmem_via_loop): Use it.
(expand_movmem_epilogue): Likewise; fix pasto. (expand_movmem_epilogue): Likewise; fix pasto.
(ix86_expand_movmem): Do emit guard even for constant counts. (ix86_expand_movmem): Do emit guard even for constant counts.
@ -30316,7 +30301,8 @@
* Makefile.in (LIBGCOV): Add new constants. * Makefile.in (LIBGCOV): Add new constants.
* libgcov.c (__gcov_merge_ior, __gcov_average_profiler, * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
__gcov_ior_profiler): New. __gcov_ior_profiler): New.
* i386.md (movmem/setmem expanders): Add new optional arguments. * config/i386/i386.md (movmem/setmem expanders): Add new optional
arguments.
2007-01-28 David Edelsohn <edelsohn@gnu.org> 2007-01-28 David Edelsohn <edelsohn@gnu.org>
@ -31184,8 +31170,8 @@
2007-01-18 Michael Meissner <michael.meissner@amd.com> 2007-01-18 Michael Meissner <michael.meissner@amd.com>
* i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code * config/i386/i386.c (ix86_compute_frame_layout): Make fprintf's
type correct. in #if 0 code type correct.
2007-01-18 Jan Hubicka <jh@suse.cz> 2007-01-18 Jan Hubicka <jh@suse.cz>

View File

@ -22236,7 +22236,7 @@ ix86_rtx_costs (rtx x, int code, int outer_code_i, int *total)
nbits = 7; nbits = 7;
/* Compute costs correctly for widening multiplication. */ /* Compute costs correctly for widening multiplication. */
if ((GET_CODE (op0) == SIGN_EXTEND || GET_CODE (op1) == ZERO_EXTEND) if ((GET_CODE (op0) == SIGN_EXTEND || GET_CODE (op0) == ZERO_EXTEND)
&& GET_MODE_SIZE (GET_MODE (XEXP (op0, 0))) * 2 && GET_MODE_SIZE (GET_MODE (XEXP (op0, 0))) * 2
== GET_MODE_SIZE (mode)) == GET_MODE_SIZE (mode))
{ {