Skip to content
Snippets Groups Projects
Commit 4f177f80 authored by Anders Carlsson's avatar Anders Carlsson
Browse files

treat bool literals as constatnt expressions.

llvm-svn: 55255
parent a3345a5d
No related branches found
No related tags found
No related merge requests found
...@@ -720,6 +720,13 @@ bool Expr::isIntegerConstantExpr(llvm::APSInt &Result, ASTContext &Ctx, ...@@ -720,6 +720,13 @@ bool Expr::isIntegerConstantExpr(llvm::APSInt &Result, ASTContext &Ctx,
Result.setIsUnsigned(!getType()->isSignedIntegerType()); Result.setIsUnsigned(!getType()->isSignedIntegerType());
break; 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: case CXXZeroInitValueExprClass:
Result.clear(); Result.clear();
break; break;
......
// RUN: clang -fsyntax-only -verify %s
// Bool literals can be enum values.
enum {
ReadWrite = false,
ReadOnly = true
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment