brintos

brintos / llvm-project-archived public Read only

0
0
Text · 839 B · b0acd26 Raw
74 lines · cpp
1// RUN: %clangxx_asan -O0 %s -o %t && %run %t2 3// Function jumps over variable initialization making lifetime analysis4// ambiguous. Asan should ignore such variable and program must not fail.5 6#include <stdlib.h>7 8int *ptr;9 10void f1(int cond) {11  if (cond)12    goto label;13  int tmp;14 15 label:16  ptr = &tmp;17  *ptr = 5;18}19 20void f2(int cond) {21  switch (cond) {22  case 1: {23    ++cond;24    int tmp;25    ptr = &tmp;26    exit(0);27  case 2:28    ptr = &tmp;29    *ptr = 5;30    exit(0);31  }32  }33}34 35void f3(int cond) {36  {37    int tmp;38    goto l2;39  l1:40    ptr = &tmp;41    *ptr = 5;42 43    exit(0);44  }45 l2:46  goto l1;47}48 49void use(int *x) {50  static int c = 10;51  if (--c == 0)52    exit(0);53  (*x)++;54}55 56void f4() {57  {58    int x;59 l2:60    use(&x);61    goto l1;62  }63 l1:64  goto l2;65}66 67int main() {68  f1(1);69  f2(1);70  f3(1);71  f4();72  return 0;73}74