... unless it's a literal
D94640 was a bit too aggressive in its analysis, considering integers
representing valid addresses as invalid. This change rolls back some of
the check, so that only the most obvious case is still flagged.
Before:
cpp free((void*)1000); // literal converted to `void*`: warning good free((void*)an_int); // `int` object converted to `void*`: warning might // be a false positive
After
cpp free((void*)1000); // literal converted to `void*`: warning good free((void*)an_int); // doesn't warn
We don't typically use top-level const on locals or params.