[Bug fortran/103931] New: Type name "c_ptr" is ambiguous when iso_c_binding is imported both directly and indirectly
trnka at scm dot com
gcc-bugzilla@gcc.gnu.org
Thu Jan 6 15:39:07 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103931
Bug ID: 103931
Summary: Type name "c_ptr" is ambiguous when iso_c_binding is
imported both directly and indirectly
Product: gcc
Version: 10.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: trnka at scm dot com
Target Milestone: ---
Created attachment 52135
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52135&action=edit
full testcase demonstrating the bug
Compiling the attached test case fails for me on gfortran 11.2.1 20210728 (Red
Hat 11.2.1-1):
$ gfortran -c gcc-ambiguous-cptr.f90
gcc-ambiguous-cptr.f90:97:19:
97 | type (C_PTR) :: context
| 1
Error: Type name ‘c_ptr’ at (1) is ambiguous
(Sorry for the convoluted module structure, I can't seem to reduce it further
without making the issue disappear.)
The issue occurs in this piece of code:
subroutine HProc()
use FModule
use ISO_C_BINDING
use GModule
type (C_PTR) :: context
end subroutine
Here, both FModule and GModule use ISO_C_BINDING indirectly in different ways,
so their module files contain c_ptr which gets picked up. Apparently, c_ptr
then gets marked as ambiguous by check_for_ambiguous() in
module.c:read_module() while reading GModule.
After compiling it once as above to generate all the modules, you can add "-cpp
-DNODEPS=1" for further testing to focus on the problematic part (using
existing module files).
Strangely enough, gfortran 9.3.1 20200804 compiles the test without errors when
compiling everything but fails with the above error with NODEPS. gfortran 11
fails in both modes. Not sure if that counts as a regression or if it's just a
random coincidence. I can bisect that if desired.
More information about the Gcc-bugs
mailing list