Commit c8dbc8ca by Torbjorn Granlund

(expand_divmod): Always return gen_lowpart (mode, ...).

From-SVN: r7640
parent 18beb3e9
...@@ -2720,7 +2720,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp) ...@@ -2720,7 +2720,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
remainder, 1, remainder, 1,
OPTAB_LIB_WIDEN); OPTAB_LIB_WIDEN);
if (remainder) if (remainder)
return remainder; return gen_lowpart (mode, remainder);
} }
quotient = expand_shift (RSHIFT_EXPR, compute_mode, op0, quotient = expand_shift (RSHIFT_EXPR, compute_mode, op0,
build_int_2 (pre_shift, 0), build_int_2 (pre_shift, 0),
...@@ -2958,7 +2958,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp) ...@@ -2958,7 +2958,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
GEN_INT (((HOST_WIDE_INT) 1 << pre_shift) - 1), GEN_INT (((HOST_WIDE_INT) 1 << pre_shift) - 1),
remainder, 0, OPTAB_LIB_WIDEN); remainder, 0, OPTAB_LIB_WIDEN);
if (remainder) if (remainder)
return remainder; return gen_lowpart (mode, remainder);
} }
quotient = expand_shift (RSHIFT_EXPR, compute_mode, op0, quotient = expand_shift (RSHIFT_EXPR, compute_mode, op0,
build_int_2 (pre_shift, 0), build_int_2 (pre_shift, 0),
...@@ -3054,10 +3054,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp) ...@@ -3054,10 +3054,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
expand_dec (quotient, const1_rtx); expand_dec (quotient, const1_rtx);
expand_inc (remainder, op1); expand_inc (remainder, op1);
emit_label (label); emit_label (label);
if (rem_flag) return gen_lowpart (mode, rem_flag ? remainder : quotient);
return remainder;
else
return quotient;
} }
/* No luck with division elimination or divmod. Have to do it /* No luck with division elimination or divmod. Have to do it
...@@ -3146,7 +3143,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp) ...@@ -3146,7 +3143,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
expand_inc (quotient, const1_rtx); expand_inc (quotient, const1_rtx);
expand_dec (remainder, op1); expand_dec (remainder, op1);
emit_label (label); emit_label (label);
return rem_flag ? remainder : quotient; return gen_lowpart (mode, rem_flag ? remainder : quotient);
} }
/* No luck with division elimination or divmod. Have to do it /* No luck with division elimination or divmod. Have to do it
...@@ -3213,7 +3210,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp) ...@@ -3213,7 +3210,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
expand_inc (quotient, const1_rtx); expand_inc (quotient, const1_rtx);
expand_dec (remainder, op1); expand_dec (remainder, op1);
emit_label (label); emit_label (label);
return rem_flag ? remainder : quotient; return gen_lowpart (mode, rem_flag ? remainder : quotient);
} }
/* No luck with division elimination or divmod. Have to do it /* No luck with division elimination or divmod. Have to do it
......
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