diff options
author | Chris Lattner <sabre@nondot.org> | 2011-02-24 07:31:28 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2011-02-24 07:31:28 +0000 |
commit | abcf38a064f2d322f410af70bddfa256c96c174c (patch) | |
tree | 70418089123dc5710af3cb90d3e8a155ef4c7429 /clang | |
parent | eddb33ebd0610300c62817168c8cedee9c2a4ee1 (diff) | |
download | bcm5719-llvm-abcf38a064f2d322f410af70bddfa256c96c174c.tar.gz bcm5719-llvm-abcf38a064f2d322f410af70bddfa256c96c174c.zip |
compute the integer width, not the memory width here. We want to know that
_Bool is 1 bit, not 8. This fixes an assertion on the testcase, which is
PR9304 and rdar://9045501.
llvm-svn: 126368
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Sema/SemaStmt.cpp | 3 | ||||
-rw-r--r-- | clang/test/SemaCXX/switch.cpp | 7 |
2 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index 64827ff1779..89957e60dec 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -502,8 +502,7 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, bool HasDependentValue = CondExpr->isTypeDependent() || CondExpr->isValueDependent(); unsigned CondWidth - = HasDependentValue? 0 - : static_cast<unsigned>(Context.getTypeSize(CondTypeBeforePromotion)); + = HasDependentValue ? 0 : Context.getIntWidth(CondTypeBeforePromotion); bool CondIsSigned = CondTypeBeforePromotion->isSignedIntegerType(); // Accumulate all of the case values in a vector so that we can sort them diff --git a/clang/test/SemaCXX/switch.cpp b/clang/test/SemaCXX/switch.cpp index fc13630bbf1..3882a1f952c 100644 --- a/clang/test/SemaCXX/switch.cpp +++ b/clang/test/SemaCXX/switch.cpp @@ -57,3 +57,10 @@ namespace test3 { template void foo<B>(); template void foo<C>(); //expected-note {{in instantiation}} } + +// PR9304 and rdar://9045501 +void click_check_header_sizes() { + switch (0 == 8) { // expected-warning {{switch condition has boolean value}} + case 0: ; + } +} |