diff options
author | Richard Stallman <rms@gnu.org> | 1993-03-21 21:28:23 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-03-21 21:28:23 +0000 |
commit | d632e927760f2fad2c3a0f5072d376beb9e1f701 (patch) | |
tree | 70ac0181113405293d936abaa186307fa116fdf9 /gcc | |
parent | 5cb10f0e9753338f38f39d6e6e5317f76167b061 (diff) | |
download | gcc-d632e927760f2fad2c3a0f5072d376beb9e1f701.zip gcc-d632e927760f2fad2c3a0f5072d376beb9e1f701.tar.gz gcc-d632e927760f2fad2c3a0f5072d376beb9e1f701.tar.bz2 |
(copy_rtx_and_substitute, case USE):
Don't remove a subreg if ORIG had one.
From-SVN: r3814
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/integrate.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c index 1b358e1..95917c8 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -1981,9 +1981,11 @@ copy_rtx_and_substitute (orig, map) case USE: case CLOBBER: /* USE and CLOBBER are ordinary, but we convert (use (subreg foo)) - to (use foo). */ + to (use foo) if the original insn didn't have a subreg. + Removing the subreg distorts the VAX movstrhi pattern + by changing the mode of an operand. */ copy = copy_rtx_and_substitute (XEXP (orig, 0), map); - if (GET_CODE (copy) == SUBREG) + if (GET_CODE (copy) == SUBREG && GET_CODE (XEXP (orig, 0)) != SUBREG) copy = SUBREG_REG (copy); return gen_rtx (code, VOIDmode, copy); |