Commit b4d4a7d4 by Mark Shinwell Committed by Mark Shinwell

combine.c (setup_incoming_promotions): Ensure that arguments that have not…

combine.c (setup_incoming_promotions): Ensure that arguments that have not undergone mode promotions do not...

	gcc/
	* combine.c (setup_incoming_promotions): Ensure that
	arguments that have not undergone mode promotions do not
	incorrectly get marked as being sign- or zero-extended.

From-SVN: r129131
parent bd113227
2007-10-08 Mark Shinwell <shinwell@codesourcery.com>
* combine.c (setup_incoming_promotions): Ensure that
arguments that have not undergone mode promotions do not
incorrectly get marked as being sign- or zero-extended.
2007-10-08 Richard Guenther <rguenther@suse.de>
PR middle-end/33693
......@@ -1363,15 +1363,17 @@ setup_incoming_promotions (rtx first)
/* Eliminate sign extensions in the callee when possible. Only
do this when:
(a) the mode of the register is the same as the mode of
(a) a mode promotion has occurred;
(b) the mode of the register is the same as the mode of
the argument as it is passed; and
(b) the signedness does not change across any of the promotions; and
(c) when no language-level promotions (which we cannot guarantee
(c) the signedness does not change across any of the promotions; and
(d) when no language-level promotions (which we cannot guarantee
will have been done by an external caller) are necessary,
unless we know that this function is only ever called from
the current compilation unit -- all of whose call sites will
do the mode1 --> mode2 promotion. */
if (mode3 == mode4
if (mode1 != mode3
&& mode3 == mode4
&& uns1 == uns3
&& (mode1 == mode2 || strictly_local))
{
......
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