50 lines · plain
1; Check that Module splitting can trace indirect calls through signatures.2 3; RUN: llvm-split -split-by-category=module-id -S < %s -o %t4; RUN: FileCheck %s -input-file=%t_0.ll --check-prefix CHECK0 \5; RUN: --implicit-check-not @kernel_A --implicit-check-not @bbb6; RUN: FileCheck %s -input-file=%t_1.ll --check-prefix CHECK1 \7; RUN: --implicit-check-not @kernel_B --implicit-check-not @ccc8 9; RUN: llvm-split -split-by-category=kernel -S < %s -o %t10; RUN: FileCheck %s -input-file=%t_0.ll --check-prefix CHECK0 \11; RUN: --implicit-check-not @kernel_A12; RUN: FileCheck %s -input-file=%t_1.ll --check-prefix CHECK1 \13; RUN: --implicit-check-not @kernel_B14 15; CHECK0-DAG: define spir_kernel void @kernel_B16; CHECK0-DAG: define spir_func void @aaa(i32 %0, i32 %1)17; CHECK0-DAG: define spir_func void @ccc(ptr %ptr)18 19; CHECK1-DAG: define spir_kernel void @kernel_A20; CHECK1-DAG: define spir_func void @aaa(i32 %0, i32 %1)21; CHECK1-DAG: define spir_func void @bbb(ptr %ptr)22 23 24define spir_func void @aaa(i32 %0, i32 %1) {25 ret void26}27 28define spir_func void @bbb(void (i32, i32)* %ptr) {29 call spir_func void %ptr(i32 0, i32 0)30 ret void31}32 33define spir_func void @ccc(void (i32, i32)* %ptr) {34 call spir_func void %ptr(i32 0, i32 0)35 ret void36}37 38define spir_kernel void @kernel_A() #0 {39 call spir_func void @bbb(void (i32, i32)* null)40 ret void41}42 43define spir_kernel void @kernel_B() #1 {44 call spir_func void @ccc(void (i32, i32)* null)45 ret void46}47 48attributes #0 = { "module-id"="TU1.cpp" }49attributes #1 = { "module-id"="TU2.cpp" }50