14e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -verify %s 24e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks// expected-no-diagnostics 34e9179a3d0ec612a4d540281020b200254348a6bAnna Zaksstruct X { 44e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks int *p; 54e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks int zero; 64e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks void foo () { 74e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks reset(p - 1); 84e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks } 94e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks void reset(int *in) { 104e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks while (in != p) // Loop must be entered. 114e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks zero = 1; 124e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks } 134e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks}; 144e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks 154e9179a3d0ec612a4d540281020b200254348a6bAnna Zaksint test (int *in) { 164e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks X littleX; 174e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks littleX.zero = 0; 184e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks littleX.p = in; 194e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks littleX.foo(); 204e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks return 5/littleX.zero; // no-warning 214e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks} 224e9179a3d0ec612a4d540281020b200254348a6bAnna Zaks 23