From: Thomas Raoux Date: Mon, 9 Dec 2019 15:24:18 +0000 (-0800) Subject: [ModuloSchedule] Fix data types in ModuloScheduleExpander::isLoopCarried X-Git-Tag: llvmorg-11-init~2633 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=caabb713ea157f8c449c8d3eb00410bbef734a22;p=platform%2Fupstream%2Fllvm.git [ModuloSchedule] Fix data types in ModuloScheduleExpander::isLoopCarried The cycle values in modulo scheduling results can be negative. The result of ModuloSchedule::getCycle() must be received as an int type. Patch by Masaki Arai! Differential Revision: https://reviews.llvm.org/D71122 --- diff --git a/llvm/lib/CodeGen/ModuloSchedule.cpp b/llvm/lib/CodeGen/ModuloSchedule.cpp index 097b836..163e52d 100644 --- a/llvm/lib/CodeGen/ModuloSchedule.cpp +++ b/llvm/lib/CodeGen/ModuloSchedule.cpp @@ -1190,7 +1190,7 @@ void ModuloScheduleExpander::rewriteScheduledInstr( bool ModuloScheduleExpander::isLoopCarried(MachineInstr &Phi) { if (!Phi.isPHI()) return false; - unsigned DefCycle = Schedule.getCycle(&Phi); + int DefCycle = Schedule.getCycle(&Phi); int DefStage = Schedule.getStage(&Phi); unsigned InitVal = 0; @@ -1199,7 +1199,7 @@ bool ModuloScheduleExpander::isLoopCarried(MachineInstr &Phi) { MachineInstr *Use = MRI.getVRegDef(LoopVal); if (!Use || Use->isPHI()) return true; - unsigned LoopCycle = Schedule.getCycle(Use); + int LoopCycle = Schedule.getCycle(Use); int LoopStage = Schedule.getStage(Use); return (LoopCycle > DefCycle) || (LoopStage <= DefStage); }