[Bug c/25509] can't disable __attribute__((warn_unused_result))
ppluzhnikov at google dot com
gcc-bugzilla@gcc.gnu.org
Wed Aug 13 22:13:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509
Paul Pluzhnikov <ppluzhnikov at google dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ppluzhnikov at google dot com
--- Comment #28 from Paul Pluzhnikov <ppluzhnikov at google dot com> ---
Google ref: b/16983603.
I wouldn't call this bug fixed.
I have just found ~30 bugs in our code, where someone wrote:
vector<int> v;
...
v.empty(); // v.clear() was intended!
No problem, I'll just add warn_unused_result to vector::empty(), right?
Well, that did expose the 30 bugs above, but unfortunately I can't do that
permanently, because it also exposed this false positive:
assert(v.empty());
where assert in NDEBUG mode expanded into
static_cast<void>(v.empty());
and triggered the warning :-(
P.S. Some of the bugs I found were in parts of the code imported from
open-source projects, so it's not a problem that is specific to just Google. If
the assert problem could be addressed, adding warn_unused_result to trunk
libstdc++ would benefit everyone.
More information about the Gcc-bugs
mailing list