[Bug c/80787] gcc -Wmaybe-uninitialized false negative when compiling Emacs
egallager at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Feb 20 12:12:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80787
Eric Gallager <egallager at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-02-20
CC| |egallager at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #2 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Paul Eggert from comment #0)
> I found this problem when compiling GNU Emacs with GCC 7.1.0 and with Clang
> 3.9.1. GCC missed an uninitialized-variable bug that Clang correctly warned
> about. To reproduce the problem with GCC 7.1.0 x86-64, compile the following
> stripped-down test case:
>
> _Bool
> xg_update_scrollbar_pos (int a, int b)
> {
> _Bool hidden;
> if (a < b)
> hidden = 1;
> return !hidden;
> }
>
> using the command:
>
> gcc -O2 -Wall -S u.i
>
> GCC does not warn, even though 'hidden' is a possibly-uninitialized
> variable. With the same options, Clang warns about the bug.
Confirmed, the clang output is:
$ /opt/local/bin/clang -c -O2 -Wall -S 80787.i
80787.i:5:7: warning: variable 'hidden' is used uninitialized whenever 'if'
condition is false [-Wsometimes-uninitialized]
if (a < b)
^~~~~
80787.i:7:11: note: uninitialized use occurs here
return !hidden;
^~~~~~
80787.i:5:3: note: remove the 'if' if its condition is always true
if (a < b)
^~~~~~~~~~
80787.i:4:15: note: initialize the variable 'hidden' to silence this warning
_Bool hidden;
^
= 0
1 warning generated.
$
More information about the Gcc-bugs
mailing list