http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47240
--- Comment #11 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-01-12
21:49:23 UTC ---
(In reply to comment #9)
> > pr35971_red.f90:67:0: internal compiler error: verify_stmts failed
I can reproduce this with a clean trunk on x86-64-linux with both -m32 and
-m64.
> I can not reproduce this at r168655 (plus patch from comment #7)
How do you configure gfortran? (I did a full bootstrap and did *not* use
--enable-checking=release.)
* * *
Regarding the test case: I think it is invalid:
function aux(x)
interface
subroutine x() bind(C)
end subroutine x
end interface
but you pass as actual argument the function (!) "make_mess" which take also
arguments to "aux". (In get_funloc everything is still fine - the actual
argument has the proper type: "abstract_fun".)
I believe that the argument mismatch is invalid. And the compiler has no chance
to detect this at (front-end) compile time as you use a dummy "external y"
instead of the explicit interface of "aux".
Like always: A compiler can tolerate to a certain extend argument mismatches -
but especially with higher optimization values, it trusts the user that (s)he
knows what he is doing - and that (s)he stays within what the standard allows.
(The same is true for alias analysis.)