Bugzilla – Bug 306
[loopsimplify] Loop simplify incorrectly updates dominator information
Last modified: 2004-04-01 13:25:00
You need to log in before you can comment on or make changes to this bug.
If you run the testcase below through: 'opt -loopsimplify -licm', an assertion fails. On the other hand, if you run it through 'opt -loopsimplify | opt -licm' it works fine. This is due to the loop simplify pass not correctly updating some analysis (probably dominator info) as it simplifies loops. ---- void %NormalizeCoeffsVecFFE() { entry: br label %loopentry.0 loopentry.0: ; preds = %entry, %no_exit.0 br bool false, label %loopentry.1, label %no_exit.0 no_exit.0: ; preds = %loopentry.0 br bool false, label %loopentry.0, label %loopentry.1 loopentry.1: ; preds = %loopentry.0, %no_exit.0, %no_exit.1 br bool false, label %no_exit.1, label %loopexit.1 no_exit.1: ; preds = %loopentry.1 %tmp.43 = seteq ushort 0, 0 ; <bool> [#uses=1] br bool %tmp.43, label %loopentry.1, label %loopexit.1 loopexit.1: ; preds = %loopentry.1, %no_exit.1 ret void } ---- Testcase distilled by bugpoint from 254.gap. -Chris
This is now fixed: http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20040329/013408.html Testcase here: LoopSimplify/2004-04-01-IncorrectDomUpdate.ll -Chris
This patch is also required: http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20040329/013413.html