brintos

brintos / llvm-project-archived public Read only

0
0
Text · 781 B · dc63293 Raw
51 lines · cpp
1// RUN: %clangxx_asan -O0 %s -o %t2 3// RUN: not %run %t 'A' 2>&1 | FileCheck %s4// RUN: not %run %t 'B' 2>&1 | FileCheck %s5 6// Missing lifetime markers in test_a7// https://bugs.llvm.org/show_bug.cgi?id=343538// XFAIL: *9 10struct B {11  B() : p('B') {}12  char p;13};14 15struct C {16  const char *p;17  explicit C(const char *c) : p(c) {}18  explicit C(const B &b) : p(&b.p) {}19};20 21struct A {22  char p;23  A() : p('C') {}24  const operator C() const { return C(&p); }25};26 27volatile char r;28void test_a() {29  C s = A();30  r = *s.p;31}32 33void test_b() {34  C s = B();35  r = *s.p;36}37 38int main(int argc, char **argv) {39  switch (argv[1][0]) {40  case 'A':41    test_a();42    return 0;43  case 'B':44    test_b();45    return 0;46  }47  return 1;48}49 50// CHECK: ERROR: AddressSanitizer: stack-use-after-scope51