http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51522
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED --- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-01-09 13:28:47 UTC --- With the patch for PR 51578 (for GCC 4.7), the ICE is fixed. For the lines integer(c_int) function vect_Utils_vuTriIneqHolds_c(u, v, tol, exception) & use, intrinsic :: iso_c_binding real(c_double) function vect_Utils_vuNorm_c(u, tol, badLevel, exception) bind(c) end function vect_Utils_vuNorm_c one get the errors integer(c_int) function vect_Utils_vuTriIneqHolds_c(u, v, tol, exception)& 1 Error: Parameter 'c_int' at (1) has not been declared or is a variable, which does not reduce to a constant expression real(c_double) function vect_Utils_vuNorm_c(u, tol, badLevel, exception) bind 1 Error: Parameter 'c_double' at (1) has not been declared or is a variable, which does not reduce to a constant expression I think the second one is perfect - there is no "USE ISO_C_Binding" statement in "function vect_Utils_vuNorm_c". The first error is not that good as the problem is the "&" in function foo() & use m A better error message would be a syntax error, pointing at the "&" - but I think it is not really needed and also not easy to give a helpful message. Hence, I close this PR as FIXED. If you think something else should be improved, feel free to reopen this bug. Thanks Adrian for reporting the internal compiler error.