[cfe-dev] [PING][BUG] -Wunreachable-code not working

Artem Dergachev via cfe-dev cfe-dev at lists.llvm.org
Thu Apr 12 18:53:59 PDT 2018


I didn't look at these clang warnings specifically, so i might be 
completely wrong, but i suspect that a lot of warnings are suppressed in 
mere presence of macros. It is just too easy to produce weird code by 
combining completely valid macros. Probably not the best example but 
gives a rough idea:

   #ifdef WINDOWS
   #define SHOULD_USE_X 0
   #else
   #define SHOULD_USE_X shouldUseX();
   #endif

   if (SHOULD_USE_X) {
     // Should we emit a deadcode warning here under Windows?
   }

Such suppression might probably be made less brutal, but i'll be 
surprised if it were possible to get away with not having it at all. And 
it's pretty tricky to find deadcode before the preprocessor runs, when 
you're still capable of accidentally concatenating 'ret' and 'urn' into 
'return'. So it's not the most pleasant problem to solve, and it's 
usually not that terrible when we don't give a warning (it's much less 
terrible than emitting a warning that's not actionable), so people 
usually make various suppressions for this sort of stuff.

On 4/12/18 1:55 PM, Martin Galvan via cfe-dev wrote:
> HI all,
>
> I'm reporting this bug here since the LLVM Bugzilla requires
> registering an account (which can't be done by myself manually).
>
> Basically, this code triggers the warning:
>
> int main()
> {
>      return 0;
>
>      int a = 42;
> }
>
> while this doesn't:
>
> #define A 42
>
> int main()
> {
>      return 0;
>
>      int a = A;
> }
>
> This happens on clang++-6.0. I'm not using any options other than
> -Wunreachable-code.
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev



More information about the cfe-dev mailing list