(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
|
Finally, reload the inner expression if it is a register that is in
|
||||||
the class whose registers cannot be referenced in a different size
|
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
|
#ifdef CLASS_CANNOT_CHANGE_SIZE
|
||||||
&& class != CLASS_CANNOT_CHANGE_SIZE
|
&& class != CLASS_CANNOT_CHANGE_SIZE
|
||||||
#endif
|
#endif
|
||||||
|
@ -898,7 +900,7 @@ push_reload (in, out, inloc, outloc, class,
|
||||||
storing in a subreg is entitled to clobber it all
|
storing in a subreg is entitled to clobber it all
|
||||||
(except in the case of STRICT_LOW_PART,
|
(except in the case of STRICT_LOW_PART,
|
||||||
and in that case the constraint should label it input-output.) */
|
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
|
#ifdef CLASS_CANNOT_CHANGE_SIZE
|
||||||
&& class != CLASS_CANNOT_CHANGE_SIZE
|
&& class != CLASS_CANNOT_CHANGE_SIZE
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue