From cc7937622293aa4120207fd3a552fcd2af159b79 Mon Sep 17 00:00:00 2001 From: Daniil Fukalov <1671137+dfukalov@users.noreply.github.com> Date: Mon, 8 Aug 2022 03:10:18 +0300 Subject: [PATCH] Fix deprectaion warning on CreateGEP(Value *, ArrayRef, const Twine &) (#608) This variant of CreateGEP() is already removed in LLVM 14. --- lib/codegen/selection/generator.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/codegen/selection/generator.cc b/lib/codegen/selection/generator.cc index 31ecfacba..d6d059859 100644 --- a/lib/codegen/selection/generator.cc +++ b/lib/codegen/selection/generator.cc @@ -65,18 +65,21 @@ Value* geper::operator()(Value *ptr, Value* off, const std::string& name){ if(auto* gep = dyn_cast(ptr)) if(ConstantInt* cst1 = dyn_cast(gep->idx_begin())) if(ConstantInt* cst2 = dyn_cast(off)){ - return (*builder_)->CreateGEP(gep->getPointerOperand(), - (*builder_)->CreateAdd(cst1, cst2)); + return (*builder_)->CreateGEP(gep->getPointerOperand()->getType()->getScalarType()->getPointerElementType(), + gep->getPointerOperand(), (*builder_)->CreateAdd(cst1, cst2)); } // ptr + (off + cst) -> (ptr + off) + cst if(auto* bin = dyn_cast(off)) if(bin->getOpcode() == llvm::BinaryOperator::BinaryOps::Add) if(ConstantInt* cst = dyn_cast(bin->getOperand(1))){ - return (*builder_)->CreateGEP((*builder_)->CreateGEP(ptr, bin->getOperand(0)), - bin->getOperand(1)); + Value *gep = (*builder_)->CreateGEP(ptr->getType()->getScalarType()->getPointerElementType(), + ptr, bin->getOperand(0)); + return (*builder_)->CreateGEP(gep->getType()->getScalarType()->getPointerElementType(), + gep, bin->getOperand(1)); } // default - return (*builder_)->CreateGEP(ptr, off, name); + return (*builder_)->CreateGEP(ptr->getType()->getScalarType()->getPointerElementType(), + ptr, off, name); } //Value* geper::operator()(Type *ty, Value *ptr, std::vector vals, const std::string &name) {