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