From 0be5cf851a3c590b043b0e55dad2999c72237ac7 Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Wed, 10 Apr 2002 14:06:38 +0000 Subject: [PATCH] re PR target/817 (ARM compiler generates out-of-range accesses to constant pool data) 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 | 11 +++++++++++ gcc/config/arm/arm.md | 12 ++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5ce2348093c..9b53b5551cf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2002-04-10 Richard Earnshaw + + 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 * config/mips/mips.c (mips_va_arg): When using the struct version diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 89e14c2d847..8b45862bac0 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -3963,7 +3963,7 @@ [(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. @@ -5095,8 +5095,8 @@ (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. @@ -5111,8 +5111,8 @@ "* 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. @@ -5186,7 +5186,7 @@ (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,*,*,*,*")] ) -- 2.30.2