Тестовый файл (test.f90): MODULE TEST USE ISO_C_BINDING INTEGER(C_INT),BIND(C,NAME='_var1') :: A INTEGER(C_INT),BIND(C,NAME='_VAR1') :: B END MODULE TEST Команда компиляции: gfortran -c -ffree-form -ffree-line-length-none -o test.o test.f90 При компиляции версией 7 проблем нет. В версии 8 и 9 при попытке собрать модуль выпадает ошибка, что имена, под которыми эти переменные видны в C, одинаковы, хотя это не так: test.f90:4:42: 3 | INTEGER(C_INT),BIND(C,NAME="_var1") :: A | 2 4 | INTEGER(C_INT),BIND(C,NAME="_VAR1") :: B | 1 Error: Variable ‘b’ from module ‘test’ with binding label ‘_VAR1’ at (1) uses the same global identifier as entity at (2) from module ‘test’ Если закомментировать одну из этих двух строчек, то можно увидеть, что в объектном файле появляется или _var1, или _VAR1. То есть регистр C-имени сохраняется. Считаю появление такой ошибки компилятора ошибкой, он не должен применять FORTRAN-правила именования переменных к C-именам при определении пересечения имён.