Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

offload can't build on i386 #91819

Closed
sylvestre opened this issue May 10, 2024 · 3 comments
Closed

offload can't build on i386 #91819

sylvestre opened this issue May 10, 2024 · 3 comments

Comments

@sylvestre
Copy link
Collaborator

On linux debian sid i386:

/build/source/build-llvm/bin/clang++ --target=i386-linux-gnu -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/build/source/llvm/include -I/build/source/build-llvm/include -I/build/source/offload/include -fstack-protector-strong -Wformat -Werror=format-security -Wno-unused-command-line-argument -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fdebug-prefix-map=/build/source/build-llvm/runtimes/runtimes-bins=../../../ -fdebug-prefix-map=/build/source/= -no-canonical-prefixes -ffile-prefix-map=/build/source/build-llvm/runtimes/runtimes-bins=../../../ -ffile-prefix-map=/build/source/= -no-canonical-prefixes -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-exceptions -funwind-tables -fno-exceptions -MD -MT offload/tools/deviceinfo/CMakeFiles/llvm-omp-device-info.dir/llvm-omp-device-info.cpp.o -MF offload/tools/deviceinfo/CMakeFiles/llvm-omp-device-info.dir/llvm-omp-device-info.cpp.o.d -o offload/tools/deviceinfo/CMakeFiles/llvm-omp-device-info.dir/llvm-omp-device-info.cpp.o -c /build/source/offload/tools/deviceinfo/llvm-omp-device-info.cpp
In file included from /build/source/offload/tools/deviceinfo/llvm-omp-device-info.cpp:14:
In file included from /build/source/offload/include/omptarget.h:17:
/build/source/offload/include/Shared/APITypes.h:111:15: error: static assertion failed due to requirement 'sizeof(KernelArgsTy) == (8 * sizeof(int) + 3 * sizeof(long long) + 4 * sizeof(void **) + 2 * sizeof(long long *))': Invalid struct size
  111 | static_assert(sizeof(KernelArgsTy) ==
      |               ^~~~~~~~~~~~~~~~~~~~~~~
  112 |                   (8 * sizeof(int32_t) + 3 * sizeof(int64_t) +
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  113 |                    4 * sizeof(void **) + 2 * sizeof(int64_t *)),
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/source/offload/include/Shared/APITypes.h:111:36: note: expression evaluates to '76 == 80'
  111 | static_assert(sizeof(KernelArgsTy) ==
      |               ~~~~~~~~~~~~~~~~~~~~~^~
  112 |                   (8 * sizeof(int32_t) + 3 * sizeof(int64_t) +
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  113 |                    4 * sizeof(void **) + 2 * sizeof(int64_t *)),
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
@llvmbot
Copy link
Collaborator

llvmbot commented May 10, 2024

@llvm/issue-subscribers-offload

Author: Sylvestre Ledru (sylvestre)

On linux debian sid i386: ``` /build/source/build-llvm/bin/clang++ --target=i386-linux-gnu -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/build/source/llvm/include -I/build/source/build-llvm/include -I/build/source/offload/include -fstack-protector-strong -Wformat -Werror=format-security -Wno-unused-command-line-argument -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -fdebug-prefix-map=/build/source/build-llvm/runtimes/runtimes-bins=../../../ -fdebug-prefix-map=/build/source/= -no-canonical-prefixes -ffile-prefix-map=/build/source/build-llvm/runtimes/runtimes-bins=../../../ -ffile-prefix-map=/build/source/= -no-canonical-prefixes -O3 -DNDEBUG -std=c++17 -fno-exceptions -funwind-tables -fno-exceptions -funwind-tables -fno-exceptions -MD -MT offload/tools/deviceinfo/CMakeFiles/llvm-omp-device-info.dir/llvm-omp-device-info.cpp.o -MF offload/tools/deviceinfo/CMakeFiles/llvm-omp-device-info.dir/llvm-omp-device-info.cpp.o.d -o offload/tools/deviceinfo/CMakeFiles/llvm-omp-device-info.dir/llvm-omp-device-info.cpp.o -c /build/source/offload/tools/deviceinfo/llvm-omp-device-info.cpp In file included from /build/source/offload/tools/deviceinfo/llvm-omp-device-info.cpp:14: In file included from /build/source/offload/include/omptarget.h:17: /build/source/offload/include/Shared/APITypes.h:111:15: error: static assertion failed due to requirement 'sizeof(KernelArgsTy) == (8 * sizeof(int) + 3 * sizeof(long long) + 4 * sizeof(void **) + 2 * sizeof(long long *))': Invalid struct size 111 | static_assert(sizeof(KernelArgsTy) == | ^~~~~~~~~~~~~~~~~~~~~~~ 112 | (8 * sizeof(int32_t) + 3 * sizeof(int64_t) + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113 | 4 * sizeof(void **) + 2 * sizeof(int64_t *)), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /build/source/offload/include/Shared/APITypes.h:111:36: note: expression evaluates to '76 == 80' 111 | static_assert(sizeof(KernelArgsTy) == | ~~~~~~~~~~~~~~~~~~~~~^~ 112 | (8 * sizeof(int32_t) + 3 * sizeof(int64_t) + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113 | 4 * sizeof(void **) + 2 * sizeof(int64_t *)), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. ```

@sylvestre
Copy link
Collaborator Author

@jhuber6 did you see that before? thanks :)

i386 built before: https://packages.debian.org/unstable/libomp5-18

@jhuber6
Copy link
Contributor

jhuber6 commented May 10, 2024

i386 is 32-bit right? I don't think we ever supported that. Can you try removing the static assert there to see if it builds?

jhuber6 added a commit to jhuber6/llvm-project that referenced this issue May 15, 2024
Summary:
Previously we had this `LIBOMPTARGET_ENABLED` variable which controlled
including `libomptarget`. This is now redundant since it's controlled by
`LLVM_ENABLE_RUNTIMES`. However, this had the extra effect of not
building it when given unsupported targets. THis was lost during the
move to `offload`. This patch moves this logic back and makes the
`offload` target just quit without doing anything if used on an
unsupported architecture.

llvm#91881
llvm#91819
jhuber6 added a commit that referenced this issue May 15, 2024
)

Summary:
Previously we had this `LIBOMPTARGET_ENABLED` variable which controlled
including `libomptarget`. This is now redundant since it's controlled by
`LLVM_ENABLE_RUNTIMES`. However, this had the extra effect of not
building it when given unsupported targets. THis was lost during the
move to `offload`. This patch moves this logic back and makes the
`offload` target just quit without doing anything if used on an
unsupported architecture.

#91881
#91819

---------

Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
@jhuber6 jhuber6 closed this as completed May 16, 2024
mub-at-arm pushed a commit to mub-at-arm/llvm-project that referenced this issue May 16, 2024
…m#92276)

Summary:
Previously we had this `LIBOMPTARGET_ENABLED` variable which controlled
including `libomptarget`. This is now redundant since it's controlled by
`LLVM_ENABLE_RUNTIMES`. However, this had the extra effect of not
building it when given unsupported targets. THis was lost during the
move to `offload`. This patch moves this logic back and makes the
`offload` target just quit without doing anything if used on an
unsupported architecture.

llvm#91881
llvm#91819

---------

Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants