[clang] 1aa48af - [clang][bytecode][NFC] Discard all CastExprs uniformly (#126511)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 10 06:11:08 PST 2025
Author: Timm Baeder
Date: 2025-02-10T15:11:01+01:00
New Revision: 1aa48af1f86009365524d43966bb40ea246fea47
URL: https://github.com/llvm/llvm-project/commit/1aa48af1f86009365524d43966bb40ea246fea47
DIFF: https://github.com/llvm/llvm-project/commit/1aa48af1f86009365524d43966bb40ea246fea47.diff
LOG: [clang][bytecode][NFC] Discard all CastExprs uniformly (#126511)
Added:
Modified:
clang/lib/AST/ByteCode/Compiler.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp
index 86a3773d74d05c5..cf39209819ade94 100644
--- a/clang/lib/AST/ByteCode/Compiler.cpp
+++ b/clang/lib/AST/ByteCode/Compiler.cpp
@@ -194,12 +194,12 @@ template <class Emitter> class StmtExprScope final {
template <class Emitter>
bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
const Expr *SubExpr = CE->getSubExpr();
- switch (CE->getCastKind()) {
- case CK_LValueToRValue: {
- if (DiscardResult)
- return this->discard(SubExpr);
+ if (DiscardResult)
+ return this->delegate(SubExpr);
+ switch (CE->getCastKind()) {
+ case CK_LValueToRValue: {
std::optional<PrimType> SubExprT = classify(SubExpr->getType());
// Prepare storage for the result.
if (!Initializing && !SubExprT) {
@@ -253,9 +253,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
case CK_UncheckedDerivedToBase:
case CK_DerivedToBase: {
- if (DiscardResult)
- return this->discard(SubExpr);
-
if (!this->delegate(SubExpr))
return false;
@@ -285,9 +282,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
}
case CK_BaseToDerived: {
- if (DiscardResult)
- return this->discard(SubExpr);
-
if (!this->delegate(SubExpr))
return false;
@@ -302,8 +296,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
if (!SubExpr->getType()->isFloatingType() ||
!CE->getType()->isFloatingType())
return false;
- if (DiscardResult)
- return this->discard(SubExpr);
if (!this->visit(SubExpr))
return false;
const auto *TargetSemantics = &Ctx.getFloatSemantics(CE->getType());
@@ -311,8 +303,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
}
case CK_IntegralToFloating: {
- if (DiscardResult)
- return this->discard(SubExpr);
std::optional<PrimType> FromT = classify(SubExpr->getType());
if (!FromT)
return false;
@@ -327,8 +317,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
case CK_FloatingToBoolean:
case CK_FloatingToIntegral: {
- if (DiscardResult)
- return this->discard(SubExpr);
std::optional<PrimType> ToT = classify(CE->getType());
@@ -352,9 +340,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
case CK_NullToMemberPointer: {
if (!this->discard(SubExpr))
return false;
- if (DiscardResult)
- return true;
-
const Descriptor *Desc = nullptr;
const QualType PointeeType = CE->getType()->getPointeeType();
if (!PointeeType.isNull()) {
@@ -371,9 +356,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
}
case CK_PointerToIntegral: {
- if (DiscardResult)
- return this->discard(SubExpr);
-
if (!this->visit(SubExpr))
return false;
@@ -399,8 +381,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
return false;
if (!this->emitArrayDecay(CE))
return false;
- if (DiscardResult)
- return this->emitPopPtr(CE);
return true;
}
@@ -412,9 +392,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
// FIXME: I think the discard is wrong since the int->ptr cast might cause a
// diagnostic.
PrimType T = classifyPrim(IntType);
- if (DiscardResult)
- return this->emitPop(T, CE);
-
QualType PtrType = CE->getType();
const Descriptor *Desc;
if (std::optional<PrimType> T = classify(PtrType->getPointeeType()))
@@ -454,10 +431,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
return false;
return this->emitInvalidCast(CastKind::Reinterpret, /*Fatal=*/true, CE);
}
-
- if (DiscardResult)
- return this->discard(SubExpr);
-
QualType SubExprTy = SubExpr->getType();
std::optional<PrimType> FromT = classify(SubExprTy);
// Casts from integer/vector to vector.
@@ -493,8 +466,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
case CK_FixedPointToBoolean:
case CK_BooleanToSignedIntegral:
case CK_IntegralCast: {
- if (DiscardResult)
- return this->discard(SubExpr);
std::optional<PrimType> FromT = classify(SubExpr->getType());
std::optional<PrimType> ToT = classify(CE->getType());
@@ -546,8 +517,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
case CK_IntegralComplexToBoolean:
case CK_FloatingComplexToBoolean: {
- if (DiscardResult)
- return this->discard(SubExpr);
if (!this->visit(SubExpr))
return false;
return this->emitComplexBoolCast(SubExpr);
@@ -585,9 +554,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
case CK_FloatingComplexToIntegralComplex: {
assert(CE->getType()->isAnyComplexType());
assert(SubExpr->getType()->isAnyComplexType());
- if (DiscardResult)
- return this->discard(SubExpr);
-
if (!Initializing) {
std::optional<unsigned> LocalIndex = allocateLocal(CE);
if (!LocalIndex)
@@ -633,9 +599,6 @@ bool Compiler<Emitter>::VisitCastExpr(const CastExpr *CE) {
assert(classify(SubExpr->getType()));
assert(CE->getType()->isVectorType());
- if (DiscardResult)
- return this->discard(SubExpr);
-
if (!Initializing) {
std::optional<unsigned> LocalIndex = allocateLocal(CE);
if (!LocalIndex)
More information about the cfe-commits
mailing list