[Mlir-commits] [mlir] [MLIR][OpenMP] Add canonical loop LLVM-IR lowering (PR #147069)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Thu Jul 24 09:05:14 PDT 2025


fabrizio-indirli wrote:

Hi all, in our downstream project we build the [libMLIRLLVMIRTransforms target](https://github.com/llvm/llvm-project/blob/main/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt#L1) separately (e.g. with `ninja libMLIRLLVMIRTransforms.a` ).
After this commit, we're not able to build it anymore because it fails with the error:

> [1629/1745] Building CXX object tools/mlir/lib/Dial...eFiles/obj.MLIRNVVMDialect.dir/IR/NVVMDialect.cpp.o
FAILED: tools/mlir/lib/Dialect/LLVMIR/CMakeFiles/obj.MLIRNVVMDialect.dir/IR/NVVMDialect.cpp.o 
/usr/bin/g++-11 -DEXPERIMENTAL_KEY_INSTRUCTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Illvm-project/build/tools/mlir/lib/Dialect/LLVMIR -Illvm-project/mlir/lib/Dialect/LLVMIR -Illvm-project/build/tools/mlir/include -Illvm-project/mlir/include -Illvm-project/build/include -Illvm-project/llvm/include -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-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 -Wundef -Wno-unused-but-set-parameter -Wno-deprecated-copy -O3 -DNDEBUG -std=c++17 -MD -MT tools/mlir/lib/Dialect/LLVMIR/CMakeFiles/obj.MLIRNVVMDialect.dir/IR/NVVMDialect.cpp.o -MF tools/mlir/lib/Dialect/LLVMIR/CMakeFiles/obj.MLIRNVVMDialect.dir/IR/NVVMDialect.cpp.o.d -o tools/mlir/lib/Dialect/LLVMIR/CMakeFiles/obj.MLIRNVVMDialect.dir/IR/NVVMDialect.cpp.o -c llvm-project/mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp
In file included from llvm-project/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h:19,
                 from llvm-project/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h:18,
                 from llvm-project/mlir/include/mlir/Target/LLVMIR/ModuleTranslation.h:28,
                 from llvm-project/mlir/include/mlir/Dialect/LLVMIR/NVVMDialect.h:26,
                 from llvm-project/mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp:17:
llvm-project/llvm/include/llvm/Frontend/OpenMP/OMP.h:16:10: fatal error: llvm/Frontend/OpenMP/OMP.h.inc: No such file or directory
   16 | #include "llvm/Frontend/OpenMP/OMP.h.inc"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

We configure the build with the following CMake command:
```
cmake -G Ninja -S llvm -B build -DLLVM_ENABLE_PROJECTS=mlir -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_REQUIRES_RTTI=ON -DLLVM_REQUIRES_EH=ON -DLLVM_ENABLE_ASSERTIONS=0 -DLLVM_ABI_BREAKING_CHECKS=FORCE_OFF -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_USE_LINKER=lld
```
using GCC v11.4 and CMake v3.31 on Ubuntu 24.04. For this issue to show, we have to do a clean build in _Release_ mode.

For reference, this quick-and-dirty fix seems to allow it to be built:
```
--- a/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/CMakeLists.txt
@@ -9,6 +9,7 @@ add_mlir_dialect_library(MLIRLLVMIRTransforms
   RequestCWrappers.cpp
 
   DEPENDS
+  omp_gen
   MLIRLLVMPassIncGen
 
   LINK_LIBS PUBLIC
```
although we probably shouldn't do this as MLIRLLVMIRTransforms doesn't depend directly on OpenMP headers, if I understand correctly.

@Meinersbur is it expected that _mlir/include/mlir/Target/LLVMIR/ModuleTranslation.h_ now includes OpenMP specific code, given that the remainder of the header seems to be mostly on LLVM IR?

Thank you in advance :)

https://github.com/llvm/llvm-project/pull/147069


More information about the Mlir-commits mailing list