Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[CUDA] add wrapper header for libc++'s __utlility/declval.h#148918

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
Artem-B merged 2 commits intollvm:mainfromArtem-B:unbreak-declval
Jul 15, 2025

Conversation

Artem-B
Copy link
Member

Since#116709 more libc++ code relies on std::declval() and it broke some CUDA compilations.

The new wrapper adds GPU-side overloads for the declval() helper functions which allows it to continue working when used from CUDA sources.

Sincellvm#116709 more libc++ code relies on std::declval() and it broke some CUDA compilations.The new wrapper adds GPU-side overloads for the declval() helper functionswhich allows it to continue working when used from CUDA sources.
@llvmbotllvmbot added clangClang issues not falling into any other category backend:X86 clang:headersHeaders provided by Clang, e.g. for intrinsics labelsJul 15, 2025
@llvmbot
Copy link
Member

llvmbot commentedJul 15, 2025
edited
Loading

@llvm/pr-subscribers-backend-x86

@llvm/pr-subscribers-clang

Author: Artem Belevich (Artem-B)

Changes

Since #116709 more libc++ code relies on std::declval() and it broke some CUDA compilations.

The new wrapper adds GPU-side overloads for the declval() helper functions which allows it to continue working when used from CUDA sources.


Full diff:https://github.com/llvm/llvm-project/pull/148918.diff

2 Files Affected:

  • (modified) clang/lib/Headers/CMakeLists.txt (+19-3)
  • (added) clang/lib/Headers/cuda_wrappers/__utility/declval.h (+31)
diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txtindex c96d209c1fc0c..b4618fe4a46da 100644--- a/clang/lib/Headers/CMakeLists.txt+++ b/clang/lib/Headers/CMakeLists.txt@@ -347,6 +347,10 @@ set(cuda_wrapper_bits_files   cuda_wrappers/bits/basic_string.tcc )+set(cuda_wrapper_utility_files+  cuda_wrappers/__utility/declval.h+)+ set(ppc_wrapper_files   ppc_wrappers/mmintrin.h   ppc_wrappers/xmmintrin.h@@ -443,8 +447,9 @@ endfunction(clang_generate_header)  # Copy header files from the source directory to the build directory foreach( f ${files} ${cuda_wrapper_files} ${cuda_wrapper_bits_files}-           ${ppc_wrapper_files} ${openmp_wrapper_files} ${zos_wrapper_files} ${hlsl_files}-   ${llvm_libc_wrapper_files} ${llvm_offload_wrapper_files})+           ${cuda_wrapper_utility_files} ${ppc_wrapper_files} ${openmp_wrapper_files}+           ${zos_wrapper_files} ${hlsl_files} ${llvm_libc_wrapper_files}+           ${llvm_offload_wrapper_files})   copy_header_to_output_dir(${CMAKE_CURRENT_SOURCE_DIR} ${f}) endforeach( f )@@ -553,7 +558,7 @@ add_header_target("arm-common-resource-headers" "${arm_common_files};${arm_commo # Architecture/platform specific targets add_header_target("arm-resource-headers" "${arm_only_files};${arm_only_generated_files}") add_header_target("aarch64-resource-headers" "${aarch64_only_files};${aarch64_only_generated_files}")-add_header_target("cuda-resource-headers" "${cuda_files};${cuda_wrapper_files};${cuda_wrapper_bits_files}")+add_header_target("cuda-resource-headers" "${cuda_files};${cuda_wrapper_files};${cuda_wrapper_bits_files};${cuda_wrapper_utility_files}") add_header_target("hexagon-resource-headers" "${hexagon_files}") add_header_target("hip-resource-headers" "${hip_files}") add_header_target("loongarch-resource-headers" "${loongarch_files}")@@ -600,6 +605,11 @@ install(   DESTINATION ${header_install_dir}/cuda_wrappers/bits   COMPONENT clang-resource-headers)+install(+  FILES ${cuda_wrapper_utility_files}+  DESTINATION ${header_install_dir}/cuda_wrappers/__utility+  COMPONENT clang-resource-headers)+ install(   FILES ${ppc_wrapper_files}   DESTINATION ${header_install_dir}/ppc_wrappers@@ -663,6 +673,12 @@ install(   EXCLUDE_FROM_ALL   COMPONENT cuda-resource-headers)+install(+  FILES ${cuda_wrapper_utility_files}+  DESTINATION ${header_install_dir}/cuda_wrappers/__utility+  EXCLUDE_FROM_ALL+  COMPONENT cuda-resource-headers)+ install(   FILES ${cuda_files}   DESTINATION ${header_install_dir}diff --git a/clang/lib/Headers/cuda_wrappers/__utility/declval.h b/clang/lib/Headers/cuda_wrappers/__utility/declval.hnew file mode 100644index 0000000000000..b16311e849fa4--- /dev/null+++ b/clang/lib/Headers/cuda_wrappers/__utility/declval.h@@ -0,0 +1,31 @@+#ifndef __CUDA_WRAPPERS_UTILITY_DECLVAL_H__+#define __CUDA_WRAPPERS_UTILITY_DECLVAL_H__++#include_next <__utility/declval.h>++// The stuff below is the exact copy of the <__utility/declval.h>,+// but with __device__ attribute applied to the functions, so it works on a GPU.++_LIBCPP_BEGIN_NAMESPACE_STD++// Suppress deprecation notice for volatile-qualified return type resulting+// from volatile-qualified types _Tp.+_LIBCPP_SUPPRESS_DEPRECATED_PUSH+template <class _Tp>+__attribute__((device))+_Tp&& __declval(int);+template <class _Tp>+__attribute__((device))+_Tp __declval(long);+_LIBCPP_SUPPRESS_DEPRECATED_POP++template <class _Tp>+__attribute__((device))+_LIBCPP_HIDE_FROM_ABI decltype(std::__declval<_Tp>(0)) declval() _NOEXCEPT {+  static_assert(!__is_same(_Tp, _Tp),+                "std::declval can only be used in an unevaluated context. "+                "It's likely that your current usage is trying to extract a value from the function.");+}++_LIBCPP_END_NAMESPACE_STD+#endif // __CUDA_WRAPPERS_UTILITY_DECLVAL_H__

@github-actionsGitHub Actions
Copy link

github-actionsbot commentedJul 15, 2025
edited
Loading

✅ With the latest revision this PR passed the C/C++ code formatter.

@rupprecht
Copy link
Collaborator

LGTM. I would like it if the new file were formatted, but I suppose it's intentional in order to be more of an exact copy of the libc++ file?

@Artem-BArtem-B merged commit7f2bcd9 intollvm:mainJul 15, 2025
9 checks passed
@llvm-ci
Copy link
Collaborator

LLVM Buildbot has detected a new failure on builderopenmp-s390x-linux running onsystemz-1 while buildingclang at step 6 "test-openmp".

Full details are available at:https://lab.llvm.org/buildbot/#/builders/88/builds/13968

Here is the relevant piece of the build log for the reference
Step 6 (test-openmp) failure: test (failure)******************** TEST 'libomp :: tasking/issue-94260-2.c' FAILED ********************Exit Code: -11Command Output (stdout):--# RUN: at line 1/home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/./bin/clang -fopenmp   -I /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/runtimes/runtimes-bins/openmp/runtime/src -I /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.src/openmp/runtime/test -L /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/runtimes/runtimes-bins/openmp/runtime/src  -fno-omit-frame-pointer -mbackchain -I /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.src/openmp/runtime/test/ompt /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.src/openmp/runtime/test/tasking/issue-94260-2.c -o /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/runtimes/runtimes-bins/openmp/runtime/test/tasking/Output/issue-94260-2.c.tmp -lm -latomic && /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/runtimes/runtimes-bins/openmp/runtime/test/tasking/Output/issue-94260-2.c.tmp# executed command: /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/./bin/clang -fopenmp -I /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/runtimes/runtimes-bins/openmp/runtime/src -I /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.src/openmp/runtime/test -L /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/runtimes/runtimes-bins/openmp/runtime/src -fno-omit-frame-pointer -mbackchain -I /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.src/openmp/runtime/test/ompt /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.src/openmp/runtime/test/tasking/issue-94260-2.c -o /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/runtimes/runtimes-bins/openmp/runtime/test/tasking/Output/issue-94260-2.c.tmp -lm -latomic# executed command: /home/uweigand/sandbox/buildbot/openmp-s390x-linux/llvm.build/runtimes/runtimes-bins/openmp/runtime/test/tasking/Output/issue-94260-2.c.tmp# note: command had no output on stdout or stderr# error: command failed with exit status: -11--********************

@llvm-ci
Copy link
Collaborator

LLVM Buildbot has detected a new failure on builderpremerge-monolithic-linux running onpremerge-linux-1 while buildingclang at step 7 "test-build-unified-tree-check-all".

Full details are available at:https://lab.llvm.org/buildbot/#/builders/153/builds/38242

Here is the relevant piece of the build log for the reference
Step 7 (test-build-unified-tree-check-all) failure: test (failure)...PASS: lld :: COFF/delayimports-error.test (98611 of 101612)PASS: lld :: COFF/dllexport-mingw.s (98612 of 101612)PASS: lld :: COFF/duplicate-cv.s (98613 of 101612)PASS: lld :: COFF/duplicate-dwarf.s (98614 of 101612)PASS: lld :: COFF/duplicate-absolute.s (98615 of 101612)PASS: lld :: COFF/cygwin-symbols.s (98616 of 101612)PASS: lld :: COFF/arm64x-symtab.s (98617 of 101612)PASS: cfi-devirt-lld-x86_64 :: simple-fail.cpp (98618 of 101612)PASS: lld :: COFF/defparser.test (98619 of 101612)TIMEOUT: MLIR :: Examples/standalone/test.toy (98620 of 101612)******************** TEST 'MLIR :: Examples/standalone/test.toy' FAILED ********************Exit Code: 1Timeout: Reached timeout of 60 secondsCommand Output (stdout):--# RUN: at line 1"/etc/cmake/bin/cmake" "/build/buildbot/premerge-monolithic-linux/llvm-project/mlir/examples/standalone" -G "Ninja"  -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_C_COMPILER=/usr/bin/clang  -DLLVM_ENABLE_LIBCXX=OFF -DMLIR_DIR=/build/buildbot/premerge-monolithic-linux/build/lib/cmake/mlir  -DLLVM_USE_LINKER=lld  -DPython3_EXECUTABLE="/usr/bin/python3.10"# executed command: /etc/cmake/bin/cmake /build/buildbot/premerge-monolithic-linux/llvm-project/mlir/examples/standalone -G Ninja -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_C_COMPILER=/usr/bin/clang -DLLVM_ENABLE_LIBCXX=OFF -DMLIR_DIR=/build/buildbot/premerge-monolithic-linux/build/lib/cmake/mlir -DLLVM_USE_LINKER=lld -DPython3_EXECUTABLE=/usr/bin/python3.10# .---command stdout------------# | -- The CXX compiler identification is Clang 16.0.6# | -- The C compiler identification is Clang 16.0.6# | -- Detecting CXX compiler ABI info# | -- Detecting CXX compiler ABI info - done# | -- Check for working CXX compiler: /usr/bin/clang++ - skipped# | -- Detecting CXX compile features# | -- Detecting CXX compile features - done# | -- Detecting C compiler ABI info# | -- Detecting C compiler ABI info - done# | -- Check for working C compiler: /usr/bin/clang - skipped# | -- Detecting C compile features# | -- Detecting C compile features - done# | -- Looking for histedit.h# | -- Looking for histedit.h - found# | -- Found LibEdit: /usr/include (found version "2.11") # | -- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") # | -- Found LibXml2: /usr/lib/x86_64-linux-gnu/libxml2.so (found version "2.9.13") # | -- Using MLIRConfig.cmake in: /build/buildbot/premerge-monolithic-linux/build/lib/cmake/mlir# | -- Using LLVMConfig.cmake in: /build/buildbot/premerge-monolithic-linux/build/lib/cmake/llvm# | -- Linker detection: unknown# | -- Performing Test LLVM_LIBSTDCXX_MIN# | -- Performing Test LLVM_LIBSTDCXX_MIN - Success# | -- Performing Test LLVM_LIBSTDCXX_SOFT_ERROR# | -- Performing Test LLVM_LIBSTDCXX_SOFT_ERROR - Success# | -- Performing Test CXX_SUPPORTS_CUSTOM_LINKER# | -- Performing Test CXX_SUPPORTS_CUSTOM_LINKER - Success# | -- Performing Test C_SUPPORTS_FPIC# | -- Performing Test C_SUPPORTS_FPIC - Success# | -- Performing Test CXX_SUPPORTS_FPIC

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@rupprechtrupprechtAwaiting requested review from rupprecht

@ldionneldionneAwaiting requested review from ldionne

Assignees
No one assigned
Labels
backend:X86clang:headersHeaders provided by Clang, e.g. for intrinsicsclangClang issues not falling into any other category
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

4 participants
@Artem-B@llvmbot@rupprecht@llvm-ci

[8]ページ先頭

©2009-2025 Movatter.jp