aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcse.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-05-29 00:50:16 +0000
committerJeff Law <law@gcc.gnu.org>1998-05-28 18:50:16 -0600
commitd3903c22d54559908a790f1aa257a20c783aea91 (patch)
tree2b4baed9c1988440f8c4b3cd91c6a5e0413e63d2 /gcc/gcse.c
parent1541dfa56c7e44b8d2f817c2ceb76bfef5a68054 (diff)
downloadgcc-d3903c22d54559908a790f1aa257a20c783aea91.zip
gcc-d3903c22d54559908a790f1aa257a20c783aea91.tar.gz
gcc-d3903c22d54559908a790f1aa257a20c783aea91.tar.bz2
gcse.c (pre_delete): Fix code to determine the mode of the reaching pseudo register.
* gcse.c (pre_delete): Fix code to determine the mode of the reaching pseudo register. From-SVN: r20134
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r--gcc/gcse.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c
index abfc1d1..2c6a9d1 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -4548,15 +4548,17 @@ pre_delete ()
if (TEST_BIT (ppin, indx))
{
- /* Create a pseudo-reg to store the result of reaching
- expressions into. */
- if (expr->reaching_reg == NULL)
- expr->reaching_reg = gen_reg_rtx (GET_MODE (expr->expr));
-
set = single_set (insn);
if (! set)
abort ();
+ /* Create a pseudo-reg to store the result of reaching
+ expressions into. Get the mode for the new pseudo
+ from the mode of the original destination pseudo. */
+ if (expr->reaching_reg == NULL)
+ expr->reaching_reg
+ = gen_reg_rtx (GET_MODE (SET_DEST (set)));
+
/* In theory this should never fail since we're creating
a reg->reg copy.