[clang] Fixing the logic issue in TransformTypos::TransformDesignatedInitExpr… (PR #127211)

via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 14 21:39:26 PST 2025


https://github.com/GS-GOAT updated https://github.com/llvm/llvm-project/pull/127211

>From fe6e13312278f807685210dff746229949d84270 Mon Sep 17 00:00:00 2001
From: GS-GOAT <86884129+GS-GOAT at users.noreply.github.com>
Date: Sat, 15 Feb 2025 11:08:47 +0530
Subject: [PATCH] Fixing the logic issue in
 TransformTypos::TransformDesignatedInitExpr llvm#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 llvm#126113
---
 clang/lib/Sema/TreeTransform.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index fc1e3f7d58f4d..c2bbe51676e39 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -13670,9 +13670,9 @@ TreeTransform<Derived>::TransformDesignatedInitExpr(DesignatedInitExpr *E) {
         return ExprError();
 
       Desig.AddDesignator(
-          Designator::CreateArrayDesignator(Index.get(), D.getLBracketLoc()));
+        Designator::CreateArrayDesignator(Index.get(), D.getLBracketLoc()));
 
-      ExprChanged = ExprChanged || Init.get() != E->getArrayIndex(D);
+      ExprChanged = ExprChanged || Index.get() != E->getArrayIndex(D);
       ArrayExprs.push_back(Index.get());
       continue;
     }



More information about the cfe-commits mailing list