aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@kss-loka.si>2006-10-28 11:20:23 +0200
committerUros Bizjak <uros@gcc.gnu.org>2006-10-28 11:20:23 +0200
commit87ccbc5cdd38ffd76515d6c6df48d1680ff0b380 (patch)
tree94ba421fe2e57d7dae9d752a8559e5abfaf85a93
parentf356a436f04c20db31d307e2e31e4dab21d0543b (diff)
downloadgcc-87ccbc5cdd38ffd76515d6c6df48d1680ff0b380.zip
gcc-87ccbc5cdd38ffd76515d6c6df48d1680ff0b380.tar.gz
gcc-87ccbc5cdd38ffd76515d6c6df48d1680ff0b380.tar.bz2
i386.c (output_387_ffreep): Create output from a template string for !HAVE_AS_IX86_FFREEP.
* config/i386/i386.c (output_387_ffreep): Create output from a template string for !HAVE_AS_IX86_FFREEP. From-SVN: r118101
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c20
2 files changed, 14 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 855dccb..d1d2e4e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-10-28 Uros Bizjak <uros@kss-loka.si>
+
+ * config/i386/i386.c (output_387_ffreep): Create output from a
+ template string for !HAVE_AS_IX86_FFREEP.
+
2006-10-27 Eric Christopher <echristo@apple.com>
* config/darwin.c: Fix formatting and grammar.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 41d76c3..14974ff 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -8698,17 +8698,15 @@ output_387_ffreep (rtx *operands ATTRIBUTE_UNUSED, int opno)
#if HAVE_AS_IX86_FFREEP
return opno ? "ffreep\t%y1" : "ffreep\t%y0";
#else
- switch (REGNO (operands[opno]))
- {
- case FIRST_STACK_REG + 0: return ".word\t0xc0df";
- case FIRST_STACK_REG + 1: return ".word\t0xc1df";
- case FIRST_STACK_REG + 2: return ".word\t0xc2df";
- case FIRST_STACK_REG + 3: return ".word\t0xc3df";
- case FIRST_STACK_REG + 4: return ".word\t0xc4df";
- case FIRST_STACK_REG + 5: return ".word\t0xc5df";
- case FIRST_STACK_REG + 6: return ".word\t0xc6df";
- case FIRST_STACK_REG + 7: return ".word\t0xc7df";
- }
+ {
+ static char retval[] = ".word\t0xc_df";
+ int regno = REGNO (operands[opno]);
+
+ gcc_assert (FP_REGNO_P (regno));
+
+ retval[9] = '0' + (regno - FIRST_STACK_REG);
+ return retval;
+ }
#endif
return opno ? "fstp\t%y1" : "fstp\t%y0";