diff options
author | Kirill Bobyrev <kbobyrev@google.com> | 2020-06-15 12:14:15 +0200 |
---|---|---|
committer | Kirill Bobyrev <kbobyrev@google.com> | 2020-06-15 12:14:15 +0200 |
commit | 550c4562d18a6ab6ce60a062dceb163313da0ddd (patch) | |
tree | 3d85cdfe53992da3c838dcd89739b16465d8f278 /clang/lib/AST/ExprConstant.cpp | |
parent | ec4e68e667bf0369c36f0e4291618ef2a614bbf0 (diff) | |
download | llvm-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.cpp | 9 |
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); |