llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.02k stars 11.57k forks source link

Building ArmSMEStubs.cpp fails on mingw with `LLVM_BUILD_LLVM_DYLIB` #106899

Open Zentrik opened 2 weeks ago

Zentrik commented 2 weeks ago

After https://github.com/llvm/llvm-project/pull/93519, when building ArmSMEStubs.cpp on mingw with LLVM_BUILD_LLVM_DYLIB=ON, mlir_arm_sme_abi_stubs_EXPORTS is no longer defined as expected from the cmake file, https://github.com/llvm/llvm-project/blob/bec1d86516f59997794f7707a50da858792a8d8d/mlir/lib/ExecutionEngine/CMakeLists.txt#L208-L211

This causes the following error,

ninja: job failed: /opt/bin/x86_64-w64-mingw32-libgfortran5-cxx11/x86_64-w64-mingw32-clang++ --target=x86_64-w64-mingw32 --sysroot=/opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/ -DGTEST_HAS_RTTI=0 -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/workspace/build/tools/mlir/lib/ExecutionEngine -I/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine -I/workspace/build/include -I/workspace/srcdir/llvm-project/llvm/include -I/workspace/srcdir/llvm-project/mlir/include -I/workspace/build/tools/mlir/include -remap -D__USING_SJLJ_EXCEPTIONS__ -D__CRT__NO_INLINE -pthread -DMLIR_CAPI_ENABLE_WINDOWS_DLL_DECLSPEC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -ffunction-sections -fdata-sections -Wundef -Werror=mismatched-tags -O3 -DNDEBUG -fvisibility=hidden -fvisibility-inlines-hidden  -fno-exceptions -funwind-tables -fno-rtti -std=c++17 -MD -MT tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.mlir_arm_sme_abi_stubs.dir/ArmSMEStubs.cpp.obj -MF tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.mlir_arm_sme_abi_stubs.dir/ArmSMEStubs.cpp.obj.d -o tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.mlir_arm_sme_abi_stubs.dir/ArmSMEStubs.cpp.obj -c /workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp
clang++: warning: argument unused during compilation: '-remap' [-Wunused-command-line-argument]
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:37:35: error: dllimport cannot be applied to non-inline function definition
   37 | bool MLIR_ARMSMEABISTUBS_EXPORTED __aarch64_sme_accessible() {
      |                                   ^
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:47:40: error: dllimport cannot be applied to non-inline function definition
   47 | sme_state MLIR_ARMSMEABISTUBS_EXPORTED __arm_sme_state() {
      |                                        ^
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:52:35: error: dllimport cannot be applied to non-inline function definition
   52 | void MLIR_ARMSMEABISTUBS_EXPORTED __arm_tpidr2_restore() {
      |                                   ^
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:56:35: error: dllimport cannot be applied to non-inline function definition
   56 | void MLIR_ARMSMEABISTUBS_EXPORTED __arm_tpidr2_save() {
      |                                   ^
/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:60:35: error: dllimport cannot be applied to non-inline function definition
   60 | void MLIR_ARMSMEABISTUBS_EXPORTED __arm_za_disable() {
      |                                   ^
5 errors generated.

Note how -Dmlir_arm_sme_abi_stubs_EXPORTS is not present in the compiler invocation when it is with https://github.com/llvm/llvm-project/pull/93519 reverted or without LLVM_BUILD_LLVM_DYLIB=ON.

llvmbot commented 2 weeks ago

@llvm/issue-subscribers-mlir

Author: None (Zentrik)

After https://github.com/llvm/llvm-project/pull/93519, when building ArmSMEStubs.cpp on mingw with `LLVM_BUILD_LLVM_DYLIB=ON`, `mlir_arm_sme_abi_stubs_EXPORTS` is no longer defined as expected from the cmake file, https://github.com/llvm/llvm-project/blob/bec1d86516f59997794f7707a50da858792a8d8d/mlir/lib/ExecutionEngine/CMakeLists.txt#L208-L211 This causes the following error, ``` ninja: job failed: /opt/bin/x86_64-w64-mingw32-libgfortran5-cxx11/x86_64-w64-mingw32-clang++ --target=x86_64-w64-mingw32 --sysroot=/opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/ -DGTEST_HAS_RTTI=0 -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/workspace/build/tools/mlir/lib/ExecutionEngine -I/workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine -I/workspace/build/include -I/workspace/srcdir/llvm-project/llvm/include -I/workspace/srcdir/llvm-project/mlir/include -I/workspace/build/tools/mlir/include -remap -D__USING_SJLJ_EXCEPTIONS__ -D__CRT__NO_INLINE -pthread -DMLIR_CAPI_ENABLE_WINDOWS_DLL_DECLSPEC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -ffunction-sections -fdata-sections -Wundef -Werror=mismatched-tags -O3 -DNDEBUG -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -funwind-tables -fno-rtti -std=c++17 -MD -MT tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.mlir_arm_sme_abi_stubs.dir/ArmSMEStubs.cpp.obj -MF tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.mlir_arm_sme_abi_stubs.dir/ArmSMEStubs.cpp.obj.d -o tools/mlir/lib/ExecutionEngine/CMakeFiles/obj.mlir_arm_sme_abi_stubs.dir/ArmSMEStubs.cpp.obj -c /workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp clang++: warning: argument unused during compilation: '-remap' [-Wunused-command-line-argument] /workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:37:35: error: dllimport cannot be applied to non-inline function definition 37 | bool MLIR_ARMSMEABISTUBS_EXPORTED __aarch64_sme_accessible() { | ^ /workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:47:40: error: dllimport cannot be applied to non-inline function definition 47 | sme_state MLIR_ARMSMEABISTUBS_EXPORTED __arm_sme_state() { | ^ /workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:52:35: error: dllimport cannot be applied to non-inline function definition 52 | void MLIR_ARMSMEABISTUBS_EXPORTED __arm_tpidr2_restore() { | ^ /workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:56:35: error: dllimport cannot be applied to non-inline function definition 56 | void MLIR_ARMSMEABISTUBS_EXPORTED __arm_tpidr2_save() { | ^ /workspace/srcdir/llvm-project/mlir/lib/ExecutionEngine/ArmSMEStubs.cpp:60:35: error: dllimport cannot be applied to non-inline function definition 60 | void MLIR_ARMSMEABISTUBS_EXPORTED __arm_za_disable() { | ^ 5 errors generated. ``` Note how `-Dmlir_arm_sme_abi_stubs_EXPORTS` is not present in the compiler invocation when it is with https://github.com/llvm/llvm-project/pull/93519 reverted or without `LLVM_BUILD_LLVM_DYLIB=ON`.