On Fri, Aug 5, 2016 at 3:56 PM Chris Peterson via cfe-users < cfe-users@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@blaikie-linux:/tmp/dbginfo$ cat suppress.cpp void f1(); bool f2(int); void f3(int temp) { if (false && !f2(temp)) f1(); } blaikie@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@blaikie-linux:/tmp/dbginfo$ cat suppress.cpp void f1(); bool f2(int); void f3(int temp) { if ((false) && !f2(temp)) f1(); } blaikie@blaikie-linux:/tmp/dbginfo$ clang++-tot suppress.cpp -Wunreachable-code -fsyntax-only blaikie@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@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users >
_______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users