From 451daec2d45eb7486f7e6ccde52964979dc5f9e9 Mon Sep 17 00:00:00 2001 From: Pan Xiuli Date: Fri, 29 Apr 2016 14:28:24 +0800 Subject: [PATCH 1/4] Backend: Fix bug build with clang When using clang template name can not be the same with class variable. This bug will cause the gen ir load/store switch and casue self test error. --- backend/src/llvm/llvm_gen_backend.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp index 51a1dab..66293fc 100644 --- a/backend/src/llvm/llvm_gen_backend.cpp +++ b/backend/src/llvm/llvm_gen_backend.cpp @@ -443,7 +443,7 @@ namespace gbe void emitBatchLoadOrStore(const ir::Type type, const uint32_t elemNum, Value *llvmValues, Type * elemType); ir::Register getOffsetAddress(ir::Register basePtr, unsigned offset); void shootMessage(ir::Type type, ir::Register offset, ir::Tuple value, unsigned elemNum); - template + template void emitLoadOrStore(T &I); private: ir::Context &ctx; @@ -642,7 +642,7 @@ namespace gbe */ INLINE void simplifyTerminator(BasicBlock *bb); /*! Helper function to emit loads and stores */ - template void emitLoadOrStore(T &I); + template void emitLoadOrStore(T &I); /*! Will try to remove MOVs due to PHI resolution */ void removeMOVs(const ir::Liveness &liveness, ir::Function &fn); /*! Optimize phi move based on liveness information */ @@ -712,7 +712,7 @@ namespace gbe void visitUnreachableInst(UnreachableInst &I) {NOT_SUPPORTED;} void visitGetElementPtrInst(GetElementPtrInst &I) {NOT_SUPPORTED;} void visitInsertValueInst(InsertValueInst &I) {NOT_SUPPORTED;} - template void visitLoadOrStore(T &I); + template void visitLoadOrStore(T &I); INLINE void gatherBTI(Value *pointer, ir::BTI &bti); // batch vec4/8/16 load/store @@ -4863,7 +4863,7 @@ namespace gbe } } - template + template void MemoryInstHelper::emitLoadOrStore(T &I) { Value *llvmPtr = I.getPointerOperand(); Value *llvmValues = getLoadOrStoreValue(I); @@ -4873,7 +4873,7 @@ namespace gbe const ir::Register pointer = writer->getRegister(llvmPtr); const ir::RegisterFamily pointerFamily = ctx.getPointerFamily(); - this->isLoad = isLoad; + this->isLoad = IsLoad; Type *scalarType = llvmType; if (!isScalarType(llvmType)) { VectorType *vectorType = cast(llvmType); -- 2.5.0