| // RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s |
| // RUN: %clang_analyze_cc1 -analyzer-checker=core -verify -fobjc-arc %s |
| |
| #if __has_feature(objc_arc) |
| // expected-no-diagnostics |
| #endif |
| |
| @interface SomeClass |
| @end |
| |
| void simpleStrongPointerValue() { |
| SomeClass *x; |
| if (x) {} |
| #if !__has_feature(objc_arc) |
| // expected-warning@-2{{Branch condition evaluates to a garbage value}} |
| #endif |
| } |
| |
| void simpleArray() { |
| SomeClass *vlaArray[5]; |
| |
| if (vlaArray[0]) {} |
| #if !__has_feature(objc_arc) |
| // expected-warning@-2{{Branch condition evaluates to a garbage value}} |
| #endif |
| } |
| |
| void variableLengthArray() { |
| int count = 1; |
| SomeClass * vlaArray[count]; |
| |
| if (vlaArray[0]) {} |
| #if !__has_feature(objc_arc) |
| // expected-warning@-2{{Branch condition evaluates to a garbage value}} |
| #endif |
| } |
| |
| void variableLengthArrayWithExplicitStrongAttribute() { |
| int count = 1; |
| __attribute__((objc_ownership(strong))) SomeClass * vlaArray[count]; |
| |
| if (vlaArray[0]) {} |
| #if !__has_feature(objc_arc) |
| // expected-warning@-2{{Branch condition evaluates to a garbage value}} |
| #endif |
| } |