(simplify_binary_operation, case MULT): Don't convert to ASHIFT if

still generating RTL.

From-SVN: r6340
This commit is contained in:
Richard Kenner 1993-12-29 06:51:45 -05:00
parent bb7c21a564
commit c407b802da
1 changed files with 6 additions and 2 deletions

View File

@ -648,6 +648,8 @@ static void cse_check_loop_start PROTO((rtx, rtx));
static void cse_set_around_loop PROTO((rtx, rtx, rtx)); static void cse_set_around_loop PROTO((rtx, rtx, rtx));
static rtx cse_basic_block PROTO((rtx, rtx, struct branch_path *, int)); static rtx cse_basic_block PROTO((rtx, rtx, struct branch_path *, int));
static void count_reg_usage PROTO((rtx, int *, rtx, int)); static void count_reg_usage PROTO((rtx, int *, rtx, int));
extern int rtx_equal_function_value_matters;
/* Return an estimate of the cost of computing rtx X. /* Return an estimate of the cost of computing rtx X.
One use is in cse, to decide which expression to keep in the hash table. One use is in cse, to decide which expression to keep in the hash table.
@ -3685,9 +3687,11 @@ simplify_binary_operation (code, mode, op0, op1)
if (op1 == CONST1_RTX (mode)) if (op1 == CONST1_RTX (mode))
return op0; return op0;
/* Convert multiply by constant power of two into shift. */ /* Convert multiply by constant power of two into shift unless
we are still generating RTL. This test is a kludge. */
if (GET_CODE (op1) == CONST_INT if (GET_CODE (op1) == CONST_INT
&& (val = exact_log2 (INTVAL (op1))) >= 0) && (val = exact_log2 (INTVAL (op1))) >= 0
&& ! rtx_equal_function_value_matters)
return gen_rtx (ASHIFT, mode, op0, GEN_INT (val)); return gen_rtx (ASHIFT, mode, op0, GEN_INT (val));
if (GET_CODE (op1) == CONST_DOUBLE if (GET_CODE (op1) == CONST_DOUBLE