diff options
Diffstat (limited to 'lib/Analysis/Expressions.cpp')
-rw-r--r-- | lib/Analysis/Expressions.cpp | 19 |
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; } |