[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