https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82963
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
CC| |manu at gcc dot gnu.org
Resolution|--- |INVALID
--- Comment #2 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
(In reply to Michal Hocko from comment #0)
> While the warning is correct and the given mask will always resolve to the
> success path of the ternary operator I really fail to see why we should warn
> about this fact. I really do not see any potential problem which could be
> caused by this fact.
The source code says:
c-common.c-3292- /* Common Ada/Pascal programmer's mistake. */
c-common.c-3293- warning_at (location,
c-common.c-3294- OPT_Waddress,
c-common.c:3295: "the address of %qD will always
evaluate as %<true%>",
The work-around you found is probably the intended work-around. It would be
good to document this. Care to send a patch?
https://gcc.gnu.org/contribute.html#docchanges
> Moreover the warning itself is quite inconsistent. E.g. the following warns
> about the explicit &m but not for n. So I believe this is more of a
> suboptimal warning implementation than real intention.
This is because the warning is given in the front-end, which does not know the
value of n. Not that it matters much, this is really trying to catch a typo,
not the actual value of a pointer.