xref: /llvm-project/cross-project-tests/debuginfo-tests/dexter-tests/memvars/ptr-to.c (revision 45a40c163932d12b72b33bd1d8a84519392b5d39)
11364750dSJames Henderson // XFAIL:*
21364750dSJames Henderson //// Currently debug info for 'local' behaves, but 'plocal' dereferences to
31364750dSJames Henderson //// the incorrect value 0xFF after the call to esc.
41364750dSJames Henderson 
51364750dSJames Henderson // REQUIRES: lldb
61364750dSJames Henderson // UNSUPPORTED: system-windows
7*45a40c16SStephen Tozer // RUN: %clang -std=gnu11 -O2 -glldb %s -o %t
8*45a40c16SStephen Tozer // RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
91364750dSJames Henderson //
101364750dSJames Henderson //// Check that a pointer to a variable living on the stack dereferences to the
111364750dSJames Henderson //// variable value.
121364750dSJames Henderson 
131364750dSJames Henderson int glob;
141364750dSJames Henderson __attribute__((__noinline__))
esc(int * p)151364750dSJames Henderson void esc(int* p) {
161364750dSJames Henderson   glob = *p;
171364750dSJames Henderson   *p = 0xFF;
181364750dSJames Henderson }
191364750dSJames Henderson 
main()201364750dSJames Henderson int main() {
211364750dSJames Henderson   int local = 0xA;
221364750dSJames Henderson   int *plocal = &local;
231364750dSJames Henderson   esc(plocal);      // DexLabel('s1')
241364750dSJames Henderson   local = 0xB;      //// DSE
251364750dSJames Henderson   return 0;         // DexLabel('s2')
261364750dSJames Henderson }
271364750dSJames Henderson 
281364750dSJames Henderson 
291364750dSJames Henderson // DexExpectWatchValue('local', 0xA, on_line=ref('s1'))
301364750dSJames Henderson // DexExpectWatchValue('local', 0xB, on_line=ref('s2'))
311364750dSJames Henderson // DexExpectWatchValue('*plocal', 0xA, on_line=ref('s1'))
321364750dSJames Henderson // DexExpectWatchValue('*plocal', 0xB, on_line=ref('s2'))
331364750dSJames Henderson //// Ideally we should be able to observe the dead store to local (0xB) through
341364750dSJames Henderson //// plocal here.
351364750dSJames Henderson // DexExpectWatchValue('(local == *plocal)', 'true', from_line=ref('s1'), to_line=ref('s2'))
36