diff options
author | Chris Lattner <sabre@nondot.org> | 2009-11-26 17:00:01 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-11-26 17:00:01 +0000 |
commit | fa3966881f7f0317803b09161602c9c7eeb2d3a3 (patch) | |
tree | 8c8529546823fbbf152c116bd9e5d7389cb91f85 /lib/Analysis/BasicAliasAnalysis.cpp | |
parent | 5369250b73e172efe886b20bfcdab74e5b251a71 (diff) |
teach GetLinearExpression to be a bit more aggressive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89955 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r-- | lib/Analysis/BasicAliasAnalysis.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/Analysis/BasicAliasAnalysis.cpp b/lib/Analysis/BasicAliasAnalysis.cpp index c038b20705..e10e1f2d4c 100644 --- a/lib/Analysis/BasicAliasAnalysis.cpp +++ b/lib/Analysis/BasicAliasAnalysis.cpp @@ -400,7 +400,16 @@ static Value *GetLinearExpression(Value *V, APInt &Scale, APInt &Offset, V = GetLinearExpression(BOp->getOperand(0), Scale, Offset, TD); Offset += RHSC->getValue(); return V; - // TODO: SHL, MUL. + case Instruction::Mul: + V = GetLinearExpression(BOp->getOperand(0), Scale, Offset, TD); + Offset *= RHSC->getValue(); + Scale *= RHSC->getValue(); + return V; + case Instruction::Shl: + V = GetLinearExpression(BOp->getOperand(0), Scale, Offset, TD); + Offset <<= RHSC->getValue().getLimitedValue(); + Scale <<= RHSC->getValue().getLimitedValue(); + return V; } } } |