brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 971451f Raw
157 lines · plain
1; RUN: opt -S -dxil-finalize-linkage -mtriple=dxil-unknown-shadermodel6.5-compute %s | FileCheck %s2; RUN: llc %s --filetype=asm -o - | FileCheck %s3 4target triple = "dxilv1.5-pc-shadermodel6.5-compute"5 6; Confirm that DXILFinalizeLinkage will remove functions that have compatible7; linkage and are not called from anywhere. This should be any function that8; is not an entry point.9 10; Is hidden and is uncalled, this should be removed.11; CHECK-NOT: define {{.*}}doNothingUncalled12define hidden void @"?doNothingUncalled@@YAXXZ"() #1 {13entry:14  ret void15}16 17; Alwaysinline, hidden and uncalled, this should be removed.18; CHECK-NOT: define {{.*}}doAlwaysInlineUncalled19define hidden void @"?doAlwaysInlineUncalled@@YAXXZ"() #0 {20entry:21  ret void22}23 24; Noinline, hidden and uncalled, this should be removed.25; CHECK-NOT: define {{.*}}doNoinlineUncalled26define hidden void @"?doNoinlineUncalled@@YAXXZ"() #3 {27entry:28  ret void29}30 31; No inlining attribute, internal, and uncalled; this should be removed.32; CHECK-NOT: define {{.*}}doInternalUncalled33define internal void @"?doInternalUncalled@@YAXXZ"() #1 {34entry:35  ret void36}37 38; Alwaysinline, internal, and uncalled; this should be removed.39; CHECK-NOT: define {{.*}}doAlwaysInlineInternalUncalled40define internal void @"?doAlwaysInlineInternalUncalled@@YAXXZ"() #0 {41entry:42  ret void43}44 45; Noinline, internal, and uncalled; this should be removed.46; CHECK-NOT: define {{.*}}doNoinlineInternalUncalled47define internal void @"?doNoinlineInternalUncalled@@YAXXZ"() #3 {48entry:49  ret void50}51 52; Marked external, hidden, and uncalled, this should become internal and be removed.53; CHECK-NOT: define {{.*}}doExternalUncalled54define external hidden void @"?doExternalUncalled@@YAXXZ"() #1 {55entry:56  ret void57}58 59; Alwaysinline, external, hidden, and uncalled, this should become internal and be removed.60; CHECK-NOT: define {{.*}}doAlwaysInlineExternalUncalled61define external hidden void @"?doAlwaysInlineExternalUncalled@@YAXXZ"() #0 {62entry:63  ret void64}65 66; Noinline, external, hidden, and uncalled, this should become internal and be removed.67; CHECK-NOT: define {{.*}}doNoinlineExternalUncalled68define external hidden void @"?doNoinlineExternalUncalled@@YAXXZ"() #3 {69entry:70  ret void71}72 73; No inlining attribute and called, this should stay.74; CHECK: define {{.*}}doNothingCalled75define hidden void @"?doNothingCalled@@YAXXZ"() #1 {76entry:77  ret void78}79 80; Alwaysinline, hidden, and called, this should stay.81; CHECK: define {{.*}}doAlwaysInlineCalled82define hidden void @"?doAlwaysInlineCalled@@YAXXZ"() #0 {83entry:84  ret void85}86 87; Noinline, hidden, and called, this should stay.88; CHECK: define {{.*}}doNoinlineCalled89define hidden void @"?doNoinlineCalled@@YAXXZ"() #3 {90entry:91  ret void92}93 94; No inlining attribute, internal, and called; this should stay.95; CHECK: define {{.*}}doInternalCalled96define internal void @"?doInternalCalled@@YAXXZ"() #1 {97entry:98  ret void99}100 101; Alwaysinline, internal, and called; this should stay.102; CHECK: define {{.*}}doAlwaysInlineInternalCalled103define internal void @"?doAlwaysInlineInternalCalled@@YAXXZ"() #0 {104entry:105  ret void106}107 108; Noinline, internal, and called; this should stay.109; CHECK: define {{.*}}doNoinlineInternalCalled110define internal void @"?doNoinlineInternalCalled@@YAXXZ"() #3 {111entry:112  ret void113}114 115; Marked external, hidden, and called, this should become internal and stay.116; CHECK: define {{.*}}doExternalCalled117define external hidden void @"?doExternalCalled@@YAXXZ"() #1 {118entry:119  ret void120}121 122; Always inlined, external, hidden, and called, this should become internal and stay.123; CHECK: define {{.*}}doAlwaysInlineExternalCalled124define external hidden void @"?doAlwaysInlineExternalCalled@@YAXXZ"() #0 {125entry:126  ret void127}128 129; Noinline, external, hidden, and called, this should become internal and stay.130; CHECK: define {{.*}}doNoinlineExternalCalled131define external hidden void @"?doNoinlineExternalCalled@@YAXXZ"() #3 {132entry:133  ret void134}135 136; Entry point function, this should stay.137; CHECK: define void @main()138define void @main() #4 {139entry:140  call void @"?doNothingCalled@@YAXXZ"() #5141  call void @"?doAlwaysInlineCalled@@YAXXZ"() #5142  call void @"?doNoinlineCalled@@YAXXZ"() #5143  call void @"?doInternalCalled@@YAXXZ"() #5144  call void @"?doAlwaysInlineInternalCalled@@YAXXZ"() #5145  call void @"?doNoinlineInternalCalled@@YAXXZ"() #5146  call void @"?doExternalCalled@@YAXXZ"() #5147  call void @"?doAlwaysInlineExternalCalled@@YAXXZ"() #5148  call void @"?doNoinlineExternalCalled@@YAXXZ"() #5149  ret void150}151 152attributes #0 = { alwaysinline convergent norecurse nounwind }153attributes #1 = { convergent norecurse nounwind }154attributes #3 = { convergent noinline norecurse nounwind }155attributes #4 = { convergent noinline norecurse "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }156attributes #5 = { convergent }157