Added test with sizeof conditions (relies on to-be-implemented functionality of CFG, discussion: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120507/057370.html)

llvm-svn: 158854
This commit is contained in:
Alexander Kornienko 2012-06-20 21:12:23 +00:00
parent dc753b625f
commit 9a34889efe
1 changed files with 18 additions and 0 deletions

View 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}} 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}} [[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; return n;
} }