1// REQUIRES: lldb
2// UNSUPPORTED: system-windows
3// RUN: %clang -std=gnu11 -O2 -glldb %s -o %t
4// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
5//
6//// Check that the once-escaped variable 'param' can still be read after
7//// we perform inlining + mem2reg. See D89810 and D85555.
8
9int g;
10__attribute__((__always_inline__))
11static void use(int* p) {
12 g = *p;
13}
14
15__attribute__((__noinline__))
16void fun(int param) {
17 volatile int step1 = 0; // DexLabel('s1')
18 use(p: &param);
19 volatile int step2 = 0; // DexLabel('s2')
20}
21
22int main() {
23 fun(param: 5);
24}
25
26// DexExpectWatchValue('param', '5', from_line=ref('s1'), to_line=ref('s2'))
27

source code of cross-project-tests/debuginfo-tests/dexter-tests/memvars/inlining.c