summaryrefslogtreecommitdiffstats
path: root/polly/lib/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/CodeGen')
-rw-r--r--polly/lib/CodeGen/BlockGenerators.cpp30
-rw-r--r--polly/lib/CodeGen/IslCodeGeneration.cpp8
2 files changed, 14 insertions, 24 deletions
diff --git a/polly/lib/CodeGen/BlockGenerators.cpp b/polly/lib/CodeGen/BlockGenerators.cpp
index 7ca5d2dd445..b0bc9dcf7f2 100644
--- a/polly/lib/CodeGen/BlockGenerators.cpp
+++ b/polly/lib/CodeGen/BlockGenerators.cpp
@@ -66,7 +66,7 @@ class IslGenerator {
public:
IslGenerator(IRBuilder<> &Builder, std::vector<Value *> &IVS)
: Builder(Builder), IVS(IVS) {}
- Value *generateIslInt(__isl_take isl_int Int);
+ Value *generateIslVal(__isl_take isl_val *Val);
Value *generateIslAff(__isl_take isl_aff *Aff);
Value *generateIslPwAff(__isl_take isl_pw_aff *PwAff);
@@ -83,23 +83,18 @@ private:
};
}
-Value *IslGenerator::generateIslInt(isl_int Int) {
- mpz_t IntMPZ;
- mpz_init(IntMPZ);
- isl_int_get_gmp(Int, IntMPZ);
- Value *IntValue = Builder.getInt(APInt_from_MPZ(IntMPZ));
- mpz_clear(IntMPZ);
+Value *IslGenerator::generateIslVal(__isl_take isl_val *Val) {
+ Value *IntValue = Builder.getInt(APIntFromVal(Val));
return IntValue;
}
Value *IslGenerator::generateIslAff(__isl_take isl_aff *Aff) {
Value *Result;
Value *ConstValue;
- isl_int ConstIsl;
+ isl_val *Val;
- isl_int_init(ConstIsl);
- isl_aff_get_constant(Aff, &ConstIsl);
- ConstValue = generateIslInt(ConstIsl);
+ Val = isl_aff_get_constant_val(Aff);
+ ConstValue = generateIslVal(Val);
Type *Ty = Builder.getInt64Ty();
// FIXME: We should give the constant and coefficients the right type. Here
@@ -112,25 +107,22 @@ Value *IslGenerator::generateIslAff(__isl_take isl_aff *Aff) {
"The Dimension of Induction Variables must match the dimension of the "
"affine space.");
- isl_int CoefficientIsl;
- isl_int_init(CoefficientIsl);
-
for (unsigned int i = 0; i < NbInputDims; ++i) {
Value *CoefficientValue;
- isl_aff_get_coefficient(Aff, isl_dim_in, i, &CoefficientIsl);
+ Val = isl_aff_get_coefficient_val(Aff, isl_dim_in, i);
- if (isl_int_is_zero(CoefficientIsl))
+ if (isl_val_is_zero(Val)) {
+ isl_val_free(Val);
continue;
+ }
- CoefficientValue = generateIslInt(CoefficientIsl);
+ CoefficientValue = generateIslVal(Val);
CoefficientValue = Builder.CreateIntCast(CoefficientValue, Ty, true);
Value *IV = Builder.CreateIntCast(IVS[i], Ty, true);
Value *PAdd = Builder.CreateMul(CoefficientValue, IV, "p_mul_coeff");
Result = Builder.CreateAdd(Result, PAdd, "p_sum_coeff");
}
- isl_int_clear(CoefficientIsl);
- isl_int_clear(ConstIsl);
isl_aff_free(Aff);
return Result;
diff --git a/polly/lib/CodeGen/IslCodeGeneration.cpp b/polly/lib/CodeGen/IslCodeGeneration.cpp
index d5c3a9f4359..327d2cf1476 100644
--- a/polly/lib/CodeGen/IslCodeGeneration.cpp
+++ b/polly/lib/CodeGen/IslCodeGeneration.cpp
@@ -505,20 +505,18 @@ IntegerType *IslExprBuilder::getType(__isl_keep isl_ast_expr *Expr) {
Value *IslExprBuilder::createInt(__isl_take isl_ast_expr *Expr) {
assert(isl_ast_expr_get_type(Expr) == isl_ast_expr_int &&
"Expression not of type isl_ast_expr_int");
- isl_int Int;
+ isl_val *Val;
Value *V;
APInt APValue;
IntegerType *T;
- isl_int_init(Int);
- isl_ast_expr_get_int(Expr, &Int);
- APValue = APInt_from_MPZ(Int);
+ Val = isl_ast_expr_get_val(Expr);
+ APValue = APIntFromVal(Val);
T = getType(Expr);
APValue = APValue.sextOrSelf(T->getBitWidth());
V = ConstantInt::get(T, APValue);
isl_ast_expr_free(Expr);
- isl_int_clear(Int);
return V;
}
OpenPOWER on IntegriCloud