re PR target/817 (ARM compiler generates out-of-range accesses to constant pool data)
authorRichard Earnshaw <rearnsha@arm.com>
Wed, 10 Apr 2002 14:06:38 +0000 (14:06 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Wed, 10 Apr 2002 14:06:38 +0000 (14:06 +0000)
PR target/817
* arm.md (arm_movdi): Adjust neg_pool_range attribute to allow
for the fact that the pool entry uses two words.
(movdf_hard_insn): Similarly.  Also, ADR instruction can span
1k bytes.
(movdf_soft_insn): Similarly.
(movxf_hard_insn): Adjust neg_pool_range attribute to allow
for the fact that the pool entry uses three words.

From-SVN: r52132

gcc/ChangeLog
gcc/config/arm/arm.md

index 5ce2348093c185a73537c9280daedaf770a993e6..9b53b5551cf64102775e581be884342f0c6d50d6 100644 (file)
@@ -1,3 +1,14 @@
+2002-04-10  Richard Earnshaw  <rearnsha@arm.com>
+
+       PR target/817
+       * arm.md (arm_movdi): Adjust neg_pool_range attribute to allow
+       for the fact that the pool entry uses two words.
+       (movdf_hard_insn): Similarly.  Also, ADR instruction can span
+       1k bytes.
+       (movdf_soft_insn): Similarly.
+       (movxf_hard_insn): Adjust neg_pool_range attribute to allow
+       for the fact that the pool entry uses three words.
+
 2002-04-10  Richard Sandiford  <rsandifo@redhat.com>
 
        * config/mips/mips.c (mips_va_arg): When using the struct version
index 89e14c2d8471d8dc33ba858c796608a9dd4d9d88..8b45862bac0d45585e947448aef49097e446acce 100644 (file)
   [(set_attr "length" "8")
    (set_attr "type" "*,load,store2")
    (set_attr "pool_range" "*,1020,*")
-   (set_attr "neg_pool_range" "*,1012,*")]
+   (set_attr "neg_pool_range" "*,1008,*")]
 )
 
 ;;; ??? This should have alternatives for constants.
    (set_attr "predicable" "yes")
    (set_attr "type"
     "load,store2,*,store2,load,ffarith,ffarith,f_load,f_store,r_mem_f,f_mem_r")
-   (set_attr "pool_range" "*,*,*,*,252,*,*,1024,*,*,*")
-   (set_attr "neg_pool_range" "*,*,*,*,244,*,*,1012,*,*,*")]
+   (set_attr "pool_range" "*,*,*,*,1020,*,*,1024,*,*,*")
+   (set_attr "neg_pool_range" "*,*,*,*,1008,*,*,1008,*,*,*")]
 )
 
 ;; Software floating point version.  This is essentially the same as movdi.
   "* return output_move_double (operands);"
   [(set_attr "length" "8,8,8")
    (set_attr "type" "*,load,store2")
-   (set_attr "pool_range" "252")
-   (set_attr "neg_pool_range" "244")]
+   (set_attr "pool_range" "1020")
+   (set_attr "neg_pool_range" "1008")]
 )
 
 ;;; ??? This should have alternatives for constants.
    (set_attr "predicable" "yes")
    (set_attr "type" "ffarith,ffarith,f_load,f_store,r_mem_f,f_mem_r,*")
    (set_attr "pool_range" "*,*,1024,*,*,*,*")
-   (set_attr "neg_pool_range" "*,*,1012,*,*,*,*")]
+   (set_attr "neg_pool_range" "*,*,1004,*,*,*,*")]
 )
 \f