aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/Expressions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Analysis/Expressions.cpp')
-rw-r--r--lib/Analysis/Expressions.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/Analysis/Expressions.cpp b/lib/Analysis/Expressions.cpp
index 8c9d75f2bd..cb83d41236 100644
--- a/lib/Analysis/Expressions.cpp
+++ b/lib/Analysis/Expressions.cpp
@@ -16,14 +16,17 @@ using namespace opt; // Get all the constant handling stuff
using namespace analysis;
ExprType::ExprType(Value *Val) {
- if (Val && Val->isConstant() && Val->getType()->isIntegral()) {
- Offset = (ConstPoolInt*)Val->castConstant();
- Var = 0;
- ExprTy = Constant;
- } else {
- Var = Val; Offset = 0;
- ExprTy = Var ? Linear : Constant;
- }
+ if (Val)
+ if (ConstPoolInt *CPI = dyn_cast<ConstPoolInt>(Val)) {
+ Offset = CPI;
+ Var = 0;
+ ExprTy = Constant;
+ Scale = 0;
+ return;
+ }
+
+ Var = Val; Offset = 0;
+ ExprTy = Var ? Linear : Constant;
Scale = 0;
}