This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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]


> /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,*,*,*,*")]
  )
  
  

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]