Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / bolt / test / runtime / X86 / pie-exceptions-failed-split.test
blobeb46dca6d98e5599fc91ca631628ad741e9670df
1 REQUIRES: system-linux,bolt-runtime
3 RUN: %clangxx %cxxflags -pie -fPIC %p/Inputs/pie-exceptions-failed-split.s \
4 RUN:   -Wl,-q -o %t
5 RUN: llvm-bolt %t -o %t.instr --instrument --instrumentation-file=%t.fdata
7 ## Record profile with invocation that does not throw exceptions.
8 RUN: %t.instr
10 RUN: llvm-bolt %t -o %t.bolt --data %t.fdata --reorder-blocks=ext-tsp \
11 RUN:   --split-functions --split-eh --print-after-lowering \
12 RUN:   --print-only=_Z10throw_testiPPc 2>&1 | FileCheck %s
14 ## Hot code in the test case gets larger after splitting because of jump
15 ## instruction relaxation. Check that BOLT reverts the split correctly.
16 CHECK: Binary Function "_Z10throw_testiPPc"
17 CHECK: IsSplit :
18 CHECK-SAME: 0
20 ## Check that the landing pad trampoline was created, but contains no
21 ## instructions and falls to the real landing pad.
22 CHECK: {{^[^[:space:]]+}} (0 instructions
23 CHECK-NEXT: Landing Pad{{$}}
24 CHECK: Exec Count
25 CHECK-SAME: : 0
26 CHECK: Successors:
27 CHECK-SAME: [[LP:[^[:space:]]+]]
28 CHECK-EMPTY:
29 CHECK-NEXT: [[LP]]
30 CHECK-DAG: Exec Count
31 CHECK-NOT: Exec Count
32 CHECK-DAG: callq   __cxa_begin_catch
34 ## Verify the output still executes correctly when the exception path is being
35 ## taken.
36 RUN: %t.bolt arg1 arg2 arg3