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 | 1692755c9b104b0ac1209c89dfb549842adb15e8 (patch) | |
| tree | 8c8529546823fbbf152c116bd9e5d7389cb91f85 /lib/Analysis/BasicAliasAnalysis.cpp | |
| parent | 7d6d362e41018fa2a787a3fe04d1596bfd8610e7 (diff) | |
| download | external_llvm-1692755c9b104b0ac1209c89dfb549842adb15e8.zip external_llvm-1692755c9b104b0ac1209c89dfb549842adb15e8.tar.gz external_llvm-1692755c9b104b0ac1209c89dfb549842adb15e8.tar.bz2 | |
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 c038b20..e10e1f2 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; } } } |
