summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2009-11-05 21:10:57 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2009-11-05 21:10:57 +0000
commit87869bc435c1fb81ae0a3fd5c76becaaa0f90284 (patch)
tree594a923abdd4701a14a7929ac1a64f2960d29590 /clang
parent0b7c85fc5a2889d5cf6979aff4623c7d390cda13 (diff)
downloadbcm5719-llvm-87869bc435c1fb81ae0a3fd5c76becaaa0f90284.tar.gz
bcm5719-llvm-87869bc435c1fb81ae0a3fd5c76becaaa0f90284.zip
Make ASTContext::getIntWidth return 1 for all boolean type variations, not just for the unqualified, unaliased bool.
llvm-svn: 86174
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/AST/ASTContext.cpp2
-rw-r--r--clang/test/Sema/const-eval.c5
2 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index 8562249479c..a6b0dfbaf49 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -4394,7 +4394,7 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS) {
//===----------------------------------------------------------------------===//
unsigned ASTContext::getIntWidth(QualType T) {
- if (T == BoolTy)
+ if (T->isBooleanType())
return 1;
if (FixedWidthIntType *FWIT = dyn_cast<FixedWidthIntType>(T)) {
return FWIT->getWidth();
diff --git a/clang/test/Sema/const-eval.c b/clang/test/Sema/const-eval.c
index 72db14c8205..87d1f155eba 100644
--- a/clang/test/Sema/const-eval.c
+++ b/clang/test/Sema/const-eval.c
@@ -68,3 +68,8 @@ EVAL_EXPR(32, (int*)0 != (int*)0 ? -1 : 1)
EVAL_EXPR(33, (void*)0 - (void*)0 == 0 ? 1 : -1)
void foo(void) {}
EVAL_EXPR(34, (foo == (void *)0) ? -1 : 1)
+
+// No PR. Mismatched bitwidths lead to a crash on second evaluation.
+const _Bool constbool = 0;
+EVAL_EXPR(35, constbool)
+EVAL_EXPR(36, constbool)
OpenPOWER on IntegriCloud