brintos

brintos / llvm-project-archived public Read only

0
0
Text · 899 B · 225a18c Raw
42 lines · cpp
1// RUN: %clangxx_msan %s -O0 -fsanitize=memory -fsanitize-memory-use-after-dtor -o %t && %run %t >%t.out 2>&12 3// RUN: %clangxx_msan %s -O1 -fsanitize=memory -fsanitize-memory-use-after-dtor -o %t && %run %t >%t.out 2>&14 5// RUN: %clangxx_msan %s -O2 -fsanitize=memory -fsanitize-memory-use-after-dtor -o %t && %run %t >%t.out 2>&16 7// TODO Success pending on resolution of8// https://github.com/google/sanitizers/issues/5969 10// XFAIL: *11 12#include <assert.h>13#include <sanitizer/msan_interface.h>14 15template <class T> class Vector {16 public:17  int size;18  ~Vector() {}19};20 21struct NonTrivial {22  int a;23  Vector<int> v;24};25 26struct Trivial {27  int a;28  int b;29};30 31int main() {32  NonTrivial *nt = new NonTrivial();33  nt->~NonTrivial();34  assert(__msan_test_shadow(nt, sizeof(*nt)) != -1);35 36  Trivial *t = new Trivial();37  t->~Trivial();38  assert(__msan_test_shadow(t, sizeof(*t)) != -1);39 40  return 0;41}42