[Patch, fortran] PR 64757 - [5 Regression] ICE in fold_convert_loc, at fold-const.c:2353

Dominique Dhumieres dominiq@lps.ens.fr
Mon Feb 2 16:53:00 GMT 2015


Dear Paul,

I have tested your patch at https://gcc.gnu.org/ml/fortran/2015-01/txtwnaoa1115V.txt
(the latest version) and I found that the test type_to_class_3.f03 is miscompiled
(FAIL) with -flto -O0 -m64 (this does not happens with -flto -O0 -m32 or with -Ox and
x!=0).

In addition, while the reduced test

  type :: Test
    integer :: i
  end type

  type :: TestReference
     class(Test), allocatable :: test(:)
  end type

  type(TestReference) :: testList
  type(test), allocatable :: x(:)

 allocate (testList%test(2), source = [Test(99), Test(199)]) ! Works, of course
 print *, size(testList%test)
 x = testList%test
 print *, x
end

gives what I expect, i.e.,

           2
          99         199

  type :: Test
    integer :: i
  end type

  type :: TestReference
     class(Test), allocatable :: test(:)
  end type

  type(TestReference) :: testList
  type(test), allocatable :: x(:)

  testList = TestReference([Test(99), Test(199)])  ! Gave: The rank of the element in the
                                                   ! structure constructor at (1) does not
                                                   ! match that of the component (1/0)
  print *, size(testList%test)
  x = testList%test
  print *, x
end

gives

           1
          99

Last problem I see,

print *, TestReference([Test(99), Test(199)])

gives the following ICE

f951: internal compiler error: Bad IO basetype (7)

type_to_class_3_red_2.f03:12:0:

   print *, TestReference([Test(99), Test(199)])


Cheers,

Dominique



More information about the Gcc-patches mailing list