patch ppc-e500: DW_OP_piece endian and minor fix

Aldy Hernandez aldyh@redhat.com
Thu Mar 13 15:15:00 GMT 2003


First.  DW_OP_piece should be memory ordered, so we should output the 
halves correctly wrt endianness.

Second.  I've changed checking for TARGET_SPE to use the processor type 
when dealing with MASK_STRING.  I think a more generic solution is in 
order if more non-string operation chips come about 
(TARGET_HAS_STRING??), but for now this will do.

Applied to mainline.

2003-03-13  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_dwarf_register_span):
	Differentiate endianness.
	(s6000_override_options): Use cpu type instead of TARGET_SPE.

Index: config/rs6000/rs6000.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.437
diff -c -p -r1.437 rs6000.c
*** config/rs6000/rs6000.c	11 Mar 2003 21:26:12 -0000	1.437
--- config/rs6000/rs6000.c	13 Mar 2003 14:54:20 -0000
*************** rs6000_override_options (default_cpu)
*** 700,706 ****

     /* The e500 does not have string instructions, and we set
        MASK_STRING above when optimizing for size.  */
!   if (TARGET_SPE && (target_flags & MASK_STRING) != 0)
       target_flags = target_flags & ~MASK_STRING;

     /* Handle -m(no-)longcall option.  This is a bit of a cheap hack,
--- 700,706 ----

     /* The e500 does not have string instructions, and we set
        MASK_STRING above when optimizing for size.  */
!   if (rs6000_cpu == PROCESSOR_PPC8540 && (target_flags & MASK_STRING) 
!= 0)
       target_flags = target_flags & ~MASK_STRING;

     /* Handle -m(no-)longcall option.  This is a bit of a cheap hack,
*************** rs6000_dwarf_register_span (reg)
*** 13755,13766 ****
        64-bits.  */
     return
       gen_rtx_PARALLEL (VOIDmode,
! 		      gen_rtvec (2,
! 				 gen_rtx_REG (SImode, regno),
! 				 /* Who, where, what?  1200?  This
! 				    will get changed to a sane value
! 				    when the SPE ABI finalizes.  */
! 				 gen_rtx_REG (SImode, regno + 1200)));
   }

   #include "gt-rs6000.h"
--- 13755,13767 ----
        64-bits.  */
     return
       gen_rtx_PARALLEL (VOIDmode,
! 		      BYTES_BIG_ENDIAN
! 		      ? gen_rtvec (2,
! 				   gen_rtx_REG (SImode, regno + 1200),
! 				   gen_rtx_REG (SImode, regno))
! 		      : gen_rtvec (2,
! 				   gen_rtx_REG (SImode, regno),
! 				   gen_rtx_REG (SImode, regno + 1200)));
   }

   #include "gt-rs6000.h"



More information about the Gcc-patches mailing list