xref: /llvm-project/llvm/test/Transforms/InstCombine/kcfi-operand-bundles.ll (revision cff5bef948c91e4919de8a5fb9765e0edc13f3de)
1*cff5bef9SSami Tolvanen; RUN: opt < %s -passes=instcombine -S | FileCheck %s
2*cff5bef9SSami Tolvanen
3*cff5bef9SSami Tolvanendefine void @f1() #0 prefix i32 10 {
4*cff5bef9SSami Tolvanen  ret void
5*cff5bef9SSami Tolvanen}
6*cff5bef9SSami Tolvanen
7*cff5bef9SSami Tolvanendeclare void @f2() #0 prefix i32 11
8*cff5bef9SSami Tolvanen
9*cff5bef9SSami Tolvanen; CHECK-LABEL: define void @g(ptr noundef %x) #0
10*cff5bef9SSami Tolvanendefine void @g(ptr noundef %x) #0 {
11*cff5bef9SSami Tolvanen  ; CHECK: call void %x() [ "kcfi"(i32 10) ]
12*cff5bef9SSami Tolvanen  call void %x() [ "kcfi"(i32 10) ]
13*cff5bef9SSami Tolvanen
14*cff5bef9SSami Tolvanen  ; COM: Must drop the kcfi operand bundle from direct calls.
15*cff5bef9SSami Tolvanen  ; CHECK: call void @f1()
16*cff5bef9SSami Tolvanen  ; CHECK-NOT: [ "kcfi"(i32 10) ]
17*cff5bef9SSami Tolvanen  call void @f1() [ "kcfi"(i32 10) ]
18*cff5bef9SSami Tolvanen
19*cff5bef9SSami Tolvanen  ; CHECK: call void @f2()
20*cff5bef9SSami Tolvanen  ; CHECK-NOT: [ "kcfi"(i32 10) ]
21*cff5bef9SSami Tolvanen  call void @f2() [ "kcfi"(i32 10) ]
22*cff5bef9SSami Tolvanen  ret void
23*cff5bef9SSami Tolvanen}
24*cff5bef9SSami Tolvanen
25*cff5bef9SSami Tolvanenattributes #0 = { "kcfi-target" }
26