aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>2000-02-02 21:08:47 +0000
committerJim Wilson <wilson@gcc.gnu.org>2000-02-02 13:08:47 -0800
commit3e7cd49fee867f8af4815815ded1dd621d27ceab (patch)
tree42c23592ee6d9b8f386315c9a3a1a940c694b686
parent2cade2ad5da80301a01913aa8b4a2d5c8e248cab (diff)
downloadgcc-3e7cd49fee867f8af4815815ded1dd621d27ceab.zip
gcc-3e7cd49fee867f8af4815815ded1dd621d27ceab.tar.gz
gcc-3e7cd49fee867f8af4815815ded1dd621d27ceab.tar.bz2
Fix sparc -msoft-float abort while compiling newlib.
* config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Delete 'E' check for FP constants. Add ! TARGET_FPU check for FP constants. From-SVN: r31762
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sparc/sparc.h8
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 69794c0..9e38249 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Wed Feb 2 13:07:10 2000 Jim Wilson <wilson@cygnus.com>
+
+ * config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Delete 'E' check for
+ FP constants. Add ! TARGET_FPU check for FP constants.
+
2000-02-02 Clinton Popetz <cpopetz@cygnus.com>
* flow.c (find_basic_blocks): Don't kill label_value_list
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index e69217d..495eed1 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -1475,8 +1475,9 @@ extern char leaf_reg_remap[];
in class CLASS, return the class of reg to actually use.
In general this is just CLASS; but on some machines
in some cases it is preferable to use a more restrictive class. */
-/* - We can't load constants into FP registers. We can't load any FP
- constant if an 'E' constraint fails to match it.
+/* - We can't load constants into FP registers.
+ - We can't load FP constants into integer registers when soft-float,
+ because there is no soft-float pattern with a r/F constraint.
- Try and reload integer constants (symbolic or otherwise) back into
registers directly, rather than having them dumped to memory. */
@@ -1484,8 +1485,7 @@ extern char leaf_reg_remap[];
(CONSTANT_P (X) \
? ((FP_REG_CLASS_P (CLASS) \
|| (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \
- && (HOST_FLOAT_FORMAT != IEEE_FLOAT_FORMAT \
- || HOST_BITS_PER_INT != BITS_PER_WORD))) \
+ && ! TARGET_FPU)) \
? NO_REGS \
: (!FP_REG_CLASS_P (CLASS) \
&& GET_MODE_CLASS (GET_MODE (X)) == MODE_INT) \