mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-03 07:10:28 +08:00
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
This commit is contained in:
parent
bd113227bf
commit
b4d4a7d4b0
@ -1,3 +1,9 @@
|
||||
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))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user