xref: /llvm-project/bolt/test/runtime/X86/pie-exceptions-split.test (revision 105ecd8bb2c90c874375100e61f85678a0f6e310)
1REQUIRES: system-linux,bolt-runtime
2
3RUN: %clangxx %cxxflags -pie -fPIC %p/Inputs/pie-exceptions-failed-split.s \
4RUN:   -Wl,-q -o %t
5RUN: llvm-bolt %t -o %t.instr --instrument --instrumentation-file=%t.fdata
6
7## Record profile with invocation that does not throw exceptions.
8RUN: %t.instr
9
10RUN: llvm-bolt %t -o %t.bolt --data %t.fdata --reorder-blocks=ext-tsp \
11RUN:   --split-functions --split-eh --print-after-lowering \
12RUN:   --print-only=_Z10throw_testiPPc 2>&1 | FileCheck %s
13
14## Check that a landing pad is split from its thrower and does not require a
15## trampoline LP.
16CHECK: Binary Function "_Z10throw_testiPPc"
17CHECK: IsSplit :
18CHECK-SAME: 1
19CHECK: callq {{.*}} # handler: [[LPAD:.*]];
20CHECK-NOT: Landing Pad{{$}}
21CHECK: HOT-COLD SPLIT POINT
22CHECK: {{^}}[[LPAD]]
23CHECK-NEXT: Landing Pad
24
25## Verify the output still executes correctly when the exception path is being
26## taken.
27RUN: %t.bolt arg1 arg2 arg3
28