[clang] Fixing the logic issue in TransformTypos::TransformDesignatedInitExpr… (PR #127211)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Feb 14 06:59:23 PST 2025
https://github.com/GS-GOAT updated https://github.com/llvm/llvm-project/pull/127211
>From 5f46f9c8e29dde7d6096f4e00094b4e615874ed4 Mon Sep 17 00:00:00 2001
From: GS-GOAT <86884129+GS-GOAT at users.noreply.github.com>
Date: Fri, 14 Feb 2025 14:58:50 +0530
Subject: [PATCH] Fixing the logic issue in
TransformTypos::TransformDesignatedInitExpr #126113
-Transforming Indices: For array designators, transform the index expression
and update ExprChanged if it's modified.
-Correct Initializer Check: Compare the transformed initializer against the
original to accurately track changes.
-Single Initializer Transformation: The initializer is processed once, not
per designator, as each DesignatedInitExpr has one initializer.
Fixes #126113
---
clang/lib/Sema/TreeTransform.h | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index fc1e3f7d58f4d..479ff1da7e76c 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -13665,15 +13665,15 @@ TreeTransform<Derived>::TransformDesignatedInitExpr(DesignatedInitExpr *E) {
}
if (D.isArrayDesignator()) {
- ExprResult Index = getDerived().TransformExpr(E->getArrayIndex(D));
- if (Index.isInvalid())
+ ExprResult NewIndex = getDerived().TransformExpr(E->getArrayIndex(D));
+ if (NewIndex.isInvalid())
return ExprError();
- Desig.AddDesignator(
- Designator::CreateArrayDesignator(Index.get(), D.getLBracketLoc()));
+ Desig.AddDesignator(Designator::CreateArrayDesignator(
+ NewIndex.get(), D.getLBracketLoc()));
- ExprChanged = ExprChanged || Init.get() != E->getArrayIndex(D);
- ArrayExprs.push_back(Index.get());
+ ExprChanged = ExprChanged || NewIndex.get() != E->getArrayIndex(D);
+ ArrayExprs.push_back(NewIndex.get());
continue;
}
More information about the cfe-commits
mailing list