Commit e04ad03d by Jan Hubicka Committed by Jan Hubicka

expr.c (MOVE_BY_PIECES_P, [...]): Pass speed operand.


	* expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
	* expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
	* gimplify.c (gimplify_init_constructor): Add speed operand.
	* tree-sra.c (decide_block_copy): Likewise.
	* tree-inline.c (estimate_move_cost): Likewise.
	* config/alpha/alpha.h (MOVE_RATIO): Update.
	* config/frv/frv.c (MOVE_RATIO): Update.
	* config/spu/spu.h (MOVE_RATIO): Update.
	* config/sparc/sparc.h (MOVE_RATIO): Update.
	* config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
	* config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
	* config/cris/cris.h (MOVE_RATIO): Update.
	* config/mn10300/mn10300.h (MOVE_RATIO): Update.
	* config/arm/arm.h (MOVE_RATIO): Update.
	* config/pa/pa.md: Update uses of MOVE_RATIO
	* config/pa/pa.h (MOVE_RATIO): Update.
	* config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
	* config/h8300/h8300.h (MOVE_RATIO): Update.
	* config/v850/v850.h (MOVE_RATIO): Update.
	* config/bfin/bfin.h (MOVE_RATIO): Update.

From-SVN: r139855
parent e855c69d
2008-00-01 Jan Hubicka <jh@suse.cz>
* expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
* expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
* gimplify.c (gimplify_init_constructor): Add speed operand.
* tree-sra.c (decide_block_copy): Likewise.
* tree-inline.c (estimate_move_cost): Likewise.
* config/alpha/alpha.h (MOVE_RATIO): Update.
* config/frv/frv.c (MOVE_RATIO): Update.
* config/spu/spu.h (MOVE_RATIO): Update.
* config/sparc/sparc.h (MOVE_RATIO): Update.
* config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
* config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
* config/cris/cris.h (MOVE_RATIO): Update.
* config/mn10300/mn10300.h (MOVE_RATIO): Update.
* config/arm/arm.h (MOVE_RATIO): Update.
* config/pa/pa.md: Update uses of MOVE_RATIO
* config/pa/pa.h (MOVE_RATIO): Update.
* config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
* config/h8300/h8300.h (MOVE_RATIO): Update.
* config/v850/v850.h (MOVE_RATIO): Update.
* config/bfin/bfin.h (MOVE_RATIO): Update.
2008-08-31 Andrey Belevantsev <abel@ispras.ru> 2008-08-31 Andrey Belevantsev <abel@ispras.ru>
Dmitry Melnik <dm@ispras.ru> Dmitry Melnik <dm@ispras.ru>
Dmitry Zhurikhin <zhur@ispras.ru> Dmitry Zhurikhin <zhur@ispras.ru>
......
...@@ -1079,7 +1079,7 @@ do { \ ...@@ -1079,7 +1079,7 @@ do { \
Without byte/word accesses, we want no more than four instructions; Without byte/word accesses, we want no more than four instructions;
with, several single byte accesses are better. */ with, several single byte accesses are better. */
#define MOVE_RATIO (TARGET_BWX ? 7 : 2) #define MOVE_RATIO(speed) (TARGET_BWX ? 7 : 2)
/* Largest number of bytes of an object that can be placed in a register. /* Largest number of bytes of an object that can be placed in a register.
On the Alpha we have plenty of registers, so use TImode. */ On the Alpha we have plenty of registers, so use TImode. */
......
...@@ -2244,7 +2244,7 @@ do { \ ...@@ -2244,7 +2244,7 @@ do { \
#define MOVE_MAX 4 #define MOVE_MAX 4
#undef MOVE_RATIO #undef MOVE_RATIO
#define MOVE_RATIO (arm_tune_xscale ? 4 : 2) #define MOVE_RATIO(speed) (arm_tune_xscale ? 4 : 2)
/* Define if operations between registers always perform the operation /* Define if operations between registers always perform the operation
on the full register even if a narrower mode is specified. */ on the full register even if a narrower mode is specified. */
......
...@@ -998,7 +998,7 @@ do { \ ...@@ -998,7 +998,7 @@ do { \
/* If a memory-to-memory move would take MOVE_RATIO or more simple /* If a memory-to-memory move would take MOVE_RATIO or more simple
move-instruction pairs, we will do a movmem or libcall instead. */ move-instruction pairs, we will do a movmem or libcall instead. */
#define MOVE_RATIO 5 #define MOVE_RATIO(speed) 5
/* STORAGE LAYOUT: target machine storage layout /* STORAGE LAYOUT: target machine storage layout
Define this macro as a C expression which is nonzero if accessing Define this macro as a C expression which is nonzero if accessing
......
...@@ -1242,7 +1242,7 @@ struct cum_args {int regs;}; ...@@ -1242,7 +1242,7 @@ struct cum_args {int regs;};
word-length sizes will be emitted. The "9" will translate to word-length sizes will be emitted. The "9" will translate to
(9 - 1) * 4 = 32 bytes maximum moved, but using 16 instructions (9 - 1) * 4 = 32 bytes maximum moved, but using 16 instructions
(8 instruction sequences) or less. */ (8 instruction sequences) or less. */
#define MOVE_RATIO 9 #define MOVE_RATIO(speed) 9
/* Node: Sections */ /* Node: Sections */
......
...@@ -1189,10 +1189,8 @@ struct cum_arg ...@@ -1189,10 +1189,8 @@ struct cum_arg
#define FINAL_PRESCAN_INSN(insn, operand, nop) \ #define FINAL_PRESCAN_INSN(insn, operand, nop) \
final_prescan_insn (insn, operand, nop) final_prescan_insn (insn, operand, nop)
#define MOVE_RATIO 3
extern int h8300_move_ratio; extern int h8300_move_ratio;
#undef MOVE_RATIO #define MOVE_RATIO(speed) h8300_move_ratio
#define MOVE_RATIO h8300_move_ratio
/* Machine-specific symbol_ref flags. */ /* Machine-specific symbol_ref flags. */
#define SYMBOL_FLAG_FUNCVEC_FUNCTION (SYMBOL_FLAG_MACH_DEP << 0) #define SYMBOL_FLAG_FUNCVEC_FUNCTION (SYMBOL_FLAG_MACH_DEP << 0)
......
...@@ -1906,12 +1906,12 @@ do { \ ...@@ -1906,12 +1906,12 @@ do { \
If you don't define this, a reasonable default is used. */ If you don't define this, a reasonable default is used. */
#define MOVE_RATIO (optimize_size ? 3 : ix86_cost->move_ratio) #define MOVE_RATIO(speed) ((speed) ? ix86_cost->move_ratio : 3)
/* If a clear memory operation would take CLEAR_RATIO or more simple /* If a clear memory operation would take CLEAR_RATIO or more simple
move-instruction sequences, we will do a clrmem or libcall instead. */ move-instruction sequences, we will do a clrmem or libcall instead. */
#define CLEAR_RATIO (optimize_size ? 2 : MIN (6, ix86_cost->move_ratio)) #define CLEAR_RATIO(speed) ((speed) ? MIN (6, ix86_cost->move_ratio) : 2)
/* Define if shifts truncate the shift count /* Define if shifts truncate the shift count
which implies one can omit a sign-extension or zero-extension which implies one can omit a sign-extension or zero-extension
......
...@@ -1505,7 +1505,7 @@ do { \ ...@@ -1505,7 +1505,7 @@ do { \
/* MOVE_RATIO is the number of move instructions that is better than a /* MOVE_RATIO is the number of move instructions that is better than a
block move. Make this small on 6811, since the code size grows very block move. Make this small on 6811, since the code size grows very
large with each move. */ large with each move. */
#define MOVE_RATIO 3 #define MOVE_RATIO(speed) 3
/* Define if shifts truncate the shift count which implies one can omit /* Define if shifts truncate the shift count which implies one can omit
a sign-extension or zero-extension of a shift count. */ a sign-extension or zero-extension of a shift count. */
......
...@@ -2940,7 +2940,7 @@ while (0) ...@@ -2940,7 +2940,7 @@ while (0)
we'll have to generate a load/store pair for each, halve the we'll have to generate a load/store pair for each, halve the
value of MIPS_CALL_RATIO to take that into account. */ value of MIPS_CALL_RATIO to take that into account. */
#define MOVE_RATIO \ #define MOVE_RATIO(speed) \
(HAVE_movmemsi \ (HAVE_movmemsi \
? MIPS_MAX_MOVE_BYTES_STRAIGHT / MOVE_MAX \ ? MIPS_MAX_MOVE_BYTES_STRAIGHT / MOVE_MAX \
: MIPS_CALL_RATIO / 2) : MIPS_CALL_RATIO / 2)
...@@ -2961,20 +2961,20 @@ while (0) ...@@ -2961,20 +2961,20 @@ while (0)
? (SIZE) < UNITS_PER_WORD \ ? (SIZE) < UNITS_PER_WORD \
: (SIZE) <= MIPS_MAX_MOVE_BYTES_STRAIGHT)) \ : (SIZE) <= MIPS_MAX_MOVE_BYTES_STRAIGHT)) \
: (move_by_pieces_ninsns (SIZE, ALIGN, MOVE_MAX_PIECES + 1) \ : (move_by_pieces_ninsns (SIZE, ALIGN, MOVE_MAX_PIECES + 1) \
< (unsigned int) MOVE_RATIO)) < (unsigned int) MOVE_RATIO (false)))
/* For CLEAR_RATIO, when optimizing for size, give a better estimate /* For CLEAR_RATIO, when optimizing for size, give a better estimate
of the length of a memset call, but use the default otherwise. */ of the length of a memset call, but use the default otherwise. */
#define CLEAR_RATIO \ #define CLEAR_RATIO(speed)\
(optimize_size ? MIPS_CALL_RATIO : 15) ((speed) ? 15 : MIPS_CALL_RATIO)
/* This is similar to CLEAR_RATIO, but for a non-zero constant, so when /* This is similar to CLEAR_RATIO, but for a non-zero constant, so when
optimizing for size adjust the ratio to account for the overhead of optimizing for size adjust the ratio to account for the overhead of
loading the constant and replicating it across the word. */ loading the constant and replicating it across the word. */
#define SET_RATIO \ #define SET_RATIO(speed) \
(optimize_size ? MIPS_CALL_RATIO - 2 : 15) ((speed) ? 15 : MIPS_CALL_RATIO - 2)
/* STORE_BY_PIECES_P can be used when copying a constant string, but /* STORE_BY_PIECES_P can be used when copying a constant string, but
in that case each word takes 3 insns (lui, ori, sw), or more in in that case each word takes 3 insns (lui, ori, sw), or more in
......
...@@ -814,7 +814,7 @@ while (0) ...@@ -814,7 +814,7 @@ while (0)
/* According expr.c, a value of around 6 should minimize code size, and /* According expr.c, a value of around 6 should minimize code size, and
for the MN10300 series, that's our primary concern. */ for the MN10300 series, that's our primary concern. */
#define MOVE_RATIO 6 #define MOVE_RATIO(speed) 6
#define TEXT_SECTION_ASM_OP "\t.section .text" #define TEXT_SECTION_ASM_OP "\t.section .text"
#define DATA_SECTION_ASM_OP "\t.section .data" #define DATA_SECTION_ASM_OP "\t.section .data"
......
...@@ -1506,7 +1506,7 @@ do { \ ...@@ -1506,7 +1506,7 @@ do { \
arguments passed in registers to avoid infinite recursion during argument arguments passed in registers to avoid infinite recursion during argument
setup for a function call. Why? Consider how we copy the stack slots setup for a function call. Why? Consider how we copy the stack slots
reserved for parameters when they may be trashed by a call. */ reserved for parameters when they may be trashed by a call. */
#define MOVE_RATIO (TARGET_64BIT ? 8 : 4) #define MOVE_RATIO(speed) (TARGET_64BIT ? 8 : 4)
/* Define if operations between registers always perform the operation /* Define if operations between registers always perform the operation
on the full register even if a narrower mode is specified. */ on the full register even if a narrower mode is specified. */
......
...@@ -3487,7 +3487,7 @@ ...@@ -3487,7 +3487,7 @@
FAIL; FAIL;
/* This does happen, but not often enough to worry much about. */ /* This does happen, but not often enough to worry much about. */
if (size / align < MOVE_RATIO) if (size / align < MOVE_RATIO (optimize_insn_for_speed_p ()))
FAIL; FAIL;
/* Fall through means we're going to use our block move pattern. */ /* Fall through means we're going to use our block move pattern. */
...@@ -3675,7 +3675,7 @@ ...@@ -3675,7 +3675,7 @@
FAIL; FAIL;
/* This does happen, but not often enough to worry much about. */ /* This does happen, but not often enough to worry much about. */
if (size / align < MOVE_RATIO) if (size / align < MOVE_RATIO (optimize_insn_for_speed_p ()))
FAIL; FAIL;
/* Fall through means we're going to use our block move pattern. */ /* Fall through means we're going to use our block move pattern. */
...@@ -3842,7 +3842,7 @@ ...@@ -3842,7 +3842,7 @@
FAIL; FAIL;
/* This does happen, but not often enough to worry much about. */ /* This does happen, but not often enough to worry much about. */
if (size / align < MOVE_RATIO) if (size / align < MOVE_RATIO (optimize_insn_for_speed_p ()))
FAIL; FAIL;
/* Fall through means we're going to use our block clear pattern. */ /* Fall through means we're going to use our block clear pattern. */
...@@ -3956,7 +3956,7 @@ ...@@ -3956,7 +3956,7 @@
FAIL; FAIL;
/* This does happen, but not often enough to worry much about. */ /* This does happen, but not often enough to worry much about. */
if (size / align < MOVE_RATIO) if (size / align < MOVE_RATIO (optimize_insn_for_speed_p ()))
FAIL; FAIL;
/* Fall through means we're going to use our block clear pattern. */ /* Fall through means we're going to use our block clear pattern. */
......
...@@ -872,7 +872,7 @@ extern struct rtx_def *s390_compare_op0, *s390_compare_op1, *s390_compare_emitte ...@@ -872,7 +872,7 @@ extern struct rtx_def *s390_compare_op0, *s390_compare_op1, *s390_compare_emitte
in tree-sra with UNITS_PER_WORD to make a decision so we adjust it in tree-sra with UNITS_PER_WORD to make a decision so we adjust it
here to compensate for that factor since mvc costs exactly the same here to compensate for that factor since mvc costs exactly the same
on 31 and 64 bit. */ on 31 and 64 bit. */
#define MOVE_RATIO (TARGET_64BIT? 2 : 4) #define MOVE_RATIO(speed) (TARGET_64BIT? 2 : 4)
/* Sections. */ /* Sections. */
......
...@@ -2099,7 +2099,7 @@ do { \ ...@@ -2099,7 +2099,7 @@ do { \
/* If a memory-to-memory move would take MOVE_RATIO or more simple /* If a memory-to-memory move would take MOVE_RATIO or more simple
move-instruction pairs, we will do a movmem or libcall instead. */ move-instruction pairs, we will do a movmem or libcall instead. */
#define MOVE_RATIO (optimize_size ? 3 : 8) #define MOVE_RATIO(speed) ((speed) ? 8 : 3)
/* Define if operations between registers always perform the operation /* Define if operations between registers always perform the operation
on the full register even if a narrower mode is specified. */ on the full register even if a narrower mode is specified. */
......
...@@ -438,7 +438,7 @@ targetm.resolve_overloaded_builtin = spu_resolve_overloaded_builtin; \ ...@@ -438,7 +438,7 @@ targetm.resolve_overloaded_builtin = spu_resolve_overloaded_builtin; \
#define SLOW_BYTE_ACCESS 0 #define SLOW_BYTE_ACCESS 0
#define MOVE_RATIO 32 #define MOVE_RATIO(speed) 32
#define NO_FUNCTION_CSE #define NO_FUNCTION_CSE
......
...@@ -865,7 +865,7 @@ do { \ ...@@ -865,7 +865,7 @@ do { \
/* According expr.c, a value of around 6 should minimize code size, and /* According expr.c, a value of around 6 should minimize code size, and
for the V850 series, that's our primary concern. */ for the V850 series, that's our primary concern. */
#define MOVE_RATIO 6 #define MOVE_RATIO(speed) 6
/* Indirect calls are expensive, never turn a direct call /* Indirect calls are expensive, never turn a direct call
into an indirect call. */ into an indirect call. */
......
...@@ -175,7 +175,7 @@ static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES]; ...@@ -175,7 +175,7 @@ static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
#ifndef MOVE_BY_PIECES_P #ifndef MOVE_BY_PIECES_P
#define MOVE_BY_PIECES_P(SIZE, ALIGN) \ #define MOVE_BY_PIECES_P(SIZE, ALIGN) \
(move_by_pieces_ninsns (SIZE, ALIGN, MOVE_MAX_PIECES + 1) \ (move_by_pieces_ninsns (SIZE, ALIGN, MOVE_MAX_PIECES + 1) \
< (unsigned int) MOVE_RATIO) < (unsigned int) MOVE_RATIO (optimize_insn_for_speed_p ()))
#endif #endif
/* This macro is used to determine whether clear_by_pieces should be /* This macro is used to determine whether clear_by_pieces should be
...@@ -183,7 +183,7 @@ static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES]; ...@@ -183,7 +183,7 @@ static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
#ifndef CLEAR_BY_PIECES_P #ifndef CLEAR_BY_PIECES_P
#define CLEAR_BY_PIECES_P(SIZE, ALIGN) \ #define CLEAR_BY_PIECES_P(SIZE, ALIGN) \
(move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \ (move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \
< (unsigned int) CLEAR_RATIO) < (unsigned int) CLEAR_RATIO (optimize_insn_for_speed_p ()))
#endif #endif
/* This macro is used to determine whether store_by_pieces should be /* This macro is used to determine whether store_by_pieces should be
...@@ -191,7 +191,7 @@ static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES]; ...@@ -191,7 +191,7 @@ static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
#ifndef SET_BY_PIECES_P #ifndef SET_BY_PIECES_P
#define SET_BY_PIECES_P(SIZE, ALIGN) \ #define SET_BY_PIECES_P(SIZE, ALIGN) \
(move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \ (move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \
< (unsigned int) SET_RATIO) < (unsigned int) SET_RATIO (optimize_insn_for_speed_p ()))
#endif #endif
/* This macro is used to determine whether store_by_pieces should be /* This macro is used to determine whether store_by_pieces should be
...@@ -199,7 +199,7 @@ static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES]; ...@@ -199,7 +199,7 @@ static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
#ifndef STORE_BY_PIECES_P #ifndef STORE_BY_PIECES_P
#define STORE_BY_PIECES_P(SIZE, ALIGN) \ #define STORE_BY_PIECES_P(SIZE, ALIGN) \
(move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \ (move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \
< (unsigned int) MOVE_RATIO) < (unsigned int) MOVE_RATIO (optimize_insn_for_speed_p ()))
#endif #endif
/* This array records the insn_code of insns to perform block moves. */ /* This array records the insn_code of insns to perform block moves. */
......
...@@ -66,10 +66,10 @@ enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM, EXPAND_SUM, ...@@ -66,10 +66,10 @@ enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM, EXPAND_SUM,
#ifndef MOVE_RATIO #ifndef MOVE_RATIO
#if defined (HAVE_movmemqi) || defined (HAVE_movmemhi) || defined (HAVE_movmemsi) || defined (HAVE_movmemdi) || defined (HAVE_movmemti) #if defined (HAVE_movmemqi) || defined (HAVE_movmemhi) || defined (HAVE_movmemsi) || defined (HAVE_movmemdi) || defined (HAVE_movmemti)
#define MOVE_RATIO 2 #define MOVE_RATIO(speed) 2
#else #else
/* If we are optimizing for space (-Os), cut down the default move ratio. */ /* If we are optimizing for space (-Os), cut down the default move ratio. */
#define MOVE_RATIO (optimize_size ? 3 : 15) #define MOVE_RATIO(speed) ((speed) ? 15 : 3)
#endif #endif
#endif #endif
...@@ -78,10 +78,10 @@ enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM, EXPAND_SUM, ...@@ -78,10 +78,10 @@ enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM, EXPAND_SUM,
#ifndef CLEAR_RATIO #ifndef CLEAR_RATIO
#if defined (HAVE_setmemqi) || defined (HAVE_setmemhi) || defined (HAVE_setmemsi) || defined (HAVE_setmemdi) || defined (HAVE_setmemti) #if defined (HAVE_setmemqi) || defined (HAVE_setmemhi) || defined (HAVE_setmemsi) || defined (HAVE_setmemdi) || defined (HAVE_setmemti)
#define CLEAR_RATIO 2 #define CLEAR_RATIO(speed) 2
#else #else
/* If we are optimizing for space, cut down the default clear ratio. */ /* If we are optimizing for space, cut down the default clear ratio. */
#define CLEAR_RATIO (optimize_size ? 3 : 15) #define CLEAR_RATIO(speed) ((speed) ? 15 :3)
#endif #endif
#endif #endif
...@@ -89,7 +89,7 @@ enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM, EXPAND_SUM, ...@@ -89,7 +89,7 @@ enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM, EXPAND_SUM,
SET_RATIO or more simple move-instruction sequences, we will do a movmem SET_RATIO or more simple move-instruction sequences, we will do a movmem
or libcall instead. */ or libcall instead. */
#ifndef SET_RATIO #ifndef SET_RATIO
#define SET_RATIO MOVE_RATIO #define SET_RATIO(speed) MOVE_RATIO(speed)
#endif #endif
enum direction {none, upward, downward}; enum direction {none, upward, downward};
......
...@@ -3595,7 +3595,8 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, ...@@ -3595,7 +3595,8 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
if (num_type_elements < 0 && int_size_in_bytes (type) >= 0) if (num_type_elements < 0 && int_size_in_bytes (type) >= 0)
cleared = true; cleared = true;
/* If there are "lots" of zeros, then block clear the object first. */ /* If there are "lots" of zeros, then block clear the object first. */
else if (num_type_elements - num_nonzero_elements > CLEAR_RATIO else if (num_type_elements - num_nonzero_elements
> CLEAR_RATIO (optimize_function_for_speed_p (cfun))
&& num_nonzero_elements < num_type_elements/4) && num_nonzero_elements < num_type_elements/4)
cleared = true; cleared = true;
/* ??? This bit ought not be needed. For any element not present /* ??? This bit ought not be needed. For any element not present
......
...@@ -2614,7 +2614,7 @@ estimate_move_cost (tree type) ...@@ -2614,7 +2614,7 @@ estimate_move_cost (tree type)
size = int_size_in_bytes (type); size = int_size_in_bytes (type);
if (size < 0 || size > MOVE_MAX_PIECES * MOVE_RATIO) if (size < 0 || size > MOVE_MAX_PIECES * MOVE_RATIO (!optimize_size))
/* Cost of a memcpy call, 3 arguments and the call. */ /* Cost of a memcpy call, 3 arguments and the call. */
return 4; return 4;
else else
......
...@@ -1902,10 +1902,10 @@ decide_block_copy (struct sra_elt *elt) ...@@ -1902,10 +1902,10 @@ decide_block_copy (struct sra_elt *elt)
sensible default. */ sensible default. */
max_size = SRA_MAX_STRUCTURE_SIZE max_size = SRA_MAX_STRUCTURE_SIZE
? SRA_MAX_STRUCTURE_SIZE ? SRA_MAX_STRUCTURE_SIZE
: MOVE_RATIO * UNITS_PER_WORD; : MOVE_RATIO (optimize_function_for_speed_p (cfun)) * UNITS_PER_WORD;
max_count = SRA_MAX_STRUCTURE_COUNT max_count = SRA_MAX_STRUCTURE_COUNT
? SRA_MAX_STRUCTURE_COUNT ? SRA_MAX_STRUCTURE_COUNT
: MOVE_RATIO; : MOVE_RATIO (optimize_function_for_speed_p (cfun));
full_size = tree_low_cst (size_tree, 1); full_size = tree_low_cst (size_tree, 1);
full_count = count_type_elements (elt->type, false); full_count = count_type_elements (elt->type, false);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment