[cfe-users] -Wunreachable-code warnings can no longer be suppressed?

David Blaikie via cfe-users cfe-users at lists.llvm.org
Sat Aug 6 09:50:57 PDT 2016


On Fri, Aug 5, 2016 at 3:56 PM Chris Peterson via cfe-users <
cfe-users at lists.llvm.org> wrote:

> I suppressed a -Wunreachable-code warning in Firefox earlier this year
> [1] by adding extra parentheses, as suggested by Xcode's clang on OS X:
>
> objdir-osx/dom/bindings/TestJSImplGenBinding.cpp:47639:20: note: silence
> by adding parentheses to mark code as explicitly dead
>         if (false && !CallerSubsumes(temp)) {
>                      ^
>                      /* DISABLES CODE */ ()
>
> This is generated C++ code in Firefox, so changing the code generator to
> emit the extra parentheses was easier than complicating the code
> generator's logic for this particular case.
>
> Unfortunately, this Firefox warning is back [2] because clang 3.9 on
> Linux no longer recognizes the parentheses suppression. Is this an
> intentional change to -Wunreachable-code or a regression? I don't see
> the warning string "silence by adding parentheses to mark code as
> explicitly dead" in the clang code on GitHub [3], but I see a few clang
> tests that appear to expect that warning string.
>

The string is here:
https://github.com/llvm-mirror/clang/blob/master/include/clang/Basic/DiagnosticSemaKinds.td#L499

Should still work. Nearest I could test seems to:

blaikie at blaikie-linux:/tmp/dbginfo$ cat suppress.cpp
void f1();
bool f2(int);
void f3(int temp) {
  if (false && !f2(temp))
    f1();
}
blaikie at blaikie-linux:/tmp/dbginfo$ clang++-tot suppress.cpp
-Wunreachable-code -fsyntax-only
suppress.cpp:5:5: warning: code will never be executed [-Wunreachable-code]
    f1();
    ^~
suppress.cpp:4:16: note: silence by adding parentheses to mark code as
explicitly dead
  if (false && !f2(temp))
               ^
               /* DISABLES CODE */ ( )
suppress.cpp:4:17: warning: code will never be executed [-Wunreachable-code]
  if (false && !f2(temp))
                ^~
suppress.cpp:4:7: note: silence by adding parentheses to mark code as
explicitly dead
  if (false && !f2(temp))
      ^
      /* DISABLES CODE */ ( )
2 warnings generated.

Then successfully suppressed:

blaikie at blaikie-linux:/tmp/dbginfo$ cat suppress.cpp
void f1();
bool f2(int);
void f3(int temp) {
  if ((false) && !f2(temp))
    f1();
}
blaikie at blaikie-linux:/tmp/dbginfo$ clang++-tot suppress.cpp
-Wunreachable-code -fsyntax-only
blaikie at blaikie-linux:/tmp/dbginfo$

That's with Clang from trunk/current SVN/git/etc. Could you provide a small
example that fails (warns/doesn't suppress) with 3.9/ToT but succeeds
(successfully suppresses the warning) with earlier?



>
> thanks,
> chris
>
> [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1223265
> [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1291397
> [3] https://github.com/llvm-mirror/clang
> _______________________________________________
> cfe-users mailing list
> cfe-users at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20160806/26bc4a13/attachment.html>


More information about the cfe-users mailing list