emit-rtl.c (gen_realpart): Issue an error for cases GCC can not handle at this time instead of silently...

* emit-rtl.c (gen_realpart): Issue an error for cases GCC can not
        handle at this time instead of silently generating incorrect code.
        (gen_imagpart): Likewise.

From-SVN: r28105
This commit is contained in:
Jeffrey A Law 1999-07-14 23:04:45 +00:00 committed by Jeff Law
parent 87afbee625
commit 40c0c3cf73
2 changed files with 14 additions and 0 deletions

View File

@ -1,5 +1,9 @@
Wed Jul 14 23:28:06 1999 Jeffrey A Law (law@cygnus.com)
* emit-rtl.c (gen_realpart): Issue an error for cases GCC can not
handle at this time instead of silently generating incorrect code.
(gen_imagpart): Likewise.
* reload.c (find_reloads): Emit a USE for a pseudo register without
a hard register if we could not create an optional reload for the
pseudo.

View File

@ -966,6 +966,11 @@ gen_realpart (mode, x)
{
if (GET_CODE (x) == CONCAT && GET_MODE (XEXP (x, 0)) == mode)
return XEXP (x, 0);
else if (WORDS_BIG_ENDIAN
&& GET_MODE_BITSIZE (mode) < BITS_PER_WORD
&& REG_P (x)
&& REGNO (x) < FIRST_PSEUDO_REGISTER)
fatal ("Unable to access real part of complex value in a hard register on this target");
else if (WORDS_BIG_ENDIAN)
return gen_highpart (mode, x);
else
@ -984,6 +989,11 @@ gen_imagpart (mode, x)
return XEXP (x, 1);
else if (WORDS_BIG_ENDIAN)
return gen_lowpart (mode, x);
else if (!WORDS_BIG_ENDIAN
&& GET_MODE_BITSIZE (mode) < BITS_PER_WORD
&& REG_P (x)
&& REGNO (x) < FIRST_PSEUDO_REGISTER)
fatal ("Unable to access imaginary part of complex value in a hard register on this target");
else
return gen_highpart (mode, x);
}