blob: 550c1ac67e6cc97e69d78d76d8e5b7b2ccb8196b [file] [log] [blame] [edit]
REQUIRES: system-linux,bolt-runtime
RUN: %clangxx %cxxflags -pie -fPIC %p/Inputs/pie-exceptions-failed-split.s \
RUN: -Wl,-q -o %t
RUN: llvm-bolt %t -o %t.instr --instrument --instrumentation-file=%t.fdata
## Record profile with invocation that does not throw exceptions.
RUN: %t.instr
RUN: llvm-bolt %t -o %t.bolt --data %t.fdata --reorder-blocks=ext-tsp \
RUN: --split-functions --split-eh --print-after-lowering \
RUN: --print-only=_Z10throw_testiPPc 2>&1 | FileCheck %s
## Check that a landing pad is split from its thrower and does not require a
## trampoline LP.
CHECK: Binary Function "_Z10throw_testiPPc"
CHECK: IsSplit :
CHECK-SAME: 1
CHECK: callq {{.*}} # handler: [[LPAD:.*]];
CHECK-NOT: Landing Pad{{$}}
CHECK: HOT-COLD SPLIT POINT
CHECK: {{^}}[[LPAD]]
CHECK-NEXT: Landing Pad
## Verify the output still executes correctly when the exception path is being
## taken.
RUN: %t.bolt arg1 arg2 arg3