aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/AST/ExprConstant.cpp
diff options
context:
space:
mode:
authorKirill Bobyrev <kbobyrev@google.com>2020-06-15 12:14:15 +0200
committerKirill Bobyrev <kbobyrev@google.com>2020-06-15 12:14:15 +0200
commit550c4562d18a6ab6ce60a062dceb163313da0ddd (patch)
tree3d85cdfe53992da3c838dcd89739b16465d8f278 /clang/lib/AST/ExprConstant.cpp
parentec4e68e667bf0369c36f0e4291618ef2a614bbf0 (diff)
downloadllvm-550c4562d18a6ab6ce60a062dceb163313da0ddd.zip
llvm-550c4562d18a6ab6ce60a062dceb163313da0ddd.tar.gz
llvm-550c4562d18a6ab6ce60a062dceb163313da0ddd.tar.bz2
Revert "Prevent IR-gen from emitting consteval declarations"
This reverts commit 3bab88b7baa20b276faaee0aa7ca87f636c91877. This patch causes test failures: http://lab.llvm.org:8011/builders/clang-cmake-armv7-quick/builds/17260
Diffstat (limited to 'clang/lib/AST/ExprConstant.cpp')
-rw-r--r--clang/lib/AST/ExprConstant.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp
index 870bf769..c8f1a92 100644
--- a/clang/lib/AST/ExprConstant.cpp
+++ b/clang/lib/AST/ExprConstant.cpp
@@ -9986,6 +9986,8 @@ public:
// Visitor Methods
//===--------------------------------------------------------------------===//
+ bool VisitConstantExpr(const ConstantExpr *E);
+
bool VisitIntegerLiteral(const IntegerLiteral *E) {
return Success(E->getValue(), E);
}
@@ -10767,6 +10769,13 @@ static bool tryEvaluateBuiltinObjectSize(const Expr *E, unsigned Type,
return true;
}
+bool IntExprEvaluator::VisitConstantExpr(const ConstantExpr *E) {
+ llvm::SaveAndRestore<bool> InConstantContext(Info.InConstantContext, true);
+ if (E->getResultAPValueKind() != APValue::None)
+ return Success(E->getAPValueResult(), E);
+ return ExprEvaluatorBaseTy::VisitConstantExpr(E);
+}
+
bool IntExprEvaluator::VisitCallExpr(const CallExpr *E) {
if (unsigned BuiltinOp = E->getBuiltinCallee())
return VisitBuiltinCallExpr(E, BuiltinOp);