diff options
author | Jeff Law <law@gcc.gnu.org> | 1994-07-12 14:23:58 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1994-07-12 14:23:58 -0600 |
commit | a08e749380f790c425ee7e6615bff03be4b0a780 (patch) | |
tree | af5f47faaf8e7ca36a3b59f904f8c388313467b7 /gcc | |
parent | ca192950181ba57a9ab7c5d6aa388afa8723806c (diff) | |
download | gcc-a08e749380f790c425ee7e6615bff03be4b0a780.zip gcc-a08e749380f790c425ee7e6615bff03be4b0a780.tar.gz gcc-a08e749380f790c425ee7e6615bff03be4b0a780.tar.bz2 |
pa.h (GO_IF_LEGITIMATE_ADDRESS): Only allow immediate addressing using 5 bits to avoid losing with FP loads and...
* pa.h (GO_IF_LEGITIMATE_ADDRESS): Only allow immediate addressing
using 5 bits to avoid losing with FP loads and stores on page zero.
From-SVN: r7752
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/pa/pa.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 2991f4f..ed20c28 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -1268,7 +1268,11 @@ extern union tree_node *current_function_decl; REG+REG, REG+(REG*SCALE) or REG+SMALLINT. But we can treat a SYMBOL_REF as legitimate if it is part of this function's constant-pool, because such addresses can actually - be output as REG+SMALLINT. */ + be output as REG+SMALLINT. + + Note we only allow 5 bit immediates for access to a constant address; + doing so avoids losing for loading/storing a FP register at an address + which will not fit in 5 bits. */ #define VAL_5_BITS_P(X) ((unsigned)(X) + 0x10 < 0x20) #define INT_5_BITS(X) VAL_5_BITS_P (INTVAL (X)) @@ -1333,7 +1337,7 @@ extern union tree_node *current_function_decl; goto ADDR; \ else if (GET_CODE (X) == LABEL_REF \ || (GET_CODE (X) == CONST_INT \ - && INT_14_BITS (X))) \ + && INT_5_BITS (X))) \ goto ADDR; \ } |