re PR inline-asm/8808 (Internal compiler error in extract_constrain_insn_cached)
authorJan Hubicka <jh@suse.cz>
Wed, 2 Apr 2003 22:42:59 +0000 (00:42 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 2 Apr 2003 22:42:59 +0000 (22:42 +0000)
PR inline-asm/8088
* i386.c (ix86_hard_regno_mode_ok):  Return 0 for MMX/SSE registers
when MMX/SSE is not available.

From-SVN: r65181

gcc/ChangeLog
gcc/config/i386/i386.c

index 0977704b2ec24fd9e6a5be28e01c6582ef50cd34..514256844f3b5dbd4e659b39078379fc3f68133e 100644 (file)
@@ -1,3 +1,9 @@
+Thu Apr  3 00:31:21 CEST 2003  Jan Hubicka  <jh@suse.cz>
+
+       PR inline-asm/8088
+       * i386.c (ix86_hard_regno_mode_ok):  Return 0 for MMX/SSE registers
+       when MMX/SSE is not available.
+
 2003-04-02  Mike Stump  <mrs@apple.com>
 
        * doc/install.texi (Specific): Update pointers to apple.com.
index 80a280fbcf03f205a579bc18d61a4b981d323530..a96c6ecc436293ba95c9b3498c74a81ea7693ed9 100644 (file)
@@ -6080,13 +6080,11 @@ legitimate_address_p (mode, addr, strict)
             that never results in lea, this seems to be easier and
             correct fix for crash to disable this test.  */
        }
-#if 0
       else if (!CONSTANT_ADDRESS_P (disp))
        {
          reason = "displacement is not constant";
          goto report_error;
        }
-#endif
       else if (TARGET_64BIT && !x86_64_sign_extended_value (disp))
        {
          reason = "displacement is out of range";
@@ -14817,9 +14815,10 @@ ix86_hard_regno_mode_ok (regno, mode)
   if (FP_REGNO_P (regno))
     return VALID_FP_MODE_P (mode);
   if (SSE_REGNO_P (regno))
-    return VALID_SSE_REG_MODE (mode);
+    return (TARGET_SSE ? VALID_SSE_REG_MODE (mode) : 0);
   if (MMX_REGNO_P (regno))
-    return VALID_MMX_REG_MODE (mode) || VALID_MMX_REG_MODE_3DNOW (mode);
+    return (TARGET_MMX
+           ? VALID_MMX_REG_MODE (mode) || VALID_MMX_REG_MODE_3DNOW (mode) : 0);
   /* We handle both integer and floats in the general purpose registers.
      In future we should be able to handle vector modes as well.  */
   if (!VALID_INT_MODE_P (mode) && !VALID_FP_MODE_P (mode))