This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GCC 3.1 ARM assembler problem (glibc 2.2.5 related) [was Re: ARM gcc 3.1 crosscompiler on host i386 linux build fails]
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: Karel Gardas <kgardas at objectsecurity dot com>
- Cc: Alan Modra <amodra at bigpond dot net dot au>, gcc at gcc dot gnu dot org, Richard dot Earnshaw at arm dot com, gcc-patches at gcc dot gnu dot org
- Date: Wed, 10 Apr 2002 15:09:58 +0100
- Subject: Re: GCC 3.1 ARM assembler problem (glibc 2.2.5 related) [was Re: ARM gcc 3.1 crosscompiler on host i386 linux build fails]
- Organization: ARM Ltd.
- Reply-to: Richard dot Earnshaw at arm dot com
> /tmp/cc6YDzXe.s: Assembler messages:
> /tmp/cc6YDzXe.s:1083: Error: illegal value for co-processor offset
The following patch fixes this.
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.
Index: arm.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/arm/arm.md,v
retrieving revision 1.89.2.4
diff -p -r1.89.2.4 arm.md
*** arm.md 26 Mar 2002 18:02:34 -0000 1.89.2.4
--- arm.md 10 Apr 2002 10:36:46 -0000
***************
*** 3963,3969 ****
[(set_attr "length" "8")
(set_attr "type" "*,load,store2")
(set_attr "pool_range" "*,1020,*")
! (set_attr "neg_pool_range" "*,1012,*")]
)
;;; ??? This should have alternatives for constants.
--- 3963,3969 ----
[(set_attr "length" "8")
(set_attr "type" "*,load,store2")
(set_attr "pool_range" "*,1020,*")
! (set_attr "neg_pool_range" "*,1008,*")]
)
;;; ??? This should have alternatives for constants.
***************
*** 5093,5100 ****
(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,*,*,*")]
)
;; Software floating point version. This is essentially the same as movdi.
--- 5093,5100 ----
(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" "*,*,*,*,1020,*,*,1024,*,*,*")
! (set_attr "neg_pool_range" "*,*,*,*,1008,*,*,1008,*,*,*")]
)
;; Software floating point version. This is essentially the same as movdi.
***************
*** 5109,5116 ****
"* 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")]
)
;;; ??? This should have alternatives for constants.
--- 5109,5116 ----
"* return output_move_double (operands);"
[(set_attr "length" "8,8,8")
(set_attr "type" "*,load,store2")
! (set_attr "pool_range" "1020")
! (set_attr "neg_pool_range" "1008")]
)
;;; ??? This should have alternatives for constants.
***************
*** 5184,5190 ****
(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,*,*,*,*")]
)
--- 5184,5190 ----
(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" "*,*,1004,*,*,*,*")]
)