https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84591
--- Comment #6 from kargls at comcast dot net ---
(In reply to anlauf from comment #5)
> (In reply to kargls from comment #4)
> > (In reply to Thomas Koenig from comment #3)
> > > Resolve as invalid?
> >
> > IMHO. Yes.
> >
> > IMNSHO, -fdefault-integer-8 should have been removed from
> > gfortran years ago. I even submitted a patch to do so,
> > which was rejected. Codes in the testsuite are meant to
> > test a patch fixes a real issue. Running the testsuite
> > with -fdefault-integer-8 is simply going to run into
> > issues with BIND(C).
>
> Careful. The -fdefault-integer-8 is just a tip of a difference iceberg.
Well, I disagree. -fdefault-integer-8 should have been removed.
If one thinks they needs that option, then they likely are looking
for -finteger-4-integer-8.
> Omit this option, and replace c_int by c_long. You'll then get:
>
> bind_c_usage_10.f03:45:32:
>
> 45 | integer(c_long) function func1() bind(c, name="myFunc1")
> | 1
> Error: FUNCTION result func1 cannot be of type INTEGER(8) in FUNCTION func1
> at (1)
>
> This is a resolution bug in gfortran, and there is IIRC sort of a duplicate.
Different bug(?)
See comment #2 on why -fdefault-integer-8 simply cannot work with BIND(C).
Blindly applying -fdefault-integer-8 across the entire testsuite is a
rather interesting exercise (where I'm being polite here).
As to the above error, if you remove the ENTRY statement and following
code, it compiles without error.
module mod
use iso_c_binding
implicit none
contains
integer(c_long) function func1() bind(c, name="myFunc1")
real(c_float) :: func1ent
func1 = -5 ! Note, type conversion occurs here
return
! entry func1ent()
func1ent = -55.0
end function func1
end module mod
I don't use entry and would need to check the requirement that
BIND(C) place on it.