I like the idea of adopting a fallthrough notation in our sources. I would 
suggest naming it LLVM_FALLTHROUGH, though, in line with most of the rest of 
llvm/Support/Compiler.h.

The 6 bugs you found seem scary, though I guess they can't be awful or we'd 
have found them sooner. I'm not happy with the header changes, though -- the 
asserts are both a lot hairier this way.

Jordy


On May 26, 2012, at 15:30, Alexander Kornienko wrote:

> Hello llvm-commits, clang-commits,
> 
> I compiled llvm and clang with the recently added -Wimplicit-fallthrough 
> diagnostic and analyzed the results. For those who are curious: there are 
> about 400 'unannotated fall-through' warnings in total, about 290 
> fall-through locations are annotated in comments, about 30 locations 
> fall-through to an empty block (case 1: ....<no break>  case 2: break;), 7 
> locations have assert(false) not followed by break;
> 
> From the remaining ~70 locations 6 look like real bugs. I've prepared two 
> patches: for llvm and clang, which add break; for all these locations. I've 
> also removed two unnecessary fall-throughs in headers to reduce total amount 
> of 'unannotated fall-through' warning messages. 
> 
> I can't guarantee that all these 6 locations are real bugs, but they look 
> very much like unintended fall-throughs.
> 
> Could you, please, review this patch?
> Thanks!
> 
> P.S. It would also be interesting to know what people think about converting 
> fall-through annotations in comments to a checked annotation so we could use 
> this diagnostic on regular basis?
> We could wrap [[clang::fallthrough]] to a macro, so the code would continue 
> to work in c++98 mode, but in c++11 mode it would also allow to run this 
> diagnostic (btw, is llvm compilable in c++11 mode?). Sample implementation of 
> macro:
> #ifdef __clang__
> #if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
> #define FALLTHROUGH [[clang::fallthrough]]
> #endif
> #endif
> 
> #ifndef FALLTHROUGH
> #define FALLTHROUGH do { } while (0)
> #endif
> 
> 
> -- 
> Best regards,
> Alexander Kornienko
> <fallthrough-bugs-clang.diff><fallthrough-bugs-llvm.diff>_______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to