diff options
Diffstat (limited to 'polly/lib/CodeGen')
-rw-r--r-- | polly/lib/CodeGen/BlockGenerators.cpp | 30 | ||||
-rw-r--r-- | polly/lib/CodeGen/IslCodeGeneration.cpp | 8 |
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; } |