[PATCH] D41467: PR35710: Nary reassociation falls into infinite loop
Evgeny Stupachenko via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 21 13:50:54 PST 2017
evstupac added a comment.
To be more precise NaryReassociation works that way:
r0 = v * 16
r1= r0 * 0
r2 = r1 * 1
When reassociating r2 = r1 * 1:
r2 = ((v * 16) * 0) * 1
RHS = 1
Aexpr = 0
Bexpr = 16 * v
We look for findClosestMatchingDominator(0 * 1). It is r1.
That way new Instruction becomes:
r2 = r1 * r0 - which is ok.
Next step for this instruction r2 = r1 * r0:
r2 = ((v * 16) * 0) * (v * 16)
RHS = 16 *v
Aexpr = 0
Bexpr = 16 * v
We look for findClosestMatchingDominator((16 * v) * (16 * v)). It is r1 (because 16 * v * 16 * v = 0 for "i8" type.
That way new Instruction becomes:
r2 = r1 * 0
And it becomes infinite loop...
Repository:
rL LLVM
https://reviews.llvm.org/D41467
More information about the llvm-commits
mailing list