This is the mail archive of the gcc-patches@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]

Re: ia64 port


	If long int is a 64 bit type on the ia64 (and ia64.h makes me think that
	at least by default it is) then for building the Fortran Frontend you
	need the same hack that the Alpha and Sparc64 targets use

Indeed I do.  Since the tests are getting rather long, I created a new
macro FFETARGET_32bit_longs so that we only need one copy of the tests instead
of 5.  I haven't checked this in yet in case any of the fortran maintainers
want to comment on it.  I will check it in after fews days if I don't get
any comments.

With this patch, I get 35 g77 testsuite failures.  About half of those seem
to be instabilities with the FSF snapshot I took, and about half of the rest
seem to be due to a known bug with my libm (it was miscompiled), so overall
it looks pretty good

Fri Mar 17 14:21:22 2000  Jim Wilson  <wilson@cygnus.com>

	* f/target.h (FFETARGET_32bit_longs): New.  Define for alpha, sparc64,
	and ia64.
	(ffetargetInteger1, ffetargetLogical1, ffetargetReal1, ffetargetReal2,
	ffetarget_integerdefault_is_magical): Use FFETARGET_32bit_longs.

Index: target.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/f/target.h,v
retrieving revision 1.7
diff -p -r1.7 target.h
*** target.h	1999/12/14 08:53:53	1.7
--- target.h	2000/03/17 22:20:33
*************** the Free Software Foundation, 59 Temple 
*** 234,239 ****
--- 234,243 ----
  #define FFETARGET_f2cTYLOGICAL2 13
  #define FFETARGET_f2cTYQUAD 14
  
+ #if !defined(__alpha__) && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__))) && (!defined(__ia64__) || !defined(__LP64__))
+ #define FFETARGET_32bit_longs
+ #endif
+ 
  /* Typedefs. */
  
  typedef unsigned char ffetargetAlign;	/* ffetargetOffset for alignment. */
*************** typedef long long ffetargetOffset;
*** 247,253 ****
  #define ffetargetOffset_f "ll"
  
  #if FFETARGET_okINTEGER1
! #if !defined(__alpha__) && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__)))
  typedef long int ffetargetInteger1;
  #define ffetargetInteger1_f "l"
  #else
--- 251,257 ----
  #define ffetargetOffset_f "ll"
  
  #if FFETARGET_okINTEGER1
! #ifdef FFETARGET_32bit_longs
  typedef long int ffetargetInteger1;
  #define ffetargetInteger1_f "l"
  #else
*************** typedef ? ffetargetInteger8;
*** 288,294 ****
  ?
  #endif
  #if FFETARGET_okLOGICAL1
! #if !defined(__alpha__) && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__)))
  typedef long int ffetargetLogical1;
  #define ffetargetLogical1_f "l"
  #else
--- 292,298 ----
  ?
  #endif
  #if FFETARGET_okLOGICAL1
! #ifdef FFETARGET_32bit_longs
  typedef long int ffetargetLogical1;
  #define ffetargetLogical1_f "l"
  #else
*************** typedef ? ffetargetLogical8;
*** 330,336 ****
  #endif
  #if FFETARGET_okREAL1
  #ifdef REAL_ARITHMETIC
! #if !defined(__alpha__) && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__)))
  typedef long int ffetargetReal1;
  #define ffetargetReal1_f "l"
  #define ffetarget_cvt_r1_to_rv_ REAL_VALUE_UNTO_TARGET_SINGLE
--- 334,340 ----
  #endif
  #if FFETARGET_okREAL1
  #ifdef REAL_ARITHMETIC
! #ifdef FFETARGET_32bit_longs
  typedef long int ffetargetReal1;
  #define ffetargetReal1_f "l"
  #define ffetarget_cvt_r1_to_rv_ REAL_VALUE_UNTO_TARGET_SINGLE
*************** typedef float ffetargetReal1;
*** 354,360 ****
  #endif
  #if FFETARGET_okREAL2
  #ifdef REAL_ARITHMETIC
! #if !defined(__alpha__) && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__)))
  typedef struct
    {
      long int v[2];
--- 358,364 ----
  #endif
  #if FFETARGET_okREAL2
  #ifdef REAL_ARITHMETIC
! #ifdef FFETARGET_32bit_longs
  typedef struct
    {
      long int v[2];
*************** void *ffetarget_memcpy_ (void *dst, void
*** 1496,1502 ****
  #define ffetarget_init_2()
  #define ffetarget_init_3()
  #define ffetarget_init_4()
! #if !defined(__alpha__) && (!defined(__sparc__) || (!defined(__sparcv9) && !defined(__arch64__)))
  #define ffetarget_integerdefault_is_magical(i) \
    (((unsigned long int) i) == FFETARGET_integerBIG_MAGICAL)
  #else
--- 1500,1506 ----
  #define ffetarget_init_2()
  #define ffetarget_init_3()
  #define ffetarget_init_4()
! #ifdef FFETARGET_32bit_longs
  #define ffetarget_integerdefault_is_magical(i) \
    (((unsigned long int) i) == FFETARGET_integerBIG_MAGICAL)
  #else

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