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

Reply via email to