From b0810e71926a7384b66be1dfed390eec1c98d1d6 Mon Sep 17 00:00:00 2001 From: Zhang Yi <18994118902@163.com> Date: Thu, 29 Feb 2024 03:58:50 -0800 Subject: [PATCH] [Transform][ObjCARC] Change the 'for(;;)' to a do-while At the moment, there is a TODO item in ObjCARC just to change 'for (;;)' to a do-while. And it is the only place using 'for (;;)' in llvm. In contrary, there are many places using the do-while. It is reasonable to change the 'for(;;)' to a do-while. This commit change the 'for(;;)' to a do-while and eliminate some discord in the code. --- llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp b/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp index c397ab63f388c4..63b91524763456 100644 --- a/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp +++ b/llvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp @@ -659,8 +659,7 @@ bool ObjCARCContract::run(Function &F, AAResults *A, DominatorTree *D) { Value *Arg = cast(Inst)->getArgOperand(0); Value *OrigArg = Arg; - // TODO: Change this to a do-while. - for (;;) { + do { ReplaceArgUses(Arg); // If Arg is a no-op casted pointer, strip one level of casts and iterate. @@ -683,7 +682,7 @@ bool ObjCARCContract::run(Function &F, AAResults *A, DominatorTree *D) { } break; } - } + } while (true); // Replace bitcast users of Arg that are dominated by Inst. SmallVector BitCastUsers;