Commit 03743286 by Ian Lance Taylor Committed by Ian Lance Taylor

re PR rtl-optimization/31455 (lower subreg causes a performance regression in…

re PR rtl-optimization/31455 (lower subreg causes a performance regression in the inner loop sometimes)

	PR rtl-optimization/31455
	* lower-subreg.c (find_decomposable_subregs): Don't decompose
	subregs which have a cast between modes which are not tieable.

From-SVN: r125265
parent 96598938
2007-06-01 Ian Lance Taylor <iant@google.com>
PR rtl-optimization/31455
* lower-subreg.c (find_decomposable_subregs): Don't decompose
subregs which have a cast between modes which are not tieable.
2007-06-01 Uros Bizjak <ubizjak@gmail.com>
* expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
......
......@@ -281,6 +281,18 @@ find_decomposable_subregs (rtx *px, void *data)
bitmap_set_bit (decomposable_context, regno);
return -1;
}
/* If this is a cast from one mode to another, where the modes
have the same size, and they are not tieable, then mark this
register as non-decomposable. If we decompose it we are
likely to mess up whatever the backend is trying to do. */
if (outer_words > 1
&& outer_size == inner_size
&& !MODES_TIEABLE_P (GET_MODE (x), GET_MODE (inner)))
{
bitmap_set_bit (non_decomposable_context, regno);
return -1;
}
}
else if (REG_P (x))
{
......
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