// This test case checks debug info during register moves for an argument. | |
// RUN: %clang %target_itanium_abi_host_triple -m64 -mllvm -fast-isel=false %s -c -o %t.o -g | |
// RUN: %clang %target_itanium_abi_host_triple -m64 %t.o -o %t.out | |
// RUN: %test_debuginfo %s %t.out | |
// | |
// DEBUGGER: break 26 | |
// DEBUGGER: r | |
// DEBUGGER: print mutex | |
// CHECK: ={{.* 0x[0-9A-Fa-f]+}} | |
// | |
// 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; | |
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); | |
} |