aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2003-04-03 00:42:59 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2003-04-02 22:42:59 +0000
commita67a3220ed2db65ffacde4f4dd91f18d9ff76b0f (patch)
treebc0fa32412039a90719788fe30ebf81d656c12f3
parent112924807cce5d54ff6d94409e1e0a9690edf182 (diff)
downloadgcc-a67a3220ed2db65ffacde4f4dd91f18d9ff76b0f.zip
gcc-a67a3220ed2db65ffacde4f4dd91f18d9ff76b0f.tar.gz
gcc-a67a3220ed2db65ffacde4f4dd91f18d9ff76b0f.tar.bz2
re PR inline-asm/8808 (Internal compiler error in extract_constrain_insn_cached)
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c7
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0977704..5142568 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 80a280f..a96c6ec 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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))