Right now, if I have code like this:
int a; /* invalid value */
int b = a + 1; /* operation on invalid value */
...memcheck does not produce a warning for the addition. It just taints b
as invalid and only generates a warning if I try to use b in a
behavior-changing way. This is good, and it
> int a; /* invalid value */
> int b;
> if (a > 0) /* conditional on invalid value */
> b = a;
> else
> b = 0;
>
> ...memcheck produces a warning on the conditional branch. But if you look at
> what this code actually computes, it is just "b = max(a,0)", which is not so
> differen