[cfe-commits] [PATCH] Fixes for unintended fall-through bugs (-Wimplicit-fallthrough)

Richard Smith richard at metafoo.co.uk
Thu May 31 16:47:20 PDT 2012


On Mon, May 28, 2012, at 8:08PM, Alexander Kornienko <alexfh at google.com> wrote:
> I've put aside header changes for now. There are patches with bug fixes (at
> least, those seem to be bugs to me) and a patch with LLVM_FALLTHROUGH macro.
> Please, take a look at these. Thanks!

Looking at fallthrough-bugs-clang.diff:

--- tools/clang/lib/Sema/SemaDeclAttr.cpp	(revision 157508)
+++ tools/clang/lib/Sema/SemaDeclAttr.cpp	(working copy)
@@ -3342,6 +3342,7 @@
     }

     D->addAttr(::new (S.Context) PcsAttr(Attr.getRange(), S.Context, PCS));
+    return;
   }
   default:
     llvm_unreachable("unexpected attribute kind");

Thanks for spotting this. The problem here goes deeper than a simple
missing 'return': this code is not reached at all for the AT_pcs
attribute. The following crashes clang (with or without this change):

int f() __attribute__((pcs("something")));



More information about the cfe-commits mailing list