diff options
author | Jim Wilson <wilson@cygnus.com> | 2000-02-02 21:08:47 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2000-02-02 13:08:47 -0800 |
commit | 3e7cd49fee867f8af4815815ded1dd621d27ceab (patch) | |
tree | 42c23592ee6d9b8f386315c9a3a1a940c694b686 | |
parent | 2cade2ad5da80301a01913aa8b4a2d5c8e248cab (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.h | 8 |
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) \ |