LGTM, pushed, thanks.
On Mon, Sep 01, 2014 at 04:18:45PM +0800, [email protected] wrote: > From: Junyan He <[email protected]> > > When there are multi printf statements in multi kernel > fucntions within the same translate unit, if they have > the same sting parameter, the Clang will just generate > one global string named .strXXX to represent that string. > So when translating the kernel to gen, we can not unref > that global var. Just ignore it to avoid assert. > > Signed-off-by: Junyan He <[email protected]> > --- > backend/src/llvm/llvm_gen_backend.cpp | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/backend/src/llvm/llvm_gen_backend.cpp > b/backend/src/llvm/llvm_gen_backend.cpp > index 8f0d5c2..1604ede 100644 > --- a/backend/src/llvm/llvm_gen_backend.cpp > +++ b/backend/src/llvm/llvm_gen_backend.cpp > @@ -1727,6 +1727,18 @@ namespace gbe > ctx.getFunction().getPrintfSet()->setIndexBufBTI(btiBase); > globalPointer.insert(std::make_pair(&v, btiBase++)); > regTranslator.newScalarProxy(ir::ocl::printfiptr, > const_cast<GlobalVariable*>(&v)); > + } else if(v.getName().str().substr(0, 4) == ".str") { > + /* When there are multi printf statements in multi kernel > fucntions within the same > + translate unit, if they have the same sting parameter, such as > + kernel_func1 () { > + printf("Line is %d\n", line_num1); > + } > + kernel_func2 () { > + printf("Line is %d\n", line_num2); > + } > + The Clang will just generate one global string named .strXXX to > represent "Line is %d\n" > + So when translating the kernel_func1, we can not unref that > global var, so we will > + get here. Just ignore it to avoid assert. */ > } else { > GBE_ASSERT(0); > } > -- > 1.8.3.2 > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
