Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Analysis / live-variables.m
blob0d345e82c02a7757db856bdb5ad6961fe54d9395
1 // RUN: %clang_analyze_cc1 -analyzer-checker=core -fobjc-arc -verify %s
2 // expected-no-diagnostics
3 @interface NSObject
4 @end
5 @interface NSString : NSObject
6 - (id)lastPathComponent;
7 @end
8 int getBool(void);
9 int *getPtr(void);
10 int foo(void) {
11   int r = 0;
12   NSString *filename = @"filename";
13   for (int x = 0; x< 10; x++) {
14     int *p = getPtr();
15     // Liveness info is not computed correctly due to the following expression.
16     // This happens due to CFG being special cased for short circuit operators.
17     // Note, due to ObjC method call, the outermost logical operator is wrapped in ExprWithCleanups.
18     // PR18159
19     if ((p != 0) && (getBool()) && ([filename lastPathComponent]) && (getBool())) {
20       r = *p; // no-warning
21     }
22   }
23   return r;