[Patch, Fortran, OOP] PR 44962: [OOP] ICE with specification expression SIZE(<CLASS>)
Dominique Dhumieres
dominiq@lps.ens.fr
Mon Jul 26 07:20:00 GMT 2010
Janus,
I just noticed that you have changed the test typebound_proc_17.f03
between revisions of your patch:
--- typebound_proc_17_old.f03 2010-07-26 07:45:13.000000000 +0200
+++ /opt/gcc/work/gcc/testsuite/gfortran.dg/typebound_proc_17.f03 2010-07-26 07:15:54.000000000 +0200
@@ -24,14 +24,11 @@ end module array
type :: t2
- real, dimension(irand()+5) :: co2 ! { dg-error "must be constant" }
+ real, dimension(iabs(-3)+2) :: com
end type
-type(t2) :: a
+real, dimension(irand()+2) :: r2 ! { dg-error "must have constant shape" }
-print *, size(a%co2)
-a%co2 = 1.0
-print *, a
end
! { dg-final { cleanup-modules "array" } }
(where I have added the last 4 '-' lines for testing as commented below).
With the latest patch the line
real, dimension(irand()+5) :: co2 ! { dg-error "must be constant" }
in "type :: t2" no longer triggers the error. Is it according the last lines
of f2008 [7.1.11] quoted by Tobias Burnus? If yes, is it normal that
"print *, size(a%co2)" yields 0?
Also when compiled with -std=f2003, both versions give the error:
real, dimension(irand()+*) :: * ! { dg-error "must *" }
1
Error: Specification function 'irand' at (1) must be PURE
Has this constraint been removed in f2008?
Finally, as I said in a previous post, the *rand functions are
g77 extensions and their use should probably discouraged in
post f90 codes. If the issues raised by Tobias appear only
for these functions, is it really necessary to spend too
much time on them?
Cheers,
Dominique
More information about the Gcc-patches
mailing list