severe deficiencies with integer(16), real(10), and real(16)

Steve Kargl sgk@troutmask.apl.washington.edu
Sat Aug 20 14:34:00 GMT 2005


Tried to compile

  program a
    integer i
    real(10) x
    x = 1._10
    do i = 1, 10
       x = x**i
       print *, x
    end do
  end program

and got 

kargl[204] gfc41 -static -o z b.f90
b.f90: In function 'MAIN__':
b.f90:4: internal compiler error: in gfc_conv_power_op, at fortran/trans-expr.c:713
Please submit a full bug report,

So, I looked at gfc_conv_power_op and noticed that it has switch
statements that only recognize kind=1,2,4,8 for both integer and
real.  

So, I did
kargl[209] cd gcc/gcc41/gcc/fortran
kargl[210] grep "case 8" *
iresolve.c:    case 8:
iresolve.c:    case 8:
primary.c:    case 8:
trans-expr.c:   case 8:
trans-expr.c:   case 8:
trans-expr.c:   case 8:
trans-expr.c:   case 8:
trans-intrinsic.c:      case 8:
trans-intrinsic.c:      case 8:
trans-intrinsic.c:      case 8:
trans-intrinsic.c:      case 8:
trans-intrinsic.c:    case 8:
trans-intrinsic.c:      case 8:
trans-intrinsic.c:      case 8:
trans-intrinsic.c:      case 8:

In every one of the switch statements that I've examined, I
find that we incorrectly handle integer(16) and/or real(10)
and/or real(16).  Some of these I think I can fix, but others
I'll need some input.  For example, do we have a BUILT_IN_TRUNCL.

-- 
Steve



More information about the Fortran mailing list