diff --git a/compiler-rt/test/asan/TestCases/speculative_load2.cc b/compiler-rt/test/asan/TestCases/speculative_load2.cc index 5022a99dbf7f..51051eb2b75b 100644 --- a/compiler-rt/test/asan/TestCases/speculative_load2.cc +++ b/compiler-rt/test/asan/TestCases/speculative_load2.cc @@ -1,8 +1,8 @@ // Verifies that speculative loads from unions do not happen under asan. -// RUN: %clangxx_asan -O0 %s -o %t && ASAN_OPTIONS=detect_leaks=0 %run %t 2>&1 -// RUN: %clangxx_asan -O1 %s -o %t && ASAN_OPTIONS=detect_leaks=0 %run %t 2>&1 -// RUN: %clangxx_asan -O2 %s -o %t && ASAN_OPTIONS=detect_leaks=0 %run %t 2>&1 -// RUN: %clangxx_asan -O3 %s -o %t && ASAN_OPTIONS=detect_leaks=0 %run %t 2>&1 +// RUN: %clangxx_asan -O0 %s -o %t && %run %t 2>&1 +// RUN: %clangxx_asan -O1 %s -o %t && %run %t 2>&1 +// RUN: %clangxx_asan -O2 %s -o %t && %run %t 2>&1 +// RUN: %clangxx_asan -O3 %s -o %t && %run %t 2>&1 typedef union { short q; @@ -12,10 +12,13 @@ typedef union { int for_alignment; } w; } U; + int main() { char *buf = new char[2]; buf[0] = buf[1] = 0x0; U *u = (U *)buf; - return u->q == 0 ? 0 : u->w.y; + short result = u->q == 0 ? 0 : u->w.y; + delete[] buf; + return result; }