[clang] 7c0a2d9 - [clang][Interp][NFC] Use StorePop for assignments with DiscardResult
Timm Bäder via cfe-commits
cfe-commits at lists.llvm.org
Sun Nov 6 22:58:28 PST 2022
Author: Timm Bäder
Date: 2022-11-07T07:56:25+01:00
New Revision: 7c0a2d9cda996a04c9eb55244a0ebf57545de849
URL: https://github.com/llvm/llvm-project/commit/7c0a2d9cda996a04c9eb55244a0ebf57545de849
DIFF: https://github.com/llvm/llvm-project/commit/7c0a2d9cda996a04c9eb55244a0ebf57545de849.diff
LOG: [clang][Interp][NFC] Use StorePop for assignments with DiscardResult
If we don't need the result anyway, use StorePop, instead of a Store+Pop
combination. That way we save one instruction and not using the result
is the common case anyway.
Added:
Modified:
clang/lib/AST/Interp/ByteCodeExprGen.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/Interp/ByteCodeExprGen.cpp b/clang/lib/AST/Interp/ByteCodeExprGen.cpp
index a78758cf2e45..24b5160eafbc 100644
--- a/clang/lib/AST/Interp/ByteCodeExprGen.cpp
+++ b/clang/lib/AST/Interp/ByteCodeExprGen.cpp
@@ -234,9 +234,9 @@ bool ByteCodeExprGen<Emitter>::VisitBinaryOperator(const BinaryOperator *BO) {
case BO_Div:
return Discard(this->emitDiv(*T, BO));
case BO_Assign:
- if (!this->emitStore(*T, BO))
- return false;
- return DiscardResult ? this->emitPopPtr(BO) : true;
+ if (DiscardResult)
+ return this->emitStorePop(*T, BO);
+ return this->emitStore(*T, BO);
case BO_And:
return Discard(this->emitBitAnd(*T, BO));
case BO_Or:
More information about the cfe-commits
mailing list