1. use_iterator point to 'Use' now instead of 'User'. 2. all c-string are in constant address space now, which follows OCL Spec.
Signed-off-by: Ruiling Song <[email protected]> --- backend/src/llvm/llvm_gen_backend.cpp | 10 ++++++++-- backend/src/ocl_stdlib.tmpl.h | 5 +++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp index 1bf59a1..a5aa038 100644 --- a/backend/src/llvm/llvm_gen_backend.cpp +++ b/backend/src/llvm/llvm_gen_backend.cpp @@ -1524,8 +1524,14 @@ namespace gbe // one instruction that use the local variable, simply return. const Instruction *insn = NULL; for(Value::const_use_iterator iter = v->use_begin(); iter != v->use_end(); ++iter) { - if(isa<Instruction>(*iter)) return cast<const Instruction>(*iter); - insn = getInstructionUseLocal(*iter); + // After LLVM 3.5, use_iterator points to 'Use' instead of 'User', which is more straightforward. +#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 5) + const User *theUser = *iter; +#else + const User *theUser = iter->getUser(); +#endif + if(isa<Instruction>(theUser)) return cast<const Instruction>(theUser); + insn = getInstructionUseLocal(theUser); if(insn != NULL) break; } return insn; diff --git a/backend/src/ocl_stdlib.tmpl.h b/backend/src/ocl_stdlib.tmpl.h index a4bdfbd..c2eca7c 100755 --- a/backend/src/ocl_stdlib.tmpl.h +++ b/backend/src/ocl_stdlib.tmpl.h @@ -5018,7 +5018,12 @@ INLINE_OVERLOADABLE float __gen_ocl_internal_fastpath_tanh (float x) #undef INLINE /* The printf function. */ +/* From LLVM 3.5, c string are all in constant address space */ +#if 100*__clang_major__ + __clang_minor__ < 305 int __gen_ocl_printf_stub(const char * format, ...); +#else +int __gen_ocl_printf_stub(constant char * format, ...); +#endif #define printf __gen_ocl_printf_stub #endif /* __GEN_OCL_STDLIB_H__ */ -- 1.7.10.4 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
