[Beignet] [PATCH v2] Use CreateCall instead of CreateCall2.
Song, Ruiling
ruiling.song at intel.com
Thu Nov 19 18:41:31 PST 2015
The llvm function prototype is CreateCall((Value *Callee, ArrayRef<Value *> Args = None, const Twine &Name = "")
Cast from std::initializer_list to ArrayRef<> is not supported on older llvm version.
Please try:
/* Add the timestamp store function call. */
// __gen_ocl_store_timestamp(int nth, int type);
- builder->CreateCall2(cast<llvm::Function>(module->getOrInsertFunction(
+ Value *Args[2] = {ConstantInt::get(intTy, pointNum++), ConstantInt::get(intTy, profilingType)};
+ builder->CreateCall(cast<llvm::Function>(module->getOrInsertFunction(
"__gen_ocl_calc_timestamp", Type::getVoidTy(module->getContext()),
IntegerType::getInt32Ty(module->getContext()),
IntegerType::getInt32Ty(module->getContext()),
NULL)),
- /* the args */ ConstantInt::get(intTy, pointNum++), ConstantInt::get(intTy, profilingType));
+ ArrayRef<Value*>(Args));
}
/* We insert one store_profiling at the end of the last block to hold the place. */
llvm::Function::iterator BE = F.end();
@@ -190,12 +191,14 @@ namespace gbe
BasicBlock::iterator retInst = BE->end();
retInst--;
builder->SetInsertPoint(retInst);
- builder->CreateCall2(cast<llvm::Function>(module->getOrInsertFunction(
+ Value *Args2[2] = {profilingBuf, ConstantInt::get(intTy, profilingType)};
+
+ builder->CreateCall(cast<llvm::Function>(module->getOrInsertFunction(
"__gen_ocl_store_profiling", Type::getVoidTy(module->getContext()),
ptrTy,
IntegerType::getInt32Ty(module->getContext()),
NULL)),
- /* the args */profilingBuf, ConstantInt::get(intTy, profilingType));
+ ArrayRef<Value*>(Args2));
It works at least on llvm 3.6. it should also work on llvm 3.5.
Thanks!
Ruiling
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Yang, Rong R
> Sent: Thursday, November 19, 2015 3:55 PM
> To: Yan Wang <yan.wang at linux.intel.com>; beignet at lists.freedesktop.org
> Subject: Re: [Beignet] [PATCH v2] Use CreateCall instead of CreateCall2.
>
> Build fail in LLVM3.5.2.
>
> > -----Original Message-----
> > From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf
> Of
> > Yan Wang
> > Sent: Thursday, November 19, 2015 10:41
> > To: beignet at lists.freedesktop.org
> > Cc: Yan Wang
> > Subject: [Beignet] [PATCH v2] Use CreateCall instead of CreateCall2.
> >
> > Signed-off-by: Yan Wang <yan.wang at linux.intel.com>
> > ---
> > backend/src/llvm/llvm_profiling.cpp | 8 ++++----
> > 1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/backend/src/llvm/llvm_profiling.cpp
> > b/backend/src/llvm/llvm_profiling.cpp
> > index 8c9157c..3fbd00d 100644
> > --- a/backend/src/llvm/llvm_profiling.cpp
> > +++ b/backend/src/llvm/llvm_profiling.cpp
> > @@ -177,12 +177,12 @@ namespace gbe
> > builder->SetInsertPoint(instI);
> > /* Add the timestamp store function call. */
> > // __gen_ocl_store_timestamp(int nth, int type);
> > - builder->CreateCall2(cast<llvm::Function>(module-
> > >getOrInsertFunction(
> > +
> > + builder->CreateCall(cast<llvm::Function>(module->getOrInsertFunction(
> > "__gen_ocl_calc_timestamp", Type::getVoidTy(module-
> > >getContext()),
> > IntegerType::getInt32Ty(module->getContext()),
> > IntegerType::getInt32Ty(module->getContext()),
> > NULL)),
> > - /* the args */ ConstantInt::get(intTy, pointNum++),
> > ConstantInt::get(intTy, profilingType));
> > + /* the args */ {ConstantInt::get(intTy, pointNum++),
> > + ConstantInt::get(intTy, profilingType)});
> > }
> > /* We insert one store_profiling at the end of the last block to hold the
> > place. */
> > llvm::Function::iterator BE = F.end(); @@ -190,12 +190,12 @@
> namespace
> > gbe
> > BasicBlock::iterator retInst = BE->end();
> > retInst--;
> > builder->SetInsertPoint(retInst);
> > - builder->CreateCall2(cast<llvm::Function>(module-
> >getOrInsertFunction(
> > +
> > + builder->CreateCall(cast<llvm::Function>(module->getOrInsertFunction(
> > "__gen_ocl_store_profiling", Type::getVoidTy(module-
> >getContext()),
> > ptrTy,
> > IntegerType::getInt32Ty(module->getContext()),
> > NULL)),
> > - /* the args */profilingBuf, ConstantInt::get(intTy, profilingType));
> > + /* the args */{profilingBuf, ConstantInt::get(intTy,
> > + profilingType)});
> >
> > delete builder;
> > return changed;
> > --
> > 2.5.0
> >
> > _______________________________________________
> > Beignet mailing list
> > Beignet at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/beignet
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list