Commit 4b589eab by Jan Hubicka Committed by Jan Hubicka

lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost estimation.


	* lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost
	estimation.
	* c-common.c (c_estimate_num_insns_1):  Fix bug in MODIFY_EXPR
	cost estimation.
	* expr.c (MOVE_RATIO, CLEAR_RATIO): Move to ...
	* expr.h (MOVE_RATIO, CLEAR_RATIO): ... here.

From-SVN: r75821
parent 25c3f7c8
2004-01-14 Jan Hubicka <jh@suse.cz>
* c-common.c (c_estimate_num_insns_1): Fix bug in MODIFY_EXPR
cost estimation.
* expr.c (MOVE_RATIO, CLEAR_RATIO): Move to ...
* expr.h (MOVE_RATIO, CLEAR_RATIO): ... here.
2004-01-13 Bernardo Innocenti <bernie@develer.com>
* config/m68k/netbsd-elf.h (REGISTER_NAMES): Add missing "argptr"
......
......@@ -5770,13 +5770,14 @@ c_estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data)
case MODIFY_EXPR:
case CONSTRUCTOR:
{
int size = int_size_in_bytes (TREE_TYPE (x));
HOST_WIDE_INT size;
if (!size || size > MOVE_MAX_PIECES)
size = int_size_in_bytes (TREE_TYPE (x));
if (size < 0 || size > MOVE_MAX_PIECES * MOVE_RATIO)
*count += 10;
else
*count += 2 * (size + MOVE_MAX - 1) / MOVE_MAX;
return NULL;
*count += ((size + MOVE_MAX_PIECES - 1) / MOVE_MAX_PIECES);
}
break;
/* Few special cases of expensive operations. This is usefull
......
......@@ -185,18 +185,6 @@ static char direct_store[NUM_MACHINE_MODES];
static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
/* If a memory-to-memory move would take MOVE_RATIO or more simple
move-instruction sequences, we will do a movstr or libcall instead. */
#ifndef MOVE_RATIO
#if defined (HAVE_movstrqi) || defined (HAVE_movstrhi) || defined (HAVE_movstrsi) || defined (HAVE_movstrdi) || defined (HAVE_movstrti)
#define MOVE_RATIO 2
#else
/* If we are optimizing for space (-Os), cut down the default move ratio. */
#define MOVE_RATIO (optimize_size ? 3 : 15)
#endif
#endif
/* This macro is used to determine whether move_by_pieces should be called
to perform a structure copy. */
#ifndef MOVE_BY_PIECES_P
......@@ -204,18 +192,6 @@ static bool float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
(move_by_pieces_ninsns (SIZE, ALIGN) < (unsigned int) MOVE_RATIO)
#endif
/* If a clear memory operation would take CLEAR_RATIO or more simple
move-instruction sequences, we will do a clrstr or libcall instead. */
#ifndef CLEAR_RATIO
#if defined (HAVE_clrstrqi) || defined (HAVE_clrstrhi) || defined (HAVE_clrstrsi) || defined (HAVE_clrstrdi) || defined (HAVE_clrstrti)
#define CLEAR_RATIO 2
#else
/* If we are optimizing for space, cut down the default clear ratio. */
#define CLEAR_RATIO (optimize_size ? 3 : 15)
#endif
#endif
/* This macro is used to determine whether clear_by_pieces should be
called to clear storage. */
#ifndef CLEAR_BY_PIECES_P
......
......@@ -66,6 +66,30 @@ enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM = 2, EXPAND_SUM,
more information. */
#define OK_DEFER_POP (inhibit_defer_pop -= 1)
/* If a memory-to-memory move would take MOVE_RATIO or more simple
move-instruction sequences, we will do a movstr or libcall instead. */
#ifndef MOVE_RATIO
#if defined (HAVE_movstrqi) || defined (HAVE_movstrhi) || defined (HAVE_movstrsi) || defined (HAVE_movstrdi) || defined (HAVE_movstrti)
#define MOVE_RATIO 2
#else
/* If we are optimizing for space (-Os), cut down the default move ratio. */
#define MOVE_RATIO (optimize_size ? 3 : 15)
#endif
#endif
/* If a clear memory operation would take CLEAR_RATIO or more simple
move-instruction sequences, we will do a clrstr or libcall instead. */
#ifndef CLEAR_RATIO
#if defined (HAVE_clrstrqi) || defined (HAVE_clrstrhi) || defined (HAVE_clrstrsi) || defined (HAVE_clrstrdi) || defined (HAVE_clrstrti)
#define CLEAR_RATIO 2
#else
/* If we are optimizing for space, cut down the default clear ratio. */
#define CLEAR_RATIO (optimize_size ? 3 : 15)
#endif
#endif
enum direction {none, upward, downward};
/* Structure to record the size of a sequence of arguments
......
2004-01-14 Jan Hubicka <jh@suse.cz>
* lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost
estimation.
2004-01-09 Mark Mitchell <mark@codesourcery.com>
* java-tree.h (java_expand_expr): Change prototype.
......
......@@ -1134,13 +1134,14 @@ java_estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data)
case MODIFY_EXPR:
case CONSTRUCTOR:
{
int size = int_size_in_bytes (TREE_TYPE (x));
HOST_WIDE_INT size;
if (!size || size > MOVE_MAX_PIECES)
size = int_size_in_bytes (TREE_TYPE (x));
if (size < 0 || size > MOVE_MAX_PIECES * MOVE_RATIO)
*count += 10;
else
*count += 2 * (size + MOVE_MAX - 1) / MOVE_MAX;
return NULL;
*count += ((size + MOVE_MAX_PIECES - 1) / MOVE_MAX_PIECES);
}
break;
/* Few special cases of expensive operations. This is usefull
......
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