diff options
| author | bje <bje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-01-17 19:58:35 +0000 |
|---|---|---|
| committer | bje <bje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-01-17 19:58:35 +0000 |
| commit | 43ff0fd1dd53d923cb7292c16c46cc914cc27dca (patch) | |
| tree | b55036444726b6cd1120c89f2f8cf20733776507 /gcc/config/rs6000/rs6000.c | |
| parent | 45e39f4992c86a46b7eecb256818ffcb9f833324 (diff) | |
| download | ppe42-gcc-43ff0fd1dd53d923cb7292c16c46cc914cc27dca.tar.gz ppe42-gcc-43ff0fd1dd53d923cb7292c16c46cc914cc27dca.zip | |
* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject
decimal float modes for all floating point registers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109836 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000/rs6000.c')
| -rw-r--r-- | gcc/config/rs6000/rs6000.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index b41a3934f56..97430dd414e 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -1031,10 +1031,12 @@ rs6000_hard_regno_mode_ok (int regno, enum machine_mode mode) if (INT_REGNO_P (regno)) return INT_REGNO_P (regno + HARD_REGNO_NREGS (regno, mode) - 1); - /* The float registers can only hold floating modes and DImode. */ + /* The float registers can only hold floating modes and DImode. + This also excludes decimal float modes. */ if (FP_REGNO_P (regno)) return (SCALAR_FLOAT_MODE_P (mode) + && !DECIMAL_FLOAT_MODE_P (mode) && FP_REGNO_P (regno + HARD_REGNO_NREGS (regno, mode) - 1)) || (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE_SIZE (mode) == UNITS_PER_FP_WORD); |

