HomePhabricator

[analyzer] Track the right hand side of the last store regardless of its value

Description

[analyzer] Track the right hand side of the last store regardless of its value

Summary:
The following code snippet taken from D64271#1572188 has an issue: namely,
because flag's value isn't undef or a concrete int, it isn't being tracked.

int flag;
bool coin();

void foo() {

flag = coin();

}

void test() {

int *x = 0;
int local_flag;
flag = 1;

foo();
local_flag = flag;
if (local_flag)
  x = new int;

foo();
local_flag = flag;
if (local_flag)
  *x = 5;

}

This, in my opinion, makes no sense, other values may be interesting too.
Originally added by rC185608.

Differential Revision: https://reviews.llvm.org/D64287