https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71302
David Malcolm <dmalcolm at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |dmalcolm at gcc dot gnu.org Target Milestone|--- |9.0 Summary|-Wzero-as-null-pointer-cons |[9 Regression] |tant: misleading caret |-Wzero-as-null-pointer-cons |location for pointer in |tant: misleading caret |function call |location for pointer in | |function call --- Comment #3 from David Malcolm <dmalcolm at gcc dot gnu.org> --- (In reply to Eric Gallager from comment #2) > (In reply to Manuel López-Ibáñez from comment #1) > > I don't think this can be fixed without having locations for constants (or > > at least for the arguments of function calls, thus fixing PR43486.) > > Even though bug 43486 isn't quite fixed yet, David Malcolm still made some > major progress on it for GCC 9. In GCC 8, actually. Unfortunately, it seems to have regressed on trunk. g++ 7.4 has false positives for NULL, and uses the closing parenthesis of the call as the location: <source>: In function 'int main()': <source>:16:14: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant] Function1(0); ^ <source>:17:17: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant] Function1(NULL); ^ <source>:18:17: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant] Function2(0, 0); ^ <source>:19:20: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant] Function2(NULL, 0); ^ g++ 8.2 gets it right: <source>: In function 'int main()': <source>:16:13: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant] Function1(0); ^ <source>:18:13: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant] Function2(0, 0); ^ g++ trunk seems to have regressed: it uses the closing parenthesis of the call as the location (but doesn't have the false positives from above): <source>: In function 'int main()': <source>:16:14: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant] 16 | Function1(0); | ^ <source>:18:17: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant] 18 | Function2(0, 0); | ^ I'm investigating the regression.