aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-03-21 21:28:23 +0000
committerRichard Stallman <rms@gnu.org>1993-03-21 21:28:23 +0000
commitd632e927760f2fad2c3a0f5072d376beb9e1f701 (patch)
tree70ac0181113405293d936abaa186307fa116fdf9 /gcc
parent5cb10f0e9753338f38f39d6e6e5317f76167b061 (diff)
downloadgcc-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.c6
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);