mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-25 14:32:53 +00:00
implement missing SCEVDivision case
without this case we would end on an infinite recursion: the remainder is zero, so Numerator - Remainder is equal to Numerator and so we would recursively ask for the division of Numerator by Denominator. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209838 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e741924230
commit
20b6ed3c9c
@ -7216,6 +7216,15 @@ public:
|
|||||||
cast<SCEVConstant>(Zero)->getValue();
|
cast<SCEVConstant>(Zero)->getValue();
|
||||||
Remainder = SCEVParameterRewriter::rewrite(Numerator, SE, RewriteMap, true);
|
Remainder = SCEVParameterRewriter::rewrite(Numerator, SE, RewriteMap, true);
|
||||||
|
|
||||||
|
if (Remainder->isZero()) {
|
||||||
|
// The Quotient is obtained by replacing Denominator by 1 in Numerator.
|
||||||
|
RewriteMap[cast<SCEVUnknown>(Denominator)->getValue()] =
|
||||||
|
cast<SCEVConstant>(One)->getValue();
|
||||||
|
Quotient =
|
||||||
|
SCEVParameterRewriter::rewrite(Numerator, SE, RewriteMap, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Quotient is (Numerator - Remainder) divided by Denominator.
|
// Quotient is (Numerator - Remainder) divided by Denominator.
|
||||||
const SCEV *Q, *R;
|
const SCEV *Q, *R;
|
||||||
const SCEV *Diff = SE.getMinusSCEV(Numerator, Remainder);
|
const SCEV *Diff = SE.getMinusSCEV(Numerator, Remainder);
|
||||||
|
Loading…
Reference in New Issue
Block a user