• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt -S -callsite-splitting < %s | FileCheck %s
2;
3; Make sure that the callsite is not splitted by checking that there's only one
4; call to @callee.
5
6; CHECK-LABEL: @caller
7; CHECK-LABEL: lpad
8; CHECK: call void @callee
9; CHECK-NOT: call void @callee
10
11declare void @foo(i1* %p);
12declare void @bar(i1* %p);
13declare dso_local i32 @__gxx_personality_v0(...)
14
15define void @caller(i1* %p) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
16entry:
17  %0 = icmp eq i1* %p, null
18  br i1 %0, label %bb1, label %bb2
19
20bb1:
21  invoke void @foo(i1* %p) to label %end1 unwind label %lpad
22
23bb2:
24  invoke void @bar(i1* %p) to label %end2 unwind label %lpad
25
26lpad:
27  %1 = landingpad { i8*, i32 } cleanup
28  call void @callee(i1* %p)
29  resume { i8*, i32 } %1
30
31end1:
32  ret void
33
34end2:
35  ret void
36}
37
38define internal void @callee(i1* %p) {
39  ret void
40}
41