
This test was timing out on Linaro's Windows on Arm bot. This was because it couldn't identify an inlined function to break on, which let it run into an infinite loop, which exhausted the stack, which would have taken forever to backtrace. Full details here - https://github.com/llvm/llvm-project/issues/143104 I'm not sure PDB would help here but it does work with DWARF as long as we use a linker that keeps it. So I've changed the test to require Windows and lld, unless you're not on Windows and then you can use any linker. Also I had to regex some parts of the function name because on Windows we get the return and parameter types too.
40 lines
1.0 KiB
Plaintext
40 lines
1.0 KiB
Plaintext
# Test the ${function.is-inlined} frame-format variable.
|
|
|
|
# Windows' link.exe does not preserve DWARF information, and we cannot get
|
|
# inlining information from PDB at this time, see:
|
|
# https://github.com/llvm/llvm-project/issues/143104
|
|
# REQUIRES: (system-windows && lld) || !system-windows
|
|
|
|
# RUN: split-file %s %t
|
|
# RUN: %clang_host -g -gdwarf %t/main.cpp -o %t.out %if system-windows %{-fuse-ld=lld%}
|
|
# RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 \
|
|
# RUN: | FileCheck %s
|
|
|
|
#--- main.cpp
|
|
|
|
void regular();
|
|
|
|
[[clang::always_inline]] void inlined1() {
|
|
regular();
|
|
}
|
|
void regular() {inlined1();}
|
|
[[clang::always_inline]] void inlined2() {regular();}
|
|
|
|
int main() {
|
|
inlined2();
|
|
return 0;
|
|
}
|
|
|
|
#--- commands.input
|
|
|
|
settings set frame-format "frame '${function.name}{${function.is-inlined} (Inlined)}'\n"
|
|
breakpoint set -n inlined1
|
|
run
|
|
bt
|
|
|
|
# CHECK: (lldb) bt
|
|
# CHECK: frame '{{.*}}inlined1({{.*}}) (Inlined)'
|
|
# CHECK-NEXT: frame '{{.*}}regular({{.*}})'
|
|
# CHECK-NEXT: frame '{{.*}}inlined2({{.*}}) (Inlined)'
|
|
# CHECK-NEXT: frame 'main'
|