xref: /llvm-project/llvm/test/Transforms/Inline/inline-invoke-tail.ll (revision 151602c7a9935558ca671b35359989b261045db0)
1; RUN: opt < %s -passes=inline -S | not grep "tail call void @llvm.memcpy.p0.p0.i32"
2; PR3550
3
4define internal void @foo(ptr %p, ptr %q) {
5; CHECK-NOT: @foo
6entry:
7  tail call void @llvm.memcpy.p0.p0.i32(ptr %p, ptr %q, i32 4, i1 false)
8  ret void
9}
10
11define i32 @main() personality ptr @__gxx_personality_v0 {
12; CHECK-LABEL: define i32 @main() personality ptr @__gxx_personality_v0
13entry:
14  %a = alloca i32
15  %b = alloca i32
16  store i32 1, ptr %a, align 4
17  store i32 0, ptr %b, align 4
18  invoke void @foo(ptr %a, ptr %b)
19      to label %invcont unwind label %lpad
20; CHECK-NOT: invoke
21; CHECK-NOT: @foo
22; CHECK-NOT: tail
23; CHECK: call void @llvm.memcpy.p0.p0.i32
24; CHECK: br
25
26invcont:
27  %retval = load i32, ptr %a, align 4
28  ret i32 %retval
29
30lpad:
31  %exn = landingpad {ptr, i32}
32         catch ptr null
33  unreachable
34}
35
36declare i32 @__gxx_personality_v0(...)
37
38declare void @llvm.memcpy.p0.p0.i32(ptr nocapture, ptr nocapture, i32, i1) nounwind
39