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 | 631c5b2cb98f8c2baa5012a02a2368edcf3c3f16 (patch) | |
tree | 8d46d9ea0bfa3884d48ffa61839a88838fb27501 /llvm/lib/Analysis/BasicAliasAnalysis.cpp | |
parent | 5c1cfc252cb9e07c82e9226cd5821e26312091d8 (diff) | |
download | bcm5719-llvm-631c5b2cb98f8c2baa5012a02a2368edcf3c3f16.tar.gz bcm5719-llvm-631c5b2cb98f8c2baa5012a02a2368edcf3c3f16.zip |
teach GetLinearExpression to be a bit more aggressive.
llvm-svn: 89955
Diffstat (limited to 'llvm/lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/BasicAliasAnalysis.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp index c038b207058..e10e1f2d4ce 100644 --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/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; } } } |