<div dir="ltr"><div dir="ltr">Hi,</div><div dir="ltr"><br><div>In the following code:</div><div><div><br></div><div>void test1(int i) {</div><div>  unsigned short j = i;</div><div>  if (j < 0) {</div><div>    int a = j;</div><div>    clang_analyzer_eval(a < 0); // expected-warning{{FALSE}}</div><div>  }</div><div>}</div></div><div><br></div><div>The condition 'a < 0' is evaluated as true by the analyzer (and 'j < 0' too). Normally the branch can not be entered at all because 'j < 0' can not be true. Is this the correct way of how this should work? It looks like that the variable 'a' points to the same memory region as 'i' that contains a signed value. The problem does not appear if 'unsigned int' is used for 'j'.</div><div><br></div><div>Balázs</div></div></div>