// REQUIRES: lldb | |
// UNSUPPORTED: system-windows | |
// | |
// This test case checks debug info during register moves for an argument. | |
// RUN: %dexter --fail-lt 1.0 -w \ | |
// RUN: --builder clang-c --debugger 'lldb' \ | |
// RUN: --cflags "-m64 -mllvm -fast-isel=false -g" -- %s | |
// | |
// Radar 8412415 | |
struct _mtx | |
{ | |
long unsigned int ptr; | |
int waiters; | |
struct { | |
int tag; | |
int pad; | |
} mtxi; | |
}; | |
int foobar(struct _mtx *mutex) { | |
int r = 1; | |
int l = 0; // DexLabel('l_assign') | |
int j = 0; | |
do { | |
if (mutex->waiters) { | |
r = 2; | |
} | |
j = bar(r, l); | |
++l; | |
} while (l < j); | |
return r + j; | |
} | |
int bar(int i, int j) { | |
return i + j; | |
} | |
int main() { | |
struct _mtx m; | |
m.waiters = 0; | |
return foobar(&m); | |
} | |
/* | |
DexExpectProgramState({ | |
'frames': [ | |
{ | |
'location': { 'lineno': ref('l_assign') }, | |
'watches': { | |
'*mutex': { 'is_irretrievable': False } | |
} | |
} | |
] | |
}) | |
*/ | |