diff --git a/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp index f9046a1a0553..691a67a42751 100644 --- a/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp +++ b/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp @@ -418,6 +418,7 @@ unsigned LoopUnswitch::getLoopUnswitchCost(Value *LIC) { /// unswitch the loop, reprocess the pieces, then return true. bool LoopUnswitch::UnswitchIfProfitable(Value *LoopCond, Constant *Val){ + initLoopData(); Function *F = loopHeader->getParent(); // Do not unswitch if the function is optimized for size. @@ -441,8 +442,6 @@ bool LoopUnswitch::UnswitchIfProfitable(Value *LoopCond, Constant *Val){ return false; } - initLoopData(); - Constant *CondVal; BasicBlock *ExitBlock; if (IsTrivialUnswitchCondition(LoopCond, &CondVal, &ExitBlock)) {