brintos

brintos / llvm-project-archived public Read only

0
0
Text · 800 B · abb43e9 Raw
41 lines · c
1// RUN: %clang_analyze_cc1 -triple x86_64-apple-darwin10 \2// RUN:  -analyzer-checker=core,debug.ExprInspection -verify %s3 4void clang_analyzer_warnIfReached(void);5 6typedef struct {7  int value;8} Struct;9 10typedef union {11  Struct *ptr;12  long num;13} __attribute__((transparent_union)) Alias;14 15void foo(Struct *x);16void foo(Alias y) {17  if (y.ptr == 0) {18    // no-crash19  }20  clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}21}22void foobar(long z);23void foobar(Alias z) {24  if (z.num != 42) {25    // no-crash26  }27  clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}28}29 30void foobaz(Alias x) {31  if (x.ptr == 0) {32    // no-crash33  }34  clang_analyzer_warnIfReached(); // expected-warning{{REACHABLE}}35}36void bar(Struct arg) {37  foo(&arg);38  foobar(42);39  foobaz(&arg);40}41