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.

Reply via email to