mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 03:29:40 +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();
|
||||
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.
|
||||
const SCEV *Q, *R;
|
||||
const SCEV *Diff = SE.getMinusSCEV(Numerator, Remainder);
|
||||
|
Loading…
Reference in New Issue
Block a user