[flang-commits] [flang] [flang] Fix missing includes in lib/Lower/Support/Utils.cpp (PR #143196)
Michał Górny via flang-commits
flang-commits at lists.llvm.org
Fri Jun 6 13:00:56 PDT 2025
mgorny wrote:
Without this, I'm seeing lots of errors (I guess pch hides them):
```
FAILED: lib/Lower/CMakeFiles/FortranLower.dir/Support/Utils.cpp.o
/usr/lib/ccache/bin/x86_64-pc-linux-gnu-g++ -DFLANG_INCLUDE_TESTS=1 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang_build/lib/Lower -I/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower -I/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include -I/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang_build/include -isystem /usr/lib/llvm/21/include -O2 -pipe -march=native -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-ctad-maybe-unsupported -fno-strict-aliasing -fno-semantic-interposition -std=c++17 -D_GNU_SOURCE -D_DEBUG -D_GLIBCXX_ASSERTIONS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -UNDEBUG -MD -MT lib/Lower/CMakeFiles/FortranLower.dir/Support/Utils.cpp.o -MF lib/Lower/CMakeFiles/FortranLower.dir/Support/Utils.cpp.o.d -o lib/Lower/CMakeFiles/FortranLower.dir/Support/Utils.cpp.o -c /var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp: In function ‘void Fortran::lower::copyFirstPrivateSymbol(AbstractConverter&, const Fortran::semantics::Symbol*, mlir::OpBuilder::InsertPoint*)’:
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:643:5: error: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
643 | converter.copyHostAssociateVar(*sym, copyAssignIP);
| ^~~~~~~~~
In file included from /var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/Support/Utils.h:17,
from /var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:13:
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp: In function ‘void Fortran::lower::privatizeSymbol(AbstractConverter&, fir::FirOpBuilder&, SymMap&, llvm::SetVector<const Fortran::semantics::Symbol*>&, llvm::SmallSet<const Fortran::semantics::Symbol*, 16>&, const Fortran::semantics::Symbol*, OperandsStructType*)’:
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:666:38: warning: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
666 | ? converter.shallowLookupSymbol(*sym)
| ^~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:667:38: warning: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
667 | : converter.lookupOneLevelUpSymbol(*sym);
| ^~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:683:7: error: there are no arguments to ‘TODO’ that depend on a template parameter, so a declaration of ‘TODO’ must be available [-fpermissive]
683 | TODO(symLoc, "create polymorphic host associated copy");
| ^~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:683:7: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:691:5: error: ‘hlfir’ has not been declared
691 | hlfir::Entity entity{hsb.getAddr()};
| ^~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:692:5: error: ‘entity’ was not declared in this scope
692 | entity = genVariableBox(symLoc, firOpBuilder, entity);
| ^~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:692:14: error: there are no arguments to ‘genVariableBox’ that depend on a template parameter, so a declaration of ‘genVariableBox’ must be available [-fpermissive]
692 | entity = genVariableBox(symLoc, firOpBuilder, entity);
| ^~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp: In lambda function:
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:712:20: warning: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
712 | allocType, converter.getKindMap(),
| ^~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:713:9: warning: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
713 | converter.mangleName(*sym) +
| ^~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:724:48: error: ‘omp’ is not a member of ‘mlir’; did you mean ‘llvm::omp’?
724 | if constexpr (std::is_same_v<OpType, mlir::omp::PrivateClauseOp>) {
| ^~~
In file included from /usr/lib/llvm/21/include/llvm/Frontend/OpenMP/OMP.h:16,
from /var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Parser/parse-tree.h:29,
from /var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Semantics/tools.h:21,
from /var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/Support/Utils.h:19:
/usr/lib/llvm/21/include/llvm/Frontend/OpenMP/OMP.h.inc:12:11: note: ‘llvm::omp’ declared here
12 | namespace omp {
| ^~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:724:68: error: template argument 2 is invalid
724 | if constexpr (std::is_same_v<OpType, mlir::omp::PrivateClauseOp>) {
| ^
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:724:69: error: expected unqualified-id before ‘)’ token
724 | if constexpr (std::is_same_v<OpType, mlir::omp::PrivateClauseOp>) {
| ^
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:727:34: error: ‘mlir::omp’ has not been declared
727 | emitCopyRegion ? mlir::omp::DataSharingClauseType::FirstPrivate
| ^~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:728:34: error: ‘mlir::omp’ has not been declared
728 | : mlir::omp::DataSharingClauseType::Private);
| ^~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:736:33: warning: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
736 | fir::ExtendedValue symExV = converter.getSymbolExtendedValue(*sym);
| ^~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:747:26: error: ‘hasDefaultInitialization’ is not a member of ‘Fortran::lower’
747 | (Fortran::lower::hasDefaultInitialization(sym->GetUltimate()) &&
| ^~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:748:30: error: ‘hlfir’ has not been declared
748 | (!emitCopyRegion || hlfir::mayHaveAllocatableComponent(allocType))) ||
| ^~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:752:30: warning: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
752 | lower::SymbolBox hsb = converter.lookupOneLevelUpSymbol(
| ^~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:756:7: error: ‘hlfir’ has not been declared
756 | hlfir::Entity entity{hsb.getAddr()};
| ^~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:758:12: error: ‘entity’ was not declared in this scope
758 | !entity.mayHaveNonDefaultLowerBounds();
| ^~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:813:50: error: ‘omp’ is not a member of ‘mlir’; did you mean ‘llvm::omp’?
813 | if constexpr (std::is_same_v<OpType, mlir::omp::PrivateClauseOp>) {
| ^~~
/usr/lib/llvm/21/include/llvm/Frontend/OpenMP/OMP.h.inc:12:11: note: ‘llvm::omp’ declared here
12 | namespace omp {
| ^~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:813:70: error: template argument 2 is invalid
813 | if constexpr (std::is_same_v<OpType, mlir::omp::PrivateClauseOp>) {
| ^
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:813:71: error: expected unqualified-id before ‘)’ token
813 | if constexpr (std::is_same_v<OpType, mlir::omp::PrivateClauseOp>) {
| ^
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:814:35: error: ‘omp’ is not a member of ‘mlir’; did you mean ‘llvm::omp’?
814 | firOpBuilder.create<mlir::omp::YieldOp>(
| ^~~
/usr/lib/llvm/21/include/llvm/Frontend/OpenMP/OMP.h.inc:12:11: note: ‘llvm::omp’ declared here
12 | namespace omp {
| ^~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:814:22: error: parse error in template argument list
814 | firOpBuilder.create<mlir::omp::YieldOp>(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp: At global scope:
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:840:23: error: ‘omp’ is not a member of ‘mlir’; did you mean ‘llvm::omp’?
840 | privatizeSymbol<mlir::omp::PrivateClauseOp, mlir::omp::PrivateClauseOps>(
| ^~~
/usr/lib/llvm/21/include/llvm/Frontend/OpenMP/OMP.h.inc:12:11: note: ‘llvm::omp’ declared here
12 | namespace omp {
| ^~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:840:1: error: parse error in template argument list
840 | privatizeSymbol<mlir::omp::PrivateClauseOp, mlir::omp::PrivateClauseOps>(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:846:11: error: ‘mlir::omp’ has not been declared
846 | mlir::omp::PrivateClauseOps *clauseOps);
| ^~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:846:33: error: expected ‘,’ or ‘...’ before ‘*’ token
846 | mlir::omp::PrivateClauseOps *clauseOps);
| ^
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:840:1: error: template-id ‘privatizeSymbol<<expression error> >’ for ‘void Fortran::lower::privatizeSymbol(AbstractConverter&, fir::FirOpBuilder&, SymMap&, llvm::SetVector<const Fortran::semantics::Symbol*>&, llvm::SmallSet<const Fortran::semantics::Symbol*, 16>&, const Fortran::semantics::Symbol*, int)’ does not match any template declaration
840 | privatizeSymbol<mlir::omp::PrivateClauseOp, mlir::omp::PrivateClauseOps>(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:647:6: note: candidate is: ‘template<class OpType, class OperandsStructType> void Fortran::lower::privatizeSymbol(AbstractConverter&, fir::FirOpBuilder&, SymMap&, llvm::SetVector<const Fortran::semantics::Symbol*>&, llvm::SmallSet<const Fortran::semantics::Symbol*, 16>&, const Fortran::semantics::Symbol*, OperandsStructType*)’
647 | void privatizeSymbol(
| ^~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp: In instantiation of ‘void Fortran::lower::privatizeSymbol(AbstractConverter&, fir::FirOpBuilder&, SymMap&, llvm::SetVector<const Fortran::semantics::Symbol*>&, llvm::SmallSet<const Fortran::semantics::Symbol*, 16>&, const Fortran::semantics::Symbol*, OperandsStructType*) [with OpType = fir::LocalitySpecifierOp; OperandsStructType = fir::LocalitySpecifierOperands]’:
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:855:46: required from here
855 | fir::LocalitySpecifierOperands *clauseOps);
| ^
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:666:48: error: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
666 | ? converter.shallowLookupSymbol(*sym)
| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:667:48: error: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
667 | : converter.lookupOneLevelUpSymbol(*sym);
| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:683:11: error: ‘TODO’ was not declared in this scope
683 | TODO(symLoc, "create polymorphic host associated copy");
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:712:30: error: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
712 | allocType, converter.getKindMap(),
| ~~~~~~~~~~^~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:713:19: error: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
713 | converter.mangleName(*sym) +
| ~~~~~~~~~~^~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:736:43: error: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
736 | fir::ExtendedValue symExV = converter.getSymbolExtendedValue(*sym);
| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/lib/Lower/Support/Utils.cpp:752:40: error: invalid use of incomplete type ‘class Fortran::lower::AbstractConverter’
752 | lower::SymbolBox hsb = converter.lookupOneLevelUpSymbol(
| ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/llvm-core/flang-21.0.0.9999/work/flang/include/flang/Lower/IterationSpace.h:38:7: note: forward declaration of ‘class Fortran::lower::AbstractConverter’
38 | class AbstractConverter;
| ^~~~~~~~~~~~~~~~~
https://github.com/llvm/llvm-project/pull/143196
More information about the flang-commits
mailing list