[cfe-dev] PR9824: -Wunused-but-set

David Blaikie dblaikie at gmail.com
Wed Oct 24 10:02:51 PDT 2012


I'm just looking at PR9824 now & starting with some sanity checking of
existing related warnings.

One result of fixing PR11550 was that given this (taken from
test/SemaCXX/warn-unused-variables.cpp):

  struct S1 { S1(); };
  S1 makeS1();

we warn on this:

  S1 x = makeS1();

under the reasoning that the user could just drop the named variable
and call the function alone: makeS1();

but we don't warn on this:

  S1 x;

even though the equivalent suggestion would be to unname this variable
& simply invoke the default ctor: S1();

Is that reasonable/acceptable/correct? (Should we perhaps have a fixit
in the first case explaining that the user should just call the
function instead? Perhaps that's too hard to write in the presence of
multiple declarators)

>From the examples in the bug, GCC doesn't warn about unused-but-set
for code like this:

   int i = 0;  // no warning
   i = 1;
   &x; // warning about unused-value here

But it seems it'd be useful to indicate that the initializationg of
zero is completely unused when it's overwritten with 1 in all cases
anyway. Does that seem reasonable?

Ted: you mentioned there's already a dead-store checker in the SA? Was
your intent to basically port that up to the compiler proper? Are
there major performance concerns about it/refactoring that would be
required? Or will it just have to be basically reimplemented from
scratch for it to be compiler-appropriate?



More information about the cfe-dev mailing list