treat bool literals as constatnt expressions.

llvm-svn: 55255
This commit is contained in:
Anders Carlsson 2008-08-23 21:12:35 +00:00
parent a3345a5d73
commit 4f177f803a
2 changed files with 14 additions and 0 deletions

View File

@ -720,6 +720,13 @@ bool Expr::isIntegerConstantExpr(llvm::APSInt &Result, ASTContext &Ctx,
Result.setIsUnsigned(!getType()->isSignedIntegerType());
break;
}
case CXXBoolLiteralExprClass: {
const CXXBoolLiteralExpr *BL = cast<CXXBoolLiteralExpr>(this);
Result.zextOrTrunc(static_cast<uint32_t>(Ctx.getTypeSize(getType())));
Result = BL->getValue();
Result.setIsUnsigned(!getType()->isSignedIntegerType());
break;
}
case CXXZeroInitValueExprClass:
Result.clear();
break;

View File

@ -0,0 +1,7 @@
// RUN: clang -fsyntax-only -verify %s
// Bool literals can be enum values.
enum {
ReadWrite = false,
ReadOnly = true
};