Index: flang/include/flang/Common/Fortran.h =================================================================== --- flang/include/flang/Common/Fortran.h +++ flang/include/flang/Common/Fortran.h @@ -72,5 +72,8 @@ // Fortran arrays may have up to 15 dimensions (See Fortran 2018 section 5.4.6). static constexpr int maxRank{15}; + +// Fortran names may have up to 63 characters (See Fortran 2018 C601). +static constexpr int maxNameLen{63}; } // namespace Fortran::common #endif // FORTRAN_COMMON_FORTRAN_H_ Index: flang/lib/Semantics/check-declarations.cpp =================================================================== --- flang/lib/Semantics/check-declarations.cpp +++ flang/lib/Semantics/check-declarations.cpp @@ -198,6 +198,12 @@ } void CheckHelper::Check(const Symbol &symbol) { + if (symbol.name().size() > common::maxNameLen) { + messages_.Say(symbol.name(), + "%s has length %d, which is greater than the maximum name length " + "%d"_port_en_US, + symbol.name(), symbol.name().size(), common::maxNameLen); + } if (context_.HasError(symbol)) { return; }