Files
llvm-project/lldb/test/Shell/Settings/TestFrameFunctionInlined.test
Raul Tambre 21041c9292 [NFCI][lldb][test] Fix mismatched C/C++ substitutions (#165773)
Most of the cases were where a C++ file was being compiled with the C substitution.
There were a few cases of the opposite though.

LLDB seems to be the only real culprit in the LLVM codebase for these mismatches.
Rest of the LLVM presumably sticks at least language-specific options in the common substitutions
making the mistakes immediately apparent.

I found these by using Clang frontend configuration files containing language-specific options for
both C and C++ (e.g. `-std=c2y` and `-std=c++26`).
2025-10-30 23:18:32 +02:00

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: %clangxx_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'