about summary refs log tree commit diff homepage
path: root/test/CXX/StaticDestructor.cpp
blob: 090ae761a862211e4db84e33ebbb62d9d8420099 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// don't optimize this, llvm likes to turn the *p into unreachable

// RUN: %clangxx %s -emit-llvm -g %O0opt -c -o %t1.bc
// RUN: rm -rf %t.klee-out
// RUN: %klee --output-dir=%t.klee-out --optimize=false --libc=klee --write-no-tests %t1.bc 2> %t1.log
// RUN: FileCheck --input-file %t1.log %s

#include <cassert>

class Test {
  int *p;

public:
  Test() : p(0) {}
  ~Test() {
    assert(!p);
    // CHECK: :[[@LINE+1]]: memory error
    assert(*p == 10); // crash here
  }
};

Test t;

int main(int argc, char **argv) { return 0; }