diff options
author | Richard Stallman <rms@gnu.org> | 1993-05-02 14:01:55 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-05-02 14:01:55 +0000 |
commit | e05a9da8f93fd0298d26a88ab163848c872fd049 (patch) | |
tree | 8ede9b9f8f3dba9ff05b692626cf0f30ee18196e /gcc | |
parent | a3b75c072c06a26573736ab8a4cfa08e2b1614fd (diff) | |
download | gcc-e05a9da8f93fd0298d26a88ab163848c872fd049.zip gcc-e05a9da8f93fd0298d26a88ab163848c872fd049.tar.gz gcc-e05a9da8f93fd0298d26a88ab163848c872fd049.tar.bz2 |
(push_reload): Allow non-paradoxical SUBREGs of MEM
on machines that extend byte loads.
From-SVN: r4305
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/reload.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index 2053591..944b9a2 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -657,11 +657,13 @@ push_reload (in, out, inloc, outloc, class, in_subreg_loc = inloc; inloc = &SUBREG_REG (in); in = *inloc; +#if ! defined(BYTE_LOADS_ZERO_EXTEND) && ! defined(BYTE_LOADS_SIGN_EXTEND) if (GET_CODE (in) == MEM) /* This is supposed to happen only for paradoxical subregs made by combine.c. (SUBREG (MEM)) isn't supposed to occur other ways. */ if (GET_MODE_SIZE (GET_MODE (in)) > GET_MODE_SIZE (inmode)) abort (); +#endif inmode = GET_MODE (in); } @@ -699,10 +701,12 @@ push_reload (in, out, inloc, outloc, class, { out_subreg_loc = outloc; outloc = &SUBREG_REG (out); - out = *outloc; - if (GET_CODE (out) == MEM + out = *outloc; +#if ! defined(BYTE_LOADS_ZERO_EXTEND) && ! defined(BYTE_LOADS_SIGN_EXTEND) + if (GET_CODE (out) == MEM && GET_MODE_SIZE (GET_MODE (out)) > GET_MODE_SIZE (outmode)) abort (); +#endif outmode = GET_MODE (out); } |