forked from OSchip/llvm-project
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
// REQUIRES: !asan, lldb
|
|
// UNSUPPORTED: system-windows
|
|
// Zorg configures the ASAN stage2 bots to not build the asan
|
|
// compiler-rt. Only run this test on non-asanified configurations.
|
|
// UNSUPPORTED: apple-lldb-pre-1000
|
|
|
|
// XFAIL: lldb
|
|
// lldb-8, even outside of dexter, will sometimes trigger an asan fault in
|
|
// the debugged process and generally freak out.
|
|
|
|
// RUN: %dexter --fail-lt 1.0 -w \
|
|
// RUN: --builder 'clang' --debugger 'lldb' \
|
|
// RUN: --cflags "-O1 -glldb -fsanitize=address -arch x86_64" \
|
|
// RUN: --ldflags="-fsanitize=address" -- %s
|
|
#include <deque>
|
|
|
|
struct A {
|
|
int a;
|
|
A(int a) : a(a) {}
|
|
A() : a(0) {}
|
|
};
|
|
|
|
using deq_t = std::deque<A>;
|
|
|
|
template class std::deque<A>;
|
|
|
|
static void __attribute__((noinline, optnone)) escape(deq_t &deq) {
|
|
static volatile deq_t *sink;
|
|
sink = &deq;
|
|
}
|
|
|
|
int main() {
|
|
deq_t deq;
|
|
deq.push_back(1234);
|
|
deq.push_back(56789);
|
|
escape(deq); // DexLabel('first')
|
|
while (!deq.empty()) {
|
|
auto record = deq.front();
|
|
deq.pop_front();
|
|
escape(deq); // DexLabel('second')
|
|
}
|
|
}
|
|
|
|
// DexExpectWatchValue('deq[0].a', '1234', on_line='first')
|
|
// DexExpectWatchValue('deq[1].a', '56789', on_line='first')
|
|
|
|
// DexExpectWatchValue('deq[0].a', '56789', '0', on_line='second')
|
|
|