(push_reload): Don't reload inside a SUBREG when SUBREG_WORD is
nonzero. From-SVN: r9757
This commit is contained in:
parent
c102bba010
commit
d030f4b2d7
|
@ -798,9 +798,11 @@ push_reload (in, out, inloc, outloc, class,
|
|||
|
||||
Finally, reload the inner expression if it is a register that is in
|
||||
the class whose registers cannot be referenced in a different size
|
||||
and M1 is not the same size as M2. */
|
||||
and M1 is not the same size as M2. If SUBREG_WORD is nonzero, we
|
||||
cannot reload just the inside since we might end up with the wrong
|
||||
register class. */
|
||||
|
||||
if (in != 0 && GET_CODE (in) == SUBREG
|
||||
if (in != 0 && GET_CODE (in) == SUBREG && SUBREG_WORD (in) == 0
|
||||
#ifdef CLASS_CANNOT_CHANGE_SIZE
|
||||
&& class != CLASS_CANNOT_CHANGE_SIZE
|
||||
#endif
|
||||
|
@ -898,7 +900,7 @@ push_reload (in, out, inloc, outloc, class,
|
|||
storing in a subreg is entitled to clobber it all
|
||||
(except in the case of STRICT_LOW_PART,
|
||||
and in that case the constraint should label it input-output.) */
|
||||
if (out != 0 && GET_CODE (out) == SUBREG
|
||||
if (out != 0 && GET_CODE (out) == SUBREG && SUBREG_WORD (out) == 0
|
||||
#ifdef CLASS_CANNOT_CHANGE_SIZE
|
||||
&& class != CLASS_CANNOT_CHANGE_SIZE
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue