]> granicus.if.org Git - clang/commitdiff
Added test with sizeof conditions (relies on to-be-implemented functionality of CFG...
authorAlexander Kornienko <alexfh@google.com>
Wed, 20 Jun 2012 21:12:23 +0000 (21:12 +0000)
committerAlexander Kornienko <alexfh@google.com>
Wed, 20 Jun 2012 21:12:23 +0000 (21:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158854 91177308-0d34-0410-b5e6-96231b3b80d8

test/SemaCXX/switch-implicit-fallthrough.cpp

index 02532e801ac003b5ee1b6df13233db4e3882a222..cfc29c237c2d5cbc2062e93ca6334a489421b8ba 100644 (file)
@@ -156,6 +156,24 @@ int fallthrough_position(int n) {
     case 223:          // expected-warning{{unannotated fall-through between switch labels}} expected-note{{insert '[[clang::fallthrough]];' to silence this warning}} expected-note{{insert 'break;' to avoid fall-through}}
       [[clang::fallthrough]]; // expected-warning{{fallthrough annotation does not directly precede switch label}}
   }
+
+  // TODO: uncomment this test after CFG gets more options to deal with
+  // unreachable code:
+  // http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120507/057370.html
+#if 0
+  long p = static_cast<long>(n) * n;
+  switch (sizeof(p)) {
+    case 9:                    // this test will not work on compilers with 72-bit long
+      n += static_cast<int>(p >> 32);
+      [[clang::fallthrough]];  // no warning here
+    case 5:                    // it is not intended to work on compilers with 40-bit long as well
+      n += static_cast<int>(p);
+      break;
+    default:
+     break;
+  }
+#endif
+
   return n;
 }