[clang] [llvm] [ASan] Do not instrument HIP/CUDA fatbin wrapper sections (PR #194928)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 29 16:51:19 PDT 2026
github-actions[bot] wrote:
<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results
* 134064 tests passed
* 3185 tests skipped
* 2 tests failed
## Failed Tests
(click on a test name to see its output)
### LLVM
<details>
<summary>LLVM.tools/llvm-offload-wrapper/offload-wrapper.ll</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=openmp C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll -o C:\_work\llvm-project\llvm-project\build\test\tools\llvm-offload-wrapper\Output\offload-wrapper.ll.tmp.bc
# executed command: llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=openmp 'C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll' -o 'C:\_work\llvm-project\llvm-project\build\test\tools\llvm-offload-wrapper\Output\offload-wrapper.ll.tmp.bc'
# note: command had no output on stdout or stderr
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\llvm-dis.exe C:\_work\llvm-project\llvm-project\build\test\tools\llvm-offload-wrapper\Output\offload-wrapper.ll.tmp.bc -o - | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll --check-prefix=OMP
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llvm-dis.exe' 'C:\_work\llvm-project\llvm-project\build\test\tools\llvm-offload-wrapper\Output\offload-wrapper.ll.tmp.bc' -o -
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll' --check-prefix=OMP
# note: command had no output on stdout or stderr
# RUN: at line 26
llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=hip C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll -o C:\_work\llvm-project\llvm-project\build\test\tools\llvm-offload-wrapper\Output\offload-wrapper.ll.tmp.bc
# executed command: llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=hip 'C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll' -o 'C:\_work\llvm-project\llvm-project\build\test\tools\llvm-offload-wrapper\Output\offload-wrapper.ll.tmp.bc'
# note: command had no output on stdout or stderr
# RUN: at line 27
c:\_work\llvm-project\llvm-project\build\bin\llvm-dis.exe C:\_work\llvm-project\llvm-project\build\test\tools\llvm-offload-wrapper\Output\offload-wrapper.ll.tmp.bc -o - | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll --check-prefix=HIP
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llvm-dis.exe' 'C:\_work\llvm-project\llvm-project\build\test\tools\llvm-offload-wrapper\Output\offload-wrapper.ll.tmp.bc' -o -
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll' --check-prefix=HIP
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll:34:13: error: HIP-NEXT: expected string not found in input
# | ; HIP-NEXT: @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1212764230, i32 1, ptr @.fatbin_image, ptr null }, section ".hipFatBinSegment", align 8
# | ^
# | <stdin>:12:7636: note: scanning from here
# | @.fatbin_image = internal constant [7350 x i8] c"; RUN: llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=openmp %s -o %t.bc\0A; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=OMP\0A\0A; OMP: @__start_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; OMP-NEXT: @__stop_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; OMP-NEXT: @__dummy.llvm_offload_entries = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section \22llvm_offload_entries\22, align 8\0A; OMP-NEXT: @llvm.compiler.used = appending global [1 x ptr] [ptr @__dummy.llvm_offload_entries], section \22llvm.metadata\22\0A; OMP-NEXT: @.omp_offloading.device_image = internal unnamed_addr constant [[[SIZE:[0-9]+]] x i8] c\22{{.*}}\22, section \22.llvm.offloading\22, align 8\0A; OMP-NEXT: @.omp_offloading.device_images = internal unnamed_addr constant [1 x %__tgt_device_image] [%__tgt_device_image { ptr @.omp_offloading.device_image, ptr getelementptr ([[[SIZE]] x i8], ptr @.omp_offloading.device_image, i64 0, i64 [[SIZE]]), ptr @__start_llvm_offload_entries, ptr @__stop_llvm_offload_entries }]\0A; OMP-NEXT: @.omp_offloading.descriptor = internal constant %__tgt_bin_desc { i32 1, ptr @.omp_offloading.device_images, ptr @__start_llvm_offload_entries, ptr @__stop_llvm_offload_entries }\0A; OMP-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.omp_offloading.descriptor_reg, ptr null }]\0A\0A; OMP: define internal void @.omp_offloading.descriptor_reg() section \22.text.startup\22 {\0A; OMP-NEXT: entry:\0A; OMP-NEXT: call void @__tgt_register_lib(ptr @.omp_offloading.descriptor)\0A; OMP-NEXT: %0 = call i32 @atexit(ptr @.omp_offloading.descriptor_unreg)\0A; OMP-NEXT: ret void\0A; OMP-NEXT: }\0A\0A; OMP: define internal void @.omp_offloading.descriptor_unreg() section \22.text.startup\22 {\0A; OMP-NEXT: entry:\0A; OMP-NEXT: call void @__tgt_unregister_lib(ptr @.omp_offloading.descriptor)\0A; OMP-NEXT: ret void\0A; OMP-NEXT: }\0A\0A; RUN: llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=hip %s -o %t.bc\0A; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=HIP\0A\0A; HIP: @__start_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; HIP-NEXT: @__stop_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; HIP-NEXT: @__dummy.llvm_offload_entries = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section \22llvm_offload_entries\22, align 8\0A; HIP-NEXT: @llvm.compiler.used = appending global [1 x ptr] [ptr @__dummy.llvm_offload_entries], section \22llvm.metadata\22\0A; HIP-NEXT: @.fatbin_image = internal constant {{.*}}, section \22.hip_fatbin\22\0A; HIP-NEXT: @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1212764230, i32 1, ptr @.fatbin_image, ptr null }, section \22.hipFatBinSegment\22, align 8\0A; HIP-NEXT: @.hip.binary_handle = internal global ptr null\0A; HIP-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.hip.fatbin_reg, ptr null }]\0A\0A; HIP: define internal void @.hip.fatbin_reg() section \22.text.startup\22 {\0A; HIP-NEXT: entry:\0A; HIP-NEXT: %0 = call ptr @__hipRegisterFatBinary(ptr @.fatbin_wrapper)\0A; HIP-NEXT: store ptr %0, ptr @.hip.binary_handle, align 8\0A; HIP-NEXT: call void @.hip.globals_reg(ptr %0)\0A; HIP-NEXT: %1 = call i32 @atexit(ptr @.hip.fatbin_unreg)\0A; HIP-NEXT: ret void\0A; HIP-NEXT: }\0A\0A; HIP: define internal void @.hip.fatbin_unreg() section \22.text.startup\22 {\0A; HIP-NEXT: entry:\0A; HIP-NEXT: %0 = load ptr, ptr @.hip.binary_handle, align 8\0A; HIP-NEXT: call void @__hipUnregisterFatBinary(ptr %0)\0A; HIP-NEXT: ret void\0A; HIP-NEXT: }\0A\0A; RUN: llvm-offload-wrapper --triple=x86_64-apple-macosx10.15.0 -kind=hip %s -o %t.bc\0A; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=HIP-MACHO\0A\0A; HIP-MACHO: @\22\\01section$start$__LLVM$offload_entries\22 = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; HIP-MACHO-NEXT: @\22\\01section$end$__LLVM$offload_entries\22 = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; HIP-MACHO-NEXT: @\22__dummy.__LLVM,offload_entries\22 = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section \22__LLVM,offload_entries\22, align 8\0A; HIP-MACHO-NEXT: @llvm.compiler.used = appending global [1 x ptr] [ptr @\22__dummy.__LLVM,offload_entries\22], section \22llvm.metadata\22\0A; HIP-MACHO-NEXT: @.fatbin_image = internal constant {{.*}}, section \22__HIP,__hip_fatbin\22\0A; HIP-MACHO-NEXT: @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1212764230, i32 1, ptr @.fatbin_image, ptr null }, section \22__HIP,__fatbin\22, align 8\0A; HIP-MACHO-NEXT: @.hip.binary_handle = internal global ptr null\0A; HIP-MACHO-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.hip.fatbin_reg, ptr null }]\0A\0A; HIP-MACHO: define internal void @.hip.fatbin_reg() section \22__TEXT,__StaticInit\22 {\0A; HIP-MACHO-NEXT: entry:\0A; HIP-MACHO-NEXT: %0 = call ptr @__hipRegisterFatBinary(ptr @.fatbin_wrapper)\0A; HIP-MACHO-NEXT: store ptr %0, ptr @.hip.binary_handle, align 8\0A; HIP-MACHO-NEXT: call void @.hip.globals_reg(ptr %0)\0A; HIP-MACHO-NEXT: %1 = call i32 @atexit(ptr @.hip.fatbin_unreg)\0A; HIP-MACHO-NEXT: ret void\0A; HIP-MACHO-NEXT: }\0A\0A; HIP-MACHO: define internal void @.hip.fatbin_unreg() section \22__TEXT,__StaticInit\22 {\0A; HIP-MACHO-NEXT: entry:\0A; HIP-MACHO-NEXT: %0 = load ptr, ptr @.hip.binary_handle, align 8\0A; HIP-MACHO-NEXT: call void @__hipUnregisterFatBinary(ptr %0)\0A; HIP-MACHO-NEXT: ret void\0A; HIP-MACHO-NEXT: }\0A\0A; RUN: llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=cuda %s -o %t.bc\0A; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=CUDA\0A\0A; CUDA: @__start_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; CUDA-NEXT: @__stop_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; CUDA-NEXT: @__dummy.llvm_offload_entries = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section \22llvm_offload_entries\22, align 8\0A; CUDA-NEXT: @llvm.compiler.used = appending global [1 x ptr] [ptr @__dummy.llvm_offload_entries], section \22llvm.metadata\22\0A; CUDA-NEXT: @.fatbin_image = internal constant {{.*}}, section \22.nv_fatbin\22\0A; CUDA-NEXT: @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1180844977, i32 1, ptr @.fatbin_image, ptr null }, section \22.nvFatBinSegment\22, align 8\0A; CUDA-NEXT: @.cuda.binary_handle = internal global ptr null\0A; CUDA-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.cuda.fatbin_reg, ptr null }]\0A\0A; CUDA: define internal void @.cuda.fatbin_reg() section \22.text.startup\22 {\0A; CUDA-NEXT: entry:\0A; CUDA-NEXT: %0 = call ptr @__cudaRegisterFatBinary(ptr @.fatbin_wrapper)\0A; CUDA-NEXT: store ptr %0, ptr @.cuda.binary_handle, align 8\0A; CUDA-NEXT: call void @.cuda.globals_reg(ptr %0)\0A; CUDA-NEXT: call void @__cudaRegisterFatBinaryEnd(ptr %0)\0A; CUDA-NEXT: %1 = call i32 @atexit(ptr @.cuda.fatbin_unreg)\0A; CUDA-NEXT: ret void\0A; CUDA-NEXT: }\0A\0A; CUDA: define internal void @.cuda.fatbin_unreg() section \22.text.startup\22 {\0A; CUDA-NEXT: entry:\0A; CUDA-NEXT: %0 = load ptr, ptr @.cuda.binary_handle, align 8\0A; CUDA-NEXT: call void @__cudaUnregisterFatBinary(ptr %0)\0A; CUDA-NEXT: ret void\0A; CUDA-NEXT: }\0A", section ".hip_fatbin"
# | ^
# | <stdin>:13:1: note: possible intended match here
# | @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1212764230, i32 1, ptr @.fatbin_image, ptr null }, section ".hipFatBinSegment", no_sanitize_address, no_sanitize_hwaddress, align 8
# | ^
# |
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\tools\llvm-offload-wrapper\offload-wrapper.ll
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 7:
# | 8: @__start_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]
# | 9: @__stop_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]
# | 10: @__dummy.llvm_offload_entries = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section "llvm_offload_entries", align 8
# | 11: @llvm.compiler.used = appending global [1 x ptr] [ptr @__dummy.llvm_offload_entries], section "llvm.metadata"
# | 12: @.fatbin_image = internal constant [7350 x i8] c"; RUN: llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=openmp %s -o %t.bc\0A; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=OMP\0A\0A; OMP: @__start_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; OMP-NEXT: @__stop_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; OMP-NEXT: @__dummy.llvm_offload_entries = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section \22llvm_offload_entries\22, align 8\0A; OMP-NEXT: @llvm.compiler.used = appending global [1 x ptr] [ptr @__dummy.llvm_offload_entries], section \22llvm.metadata\22\0A; OMP-NEXT: @.omp_offloading.device_image = internal unnamed_addr constant [[[SIZE:[0-9]+]] x i8] c\22{{.*}}\22, section \22.llvm.offloading\22, align 8\0A; OMP-NEXT: @.omp_offloading.device_images = internal unnamed_addr constant [1 x %__tgt_device_image] [%__tgt_device_image { ptr @.omp_offloading.device_image, ptr getelementptr ([[[SIZE]] x i8], ptr @.omp_offloading.device_image, i64 0, i64 [[SIZE]]), ptr @__start_llvm_offload_entries, ptr @__stop_llvm_offload_entries }]\0A; OMP-NEXT: @.omp_offloading.descriptor = internal constant %__tgt_bin_desc { i32 1, ptr @.omp_offloading.device_images, ptr @__start_llvm_offload_entries, ptr @__stop_llvm_offload_entries }\0A; OMP-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.omp_offloading.descriptor_reg, ptr null }]\0A\0A; OMP: define internal void @.omp_offloading.descriptor_reg() section \22.text.startup\22 {\0A; OMP-NEXT: entry:\0A; OMP-NEXT: call void @__tgt_register_lib(ptr @.omp_offloading.descriptor)\0A; OMP-NEXT: %0 = call i32 @atexit(ptr @.omp_offloading.descriptor_unreg)\0A; OMP-NEXT: ret void\0A; OMP-NEXT: }\0A\0A; OMP: define internal void @.omp_offloading.descriptor_unreg() section \22.text.startup\22 {\0A; OMP-NEXT: entry:\0A; OMP-NEXT: call void @__tgt_unregister_lib(ptr @.omp_offloading.descriptor)\0A; OMP-NEXT: ret void\0A; OMP-NEXT: }\0A\0A; RUN: llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=hip %s -o %t.bc\0A; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=HIP\0A\0A; HIP: @__start_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; HIP-NEXT: @__stop_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; HIP-NEXT: @__dummy.llvm_offload_entries = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section \22llvm_offload_entries\22, align 8\0A; HIP-NEXT: @llvm.compiler.used = appending global [1 x ptr] [ptr @__dummy.llvm_offload_entries], section \22llvm.metadata\22\0A; HIP-NEXT: @.fatbin_image = internal constant {{.*}}, section \22.hip_fatbin\22\0A; HIP-NEXT: @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1212764230, i32 1, ptr @.fatbin_image, ptr null }, section \22.hipFatBinSegment\22, align 8\0A; HIP-NEXT: @.hip.binary_handle = internal global ptr null\0A; HIP-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.hip.fatbin_reg, ptr null }]\0A\0A; HIP: define internal void @.hip.fatbin_reg() section \22.text.startup\22 {\0A; HIP-NEXT: entry:\0A; HIP-NEXT: %0 = call ptr @__hipRegisterFatBinary(ptr @.fatbin_wrapper)\0A; HIP-NEXT: store ptr %0, ptr @.hip.binary_handle, align 8\0A; HIP-NEXT: call void @.hip.globals_reg(ptr %0)\0A; HIP-NEXT: %1 = call i32 @atexit(ptr @.hip.fatbin_unreg)\0A; HIP-NEXT: ret void\0A; HIP-NEXT: }\0A\0A; HIP: define internal void @.hip.fatbin_unreg() section \22.text.startup\22 {\0A; HIP-NEXT: entry:\0A; HIP-NEXT: %0 = load ptr, ptr @.hip.binary_handle, align 8\0A; HIP-NEXT: call void @__hipUnregisterFatBinary(ptr %0)\0A; HIP-NEXT: ret void\0A; HIP-NEXT: }\0A\0A; RUN: llvm-offload-wrapper --triple=x86_64-apple-macosx10.15.0 -kind=hip %s -o %t.bc\0A; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=HIP-MACHO\0A\0A; HIP-MACHO: @\22\\01section$start$__LLVM$offload_entries\22 = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; HIP-MACHO-NEXT: @\22\\01section$end$__LLVM$offload_entries\22 = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; HIP-MACHO-NEXT: @\22__dummy.__LLVM,offload_entries\22 = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section \22__LLVM,offload_entries\22, align 8\0A; HIP-MACHO-NEXT: @llvm.compiler.used = appending global [1 x ptr] [ptr @\22__dummy.__LLVM,offload_entries\22], section \22llvm.metadata\22\0A; HIP-MACHO-NEXT: @.fatbin_image = internal constant {{.*}}, section \22__HIP,__hip_fatbin\22\0A; HIP-MACHO-NEXT: @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1212764230, i32 1, ptr @.fatbin_image, ptr null }, section \22__HIP,__fatbin\22, align 8\0A; HIP-MACHO-NEXT: @.hip.binary_handle = internal global ptr null\0A; HIP-MACHO-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.hip.fatbin_reg, ptr null }]\0A\0A; HIP-MACHO: define internal void @.hip.fatbin_reg() section \22__TEXT,__StaticInit\22 {\0A; HIP-MACHO-NEXT: entry:\0A; HIP-MACHO-NEXT: %0 = call ptr @__hipRegisterFatBinary(ptr @.fatbin_wrapper)\0A; HIP-MACHO-NEXT: store ptr %0, ptr @.hip.binary_handle, align 8\0A; HIP-MACHO-NEXT: call void @.hip.globals_reg(ptr %0)\0A; HIP-MACHO-NEXT: %1 = call i32 @atexit(ptr @.hip.fatbin_unreg)\0A; HIP-MACHO-NEXT: ret void\0A; HIP-MACHO-NEXT: }\0A\0A; HIP-MACHO: define internal void @.hip.fatbin_unreg() section \22__TEXT,__StaticInit\22 {\0A; HIP-MACHO-NEXT: entry:\0A; HIP-MACHO-NEXT: %0 = load ptr, ptr @.hip.binary_handle, align 8\0A; HIP-MACHO-NEXT: call void @__hipUnregisterFatBinary(ptr %0)\0A; HIP-MACHO-NEXT: ret void\0A; HIP-MACHO-NEXT: }\0A\0A; RUN: llvm-offload-wrapper --triple=x86_64-unknown-linux-gnu -kind=cuda %s -o %t.bc\0A; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=CUDA\0A\0A; CUDA: @__start_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; CUDA-NEXT: @__stop_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]\0A; CUDA-NEXT: @__dummy.llvm_offload_entries = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section \22llvm_offload_entries\22, align 8\0A; CUDA-NEXT: @llvm.compiler.used = appending global [1 x ptr] [ptr @__dummy.llvm_offload_entries], section \22llvm.metadata\22\0A; CUDA-NEXT: @.fatbin_image = internal constant {{.*}}, section \22.nv_fatbin\22\0A; CUDA-NEXT: @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1180844977, i32 1, ptr @.fatbin_image, ptr null }, section \22.nvFatBinSegment\22, align 8\0A; CUDA-NEXT: @.cuda.binary_handle = internal global ptr null\0A; CUDA-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.cuda.fatbin_reg, ptr null }]\0A\0A; CUDA: define internal void @.cuda.fatbin_reg() section \22.text.startup\22 {\0A; CUDA-NEXT: entry:\0A; CUDA-NEXT: %0 = call ptr @__cudaRegisterFatBinary(ptr @.fatbin_wrapper)\0A; CUDA-NEXT: store ptr %0, ptr @.cuda.binary_handle, align 8\0A; CUDA-NEXT: call void @.cuda.globals_reg(ptr %0)\0A; CUDA-NEXT: call void @__cudaRegisterFatBinaryEnd(ptr %0)\0A; CUDA-NEXT: %1 = call i32 @atexit(ptr @.cuda.fatbin_unreg)\0A; CUDA-NEXT: ret void\0A; CUDA-NEXT: }\0A\0A; CUDA: define internal void @.cuda.fatbin_unreg() section \22.text.startup\22 {\0A; CUDA-NEXT: entry:\0A; CUDA-NEXT: %0 = load ptr, ptr @.cuda.binary_handle, align 8\0A; CUDA-NEXT: call void @__cudaUnregisterFatBinary(ptr %0)\0A; CUDA-NEXT: ret void\0A; CUDA-NEXT: }\0A", section ".hip_fatbin"
# | next:34'0 X error: no match found
# | 13: @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1212764230, i32 1, ptr @.fatbin_image, ptr null }, section ".hipFatBinSegment", no_sanitize_address, no_sanitize_hwaddress, align 8
# | next:34'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:34'1 ? possible intended match
# | 14: @.hip.binary_handle = internal global ptr null
# | next:34'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 15: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.hip.fatbin_reg, ptr null }]
# | next:34'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 16:
# | next:34'0 ~
# | 17: define internal void @.hip.fatbin_reg() section ".text.startup" {
# | next:34'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | 18: entry:
# | next:34'0 ~~~~~~~
# | .
# | .
# | .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1
--
```
</details>
### Clang
<details>
<summary>Clang.Driver/linker-wrapper-image.c</summary>
```
Exit Code: 2
Command Output (stdout):
--
# RUN: at line 6
c:\_work\llvm-project\llvm-project\build\bin\clang.exe -cc1 C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c -triple x86_64-unknown-linux-gnu -emit-obj -o C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.elf.o
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang.exe' -cc1 'C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c' -triple x86_64-unknown-linux-gnu -emit-obj -o 'C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.elf.o'
# note: command had no output on stdout or stderr
# RUN: at line 8
c:\_work\llvm-project\llvm-project\build\bin\llvm-offload-binary.exe -o C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.out --image=file=C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.elf.o,kind=openmp,triple=nvptx64-nvidia-cuda,arch=sm_70
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llvm-offload-binary.exe' -o 'C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.out' '--image=file=C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.elf.o,kind=openmp,triple=nvptx64-nvidia-cuda,arch=sm_70'
# note: command had no output on stdout or stderr
# RUN: at line 9
c:\_work\llvm-project\llvm-project\build\bin\clang.exe -cc1 C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c -triple x86_64-unknown-linux-gnu -emit-obj -o C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o -fembed-offload-object=C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.out
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang.exe' -cc1 'C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c' -triple x86_64-unknown-linux-gnu -emit-obj -o 'C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o' '-fembed-offload-object=C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.out'
# note: command had no output on stdout or stderr
# RUN: at line 11
c:\_work\llvm-project\llvm-project\build\bin\clang-linker-wrapper.exe --print-wrapped-module --dry-run --host-triple=x86_64-unknown-linux-gnu --linker-path=/usr/bin/ld C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o -o a.out 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c --check-prefixes=OPENMP,OPENMP-ELF
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang-linker-wrapper.exe' --print-wrapped-module --dry-run --host-triple=x86_64-unknown-linux-gnu --linker-path=/usr/bin/ld 'C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o' -o a.out
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c' --check-prefixes=OPENMP,OPENMP-ELF
# note: command had no output on stdout or stderr
# RUN: at line 13
c:\_work\llvm-project\llvm-project\build\bin\clang-linker-wrapper.exe --print-wrapped-module --dry-run -r --host-triple=x86_64-unknown-linux-gnu --linker-path=/usr/bin/ld C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o -o a.out 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c --check-prefixes=OPENMP-ELF,OPENMP-REL
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang-linker-wrapper.exe' --print-wrapped-module --dry-run -r --host-triple=x86_64-unknown-linux-gnu --linker-path=/usr/bin/ld 'C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o' -o a.out
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c' --check-prefixes=OPENMP-ELF,OPENMP-REL
# note: command had no output on stdout or stderr
# RUN: at line 15
c:\_work\llvm-project\llvm-project\build\bin\clang-linker-wrapper.exe --print-wrapped-module --dry-run --host-triple=x86_64-unknown-windows-gnu --linker-path=/usr/bin/ld C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o -o a.out 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c --check-prefixes=OPENMP,OPENMP-COFF
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang-linker-wrapper.exe' --print-wrapped-module --dry-run --host-triple=x86_64-unknown-windows-gnu --linker-path=/usr/bin/ld 'C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o' -o a.out
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c' --check-prefixes=OPENMP,OPENMP-COFF
# note: command had no output on stdout or stderr
# RUN: at line 45
c:\_work\llvm-project\llvm-project\build\bin\llvm-offload-binary.exe -o C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.out --image=file=C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.elf.o,kind=cuda,triple=nvptx64-nvidia-cuda,arch=sm_70
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\llvm-offload-binary.exe' -o 'C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.out' '--image=file=C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.elf.o,kind=cuda,triple=nvptx64-nvidia-cuda,arch=sm_70'
# note: command had no output on stdout or stderr
# RUN: at line 46
c:\_work\llvm-project\llvm-project\build\bin\clang.exe -cc1 C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c -triple x86_64-unknown-linux-gnu -emit-obj -o C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o -fembed-offload-object=C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.out
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang.exe' -cc1 'C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c' -triple x86_64-unknown-linux-gnu -emit-obj -o 'C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o' '-fembed-offload-object=C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.out'
# note: command had no output on stdout or stderr
# RUN: at line 48
c:\_work\llvm-project\llvm-project\build\bin\clang-linker-wrapper.exe --print-wrapped-module --dry-run --host-triple=x86_64-unknown-linux-gnu --linker-path=/usr/bin/ld C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o -o a.out 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c --check-prefixes=CUDA,CUDA-ELF
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\clang-linker-wrapper.exe' --print-wrapped-module --dry-run --host-triple=x86_64-unknown-linux-gnu --linker-path=/usr/bin/ld 'C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o' -o a.out
# .---command stdout------------
# | "C:\_work\llvm-project\llvm-project\build\bin\clang.exe" --no-default-config -o C:\Users\ContainerAdministrator\AppData\Local\Temp\lit-tmp-tksam5y3\a.out.nvptx64.sm_70-1b8158.img -dumpdir a.out.nvptx64.sm_70.img. --target=nvptx64-nvidia-cuda -march=sm_70 C:\Users\ContainerAdministrator\AppData\Local\Temp\lit-tmp-tksam5y3\linker-wrapper-image.c.tmp-nvptx64-nvidia-cuda-sm_70-74f23f.o
# | "fatbinary" -64 --create C:\Users\ContainerAdministrator\AppData\Local\Temp\lit-tmp-tksam5y3\a.out-058c46.fatbin --image3=kind=elf,sm=70,file=C:\Users\ContainerAdministrator\AppData\Local\Temp\lit-tmp-tksam5y3\a.out.nvptx64.sm_70-1b8158.img
# | ; ModuleID = 'offload.wrapper.module'
# | source_filename = "offload.wrapper.module"
# | target triple = "x86_64-unknown-linux-gnu"
# |
# | %struct.__tgt_offload_entry = type { i64, i16, i16, i32, ptr, ptr, i64, i64, ptr }
# | %fatbin_wrapper = type { i32, i32, ptr, ptr }
# |
# | @__start_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]
# | @__stop_llvm_offload_entries = external hidden constant [0 x %struct.__tgt_offload_entry]
# | @__dummy.llvm_offload_entries = internal constant [0 x %struct.__tgt_offload_entry] zeroinitializer, section "llvm_offload_entries", align 8
# | @llvm.compiler.used = appending global [1 x ptr] [ptr @__dummy.llvm_offload_entries], section "llvm.metadata"
# | @.fatbin_image = internal constant [0 x i8] zeroinitializer, section ".nv_fatbin"
# | @.fatbin_wrapper = internal constant %fatbin_wrapper { i32 1180844977, i32 1, ptr @.fatbin_image, ptr null }, section ".nvFatBinSegment", no_sanitize_address, no_sanitize_hwaddress, align 8
# | @.cuda.binary_handle = internal global ptr null
# | @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.cuda.fatbin_reg, ptr null }]
# |
# | define internal void @.cuda.fatbin_reg() section ".text.startup" {
# | entry:
# | %0 = call ptr @__cudaRegisterFatBinary(ptr @.fatbin_wrapper)
# | store ptr %0, ptr @.cuda.binary_handle, align 8
# | call void @.cuda.globals_reg(ptr %0)
# | call void @__cudaRegisterFatBinaryEnd(ptr %0)
# | %1 = call i32 @atexit(ptr @.cuda.fatbin_unreg)
# | ret void
# | }
# |
# | define internal void @.cuda.fatbin_unreg() section ".text.startup" {
# | entry:
# | %0 = load ptr, ptr @.cuda.binary_handle, align 8
# | call void @__cudaUnregisterFatBinary(ptr %0)
# | ret void
# | }
# |
# | declare ptr @__cudaRegisterFatBinary(ptr)
# |
# | declare void @__cudaRegisterFatBinaryEnd(ptr)
# |
# | declare void @__cudaUnregisterFatBinary(ptr)
# |
# | declare i32 @atexit(ptr)
# |
# | declare i32 @__cudaRegisterFunction(ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr)
# |
# | declare void @__cudaRegisterVar(ptr, ptr, ptr, ptr, i32, i64, i32, i32)
# |
# | declare void @__cudaRegisterManagedVar(ptr, ptr, ptr, ptr, i64, i32)
# |
# | declare void @__cudaRegisterSurface(ptr, ptr, ptr, ptr, i32, i32)
# |
# | declare void @__cudaRegisterTexture(ptr, ptr, ptr, ptr, i32, i32, i32)
# |
# | define internal void @.cuda.globals_reg(ptr %0) section ".text.startup" {
# | entry:
# | %1 = icmp ne ptr @__start_llvm_offload_entries, @__stop_llvm_offload_entries
# | br i1 %1, label %while.entry, label %while.end
# |
# | while.entry: ; preds = %if.end, %entry
# | %entry1 = phi ptr [ @__start_llvm_offload_entries, %entry ], [ %16, %if.end ]
# | %2 = getelementptr inbounds %struct.__tgt_offload_entry, ptr %entry1, i32 0, i32 4
# | %addr = load ptr, ptr %2, align 8
# | %3 = getelementptr inbounds %struct.__tgt_offload_entry, ptr %entry1, i32 0, i32 8
# | %aux_addr = load ptr, ptr %3, align 8
# | %4 = getelementptr inbounds %struct.__tgt_offload_entry, ptr %entry1, i32 0, i32 2
# | %kind = load i16, ptr %4, align 2
# | %5 = getelementptr inbounds %struct.__tgt_offload_entry, ptr %entry1, i32 0, i32 5
# | %name = load ptr, ptr %5, align 8
# | %6 = getelementptr inbounds %struct.__tgt_offload_entry, ptr %entry1, i32 0, i32 6
# | %size = load i64, ptr %6, align 4
# | %7 = getelementptr inbounds %struct.__tgt_offload_entry, ptr %entry1, i32 0, i32 3
# | %flags = load i32, ptr %7, align 4
# | %8 = getelementptr inbounds %struct.__tgt_offload_entry, ptr %entry1, i32 0, i32 7
# | %data = load i64, ptr %8, align 4
# | %9 = trunc i64 %data to i32
# | %type = and i32 %flags, 7
# | %10 = and i32 %flags, 8
# | %extern = lshr i32 %10, 3
# | %11 = and i32 %flags, 16
# | %constant = lshr i32 %11, 4
# | %12 = and i32 %flags, 32
# | %normalized = lshr i32 %12, 5
# | %13 = icmp eq i16 %kind, 2
# | br i1 %13, label %if.kind, label %if.end
# |
# | if.kind: ; preds = %while.entry
# | %14 = icmp eq i64 %size, 0
# | br i1 %14, label %if.then, label %if.else
# |
# | if.then: ; preds = %if.kind
# | %15 = call i32 @__cudaRegisterFunction(ptr %0, ptr %addr, ptr %name, ptr %name, i32 -1, ptr null, ptr null, ptr null, ptr null, ptr null)
# | br label %if.end
# |
# | if.else: ; preds = %if.kind
# | switch i32 %type, label %if.end [
# | i32 0, label %sw.global
# | i32 1, label %sw.managed
# | i32 2, label %sw.surface
# | i32 3, label %sw.texture
# | ]
# |
# | sw.global: ; preds = %if.else
# | call void @__cudaRegisterVar(ptr %0, ptr %addr, ptr %name, ptr %name, i32 %extern, i64 %size, i32 %constant, i32 0)
# | br label %if.end
# |
# | sw.managed: ; preds = %if.else
# | call void @__cudaRegisterManagedVar(ptr %0, ptr %aux_addr, ptr %addr, ptr %name, i64 %size, i32 %9)
# | br label %if.end
# |
# | sw.surface: ; preds = %if.else
# | br label %if.end
# |
# | sw.texture: ; preds = %if.else
# | br label %if.end
# |
# | if.end: ; preds = %sw.texture, %sw.surface, %sw.managed, %sw.global, %if.else, %if.then, %while.entry
# | %16 = getelementptr inbounds %struct.__tgt_offload_entry, ptr %entry1, i64 1
# | %17 = icmp eq ptr %16, @__stop_llvm_offload_entries
# | br i1 %17, label %while.end, label %while.entry
# |
# | while.end: ; preds = %if.end, %entry
# | ret void
# | }
# | "/usr/bin/ld" C:\_work\llvm-project\llvm-project\build\tools\clang\test\Driver\Output\linker-wrapper-image.c.tmp.o -o a.out C:\Users\ContainerAdministrator\AppData\Local\Temp\lit-tmp-tksam5y3\a.out.cuda.image.wrapper-c4bb40.o
# `-----------------------------
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c' --check-prefixes=CUDA,CUDA-ELF
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\clang\test\Driver\linker-wrapper-image.c:66:63: error: found empty check string with prefix 'CUDA:'
# | // ".nvFatBinSegment", no_sanitize_address, align 8 CUDA-NEXT:
# | ^
# `-----------------------------
# error: command failed with exit status: 2
--
```
</details>
If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.
https://github.com/llvm/llvm-project/pull/194928
More information about the cfe-commits
mailing list