some embedded systems have not upgraded the c/c++ environment, it makes the request to remove the C++11 features. It is possible for the CL_EMBEDDED_PROFILE with some more changes (to be done later). This change modifies the keyword auto and nullptr.
btw, C++ new feature is a must for libgbe (the OpenCL compiler) which depends on LLVM/clang Signed-off-by: Guo Yejun <[email protected]> --- backend/src/backend/program.cpp | 17 ++++--- backend/src/backend/program.hpp | 6 +-- backend/src/ir/constant.cpp | 3 +- backend/src/ir/constant.hpp | 5 ++- backend/src/ir/function.hpp | 22 +++++++-- backend/src/ir/image.cpp | 98 ++++++++++++++++++++--------------------- backend/src/ir/liveness.hpp | 8 ++-- backend/src/ir/printf.cpp | 12 ++--- backend/src/ir/printf.hpp | 6 ++- backend/src/ir/sampler.cpp | 14 +++--- backend/src/ir/sampler.hpp | 4 +- backend/src/ir/unit.hpp | 3 +- 12 files changed, 111 insertions(+), 87 deletions(-) diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp index abdb1e4..8ccf115 100644 --- a/backend/src/backend/program.cpp +++ b/backend/src/backend/program.cpp @@ -106,7 +106,8 @@ namespace gbe { Program::Program(void) : constantSet(NULL) {} Program::~Program(void) { - for (auto &kernel : kernels) GBE_DELETE(kernel.second); + for (map<std::string, Kernel*>::iterator it = kernels.begin(); it != kernels.end(); ++it) + GBE_DELETE(it->second); if (constantSet) delete constantSet; } @@ -191,8 +192,8 @@ namespace gbe { } OUT_UPDATE_SZ(ker_num); - for (auto ker : kernels) { - size_t sz = ker.second->serializeToBin(outs); + for (map<std::string, Kernel*>::iterator it = kernels.begin(); it != kernels.end(); ++it) { + size_t sz = it->second->serializeToBin(outs); if (!sz) return 0; @@ -275,7 +276,8 @@ namespace gbe { } OUT_UPDATE_SZ(patches.size()); - for (auto patch : patches) { + for (size_t i = 0; i < patches.size(); ++i) { + PatchInfo& patch = patches[i]; unsigned int tmp; tmp = patch.type; OUT_UPDATE_SZ(tmp); @@ -446,8 +448,8 @@ namespace gbe { constantSet->printStatus(indent + 4, outs); } - for (auto ker : kernels) { - ker.second->printStatus(indent + 4, outs); + for (map<std::string, Kernel*>::iterator it = kernels.begin(); it != kernels.end(); ++it) { + it->second->printStatus(indent + 4, outs); } outs << spaces << "================ End Program ================" << "\n"; @@ -481,7 +483,8 @@ namespace gbe { outs << spaces_nl << " Patches Number is " << patches.size() << "\n"; num = 0; - for (auto patch : patches) { + for (size_t i = 0; i < patches.size(); ++i) { + PatchInfo& patch = patches[i]; num++; outs << spaces_nl << " patch " << num << ":\n"; outs << spaces_nl << " type value: "<< patch.type << "\n"; diff --git a/backend/src/backend/program.hpp b/backend/src/backend/program.hpp index 446c521..66f90aa 100644 --- a/backend/src/backend/program.hpp +++ b/backend/src/backend/program.hpp @@ -250,7 +250,7 @@ namespace gbe { uint32_t getKernelNum(void) const { return kernels.size(); } /*! Get the kernel from its name */ Kernel *getKernel(const std::string &name) const { - auto it = kernels.find(name); + map<std::string, Kernel*>::const_iterator it = kernels.find(name); if (it == kernels.end()) return NULL; else @@ -260,9 +260,9 @@ namespace gbe { Kernel *getKernel(uint32_t ID) const { uint32_t currID = 0; Kernel *kernel = NULL; - for (const auto &pair : kernels) { + for (map<std::string, Kernel*>::const_iterator it = kernels.begin(); it != kernels.end(); ++it) { if (currID == ID) { - kernel = pair.second; + kernel = it->second; break; } currID++; diff --git a/backend/src/ir/constant.cpp b/backend/src/ir/constant.cpp index 6ef8ea6..fa4e14a 100644 --- a/backend/src/ir/constant.cpp +++ b/backend/src/ir/constant.cpp @@ -56,7 +56,8 @@ namespace ir { } OUT_UPDATE_SZ(constants.size()); - for (auto const &cnst : constants) { + for (size_t i = 0; i < constants.size(); ++i) { + Constant& cnst = constants[i]; size_t bytes = sizeof(cnst.getName().size()) //name length self + cnst.getName().size()*sizeof(char) //name + sizeof(cnst.getSize()) //size diff --git a/backend/src/ir/constant.hpp b/backend/src/ir/constant.hpp index f5f172d..0891d7b 100644 --- a/backend/src/ir/constant.hpp +++ b/backend/src/ir/constant.hpp @@ -76,12 +76,13 @@ namespace ir { Constant& getConstant(size_t i) { return constants[i]; } /*! Get a special constant */ Constant& getConstant(const std::string & name) { - for (auto & c : constants) { + for (size_t i = 0; i < constants.size(); ++i) { + Constant& c = constants[i]; if (c.getName() == name) return c; } GBE_ASSERT(false); - return *(Constant *)nullptr; + return *(Constant *)NULL; } /*! Number of bytes of serialized constant data */ size_t getDataSize(void) const { return data.size(); } diff --git a/backend/src/ir/function.hpp b/backend/src/ir/function.hpp index 4aea087..5d00cca 100644 --- a/backend/src/ir/function.hpp +++ b/backend/src/ir/function.hpp @@ -353,12 +353,20 @@ namespace ir { * this is not an input argument */ INLINE const FunctionArgument *getArg(const Register ®) const { - for (auto arg : args) if (arg->reg == reg) return arg; + for (size_t i = 0; i < args.size(); ++i) { + const FunctionArgument* arg = args[i]; + if (arg->reg == reg) + return arg; + } return NULL; } INLINE FunctionArgument *getArg(const Register ®) { - for (auto arg : args) if (arg->reg == reg) return arg; + for (size_t i = 0; i < args.size(); ++i) { + FunctionArgument* arg = args[i]; + if (arg->reg == reg) + return arg; + } return NULL; } @@ -417,12 +425,18 @@ namespace ir { /*! Apply the given functor on all basic blocks */ template <typename T> INLINE void foreachBlock(const T &functor) const { - for (auto block : blocks) functor(*block); + for (size_t i = 0; i < blocks.size(); ++i) { + BasicBlock* block = blocks[i]; + functor(*block); + } } /*! Apply the given functor on all instructions */ template <typename T> INLINE void foreachInstruction(const T &functor) const { - for (auto block : blocks) block->foreach(functor); + for (size_t i = 0; i < blocks.size(); ++i) { + BasicBlock* block = blocks[i]; + block->foreach(functor); + } } /*! Does it use SLM */ INLINE bool getUseSLM(void) const { return this->useSLM; } diff --git a/backend/src/ir/image.cpp b/backend/src/ir/image.cpp index d28a72a..8976a68 100644 --- a/backend/src/ir/image.cpp +++ b/backend/src/ir/image.cpp @@ -58,7 +58,7 @@ namespace ir { void ImageSet::appendInfo(ImageInfoKey key, uint32_t offset) { - auto it = indexMap.find(key.index); + map<uint32_t, struct ImageInfo *>::iterator it = indexMap.find(key.index); assert(it != indexMap.end()); struct ImageInfo *imageInfo = it->second; setInfoOffset4Type(imageInfo, key.type, offset); @@ -67,8 +67,8 @@ namespace ir { void ImageSet::clearInfo() { struct ImageInfo *imageInfo; - for(auto &it : indexMap) { - imageInfo = it.second; + for (map<uint32_t, struct ImageInfo *>::iterator it = indexMap.begin(); it != indexMap.end(); ++it) { + imageInfo = it->second; imageInfo->wSlot = -1; imageInfo->hSlot = -1; imageInfo->depthSlot = -1; @@ -78,7 +78,7 @@ namespace ir { } int32_t ImageSet::getInfoOffset(ImageInfoKey key) const { - auto it = indexMap.find(key.index); + map<uint32_t, struct ImageInfo *>::const_iterator it = indexMap.find(key.index); if (it == indexMap.end()) return -1; struct ImageInfo *imageInfo = it->second; @@ -87,20 +87,20 @@ namespace ir { uint32_t ImageSet::getIdx(const Register imageReg) const { - auto it = regMap.find(imageReg); + map<Register, struct ImageInfo *>::const_iterator it = regMap.find(imageReg); GBE_ASSERT(it != regMap.end()); return it->second->idx; } void ImageSet::getData(struct ImageInfo *imageInfos) const { int id = 0; - for(auto &it : regMap) - imageInfos[id++] = *it.second; + for (map<Register, struct ImageInfo *>::const_iterator it = regMap.begin(); it != regMap.end(); ++it) + imageInfos[id++] = *(it->second); } ImageSet::~ImageSet() { - for(auto &it : regMap) - GBE_DELETE(it.second); + for (map<Register, struct ImageInfo *>::const_iterator it = regMap.begin(); it != regMap.end(); ++it) + GBE_DELETE(it->second); } #define OUT_UPDATE_SZ(elt) SERIALIZE_OUT(elt, outs, ret_size) @@ -113,29 +113,29 @@ namespace ir { OUT_UPDATE_SZ(magic_begin); OUT_UPDATE_SZ(regMap.size()); - for (auto iter : regMap) { - OUT_UPDATE_SZ(iter.first); - OUT_UPDATE_SZ(iter.second->arg_idx); - OUT_UPDATE_SZ(iter.second->idx); - OUT_UPDATE_SZ(iter.second->wSlot); - OUT_UPDATE_SZ(iter.second->hSlot); - OUT_UPDATE_SZ(iter.second->depthSlot); - OUT_UPDATE_SZ(iter.second->dataTypeSlot); - OUT_UPDATE_SZ(iter.second->channelOrderSlot); - OUT_UPDATE_SZ(iter.second->dimOrderSlot); + for (map<Register, struct ImageInfo *>::const_iterator it = regMap.begin(); it != regMap.end(); ++it) { + OUT_UPDATE_SZ(it->first); + OUT_UPDATE_SZ(it->second->arg_idx); + OUT_UPDATE_SZ(it->second->idx); + OUT_UPDATE_SZ(it->second->wSlot); + OUT_UPDATE_SZ(it->second->hSlot); + OUT_UPDATE_SZ(it->second->depthSlot); + OUT_UPDATE_SZ(it->second->dataTypeSlot); + OUT_UPDATE_SZ(it->second->channelOrderSlot); + OUT_UPDATE_SZ(it->second->dimOrderSlot); } OUT_UPDATE_SZ(indexMap.size()); - for (auto iter : indexMap) { - OUT_UPDATE_SZ(iter.first); - OUT_UPDATE_SZ(iter.second->arg_idx); - OUT_UPDATE_SZ(iter.second->idx); - OUT_UPDATE_SZ(iter.second->wSlot); - OUT_UPDATE_SZ(iter.second->hSlot); - OUT_UPDATE_SZ(iter.second->depthSlot); - OUT_UPDATE_SZ(iter.second->dataTypeSlot); - OUT_UPDATE_SZ(iter.second->channelOrderSlot); - OUT_UPDATE_SZ(iter.second->dimOrderSlot); + for (map<uint32_t, struct ImageInfo *>::iterator it = indexMap.begin(); it != indexMap.end(); ++it) { + OUT_UPDATE_SZ(it->first); + OUT_UPDATE_SZ(it->second->arg_idx); + OUT_UPDATE_SZ(it->second->idx); + OUT_UPDATE_SZ(it->second->wSlot); + OUT_UPDATE_SZ(it->second->hSlot); + OUT_UPDATE_SZ(it->second->depthSlot); + OUT_UPDATE_SZ(it->second->dataTypeSlot); + OUT_UPDATE_SZ(it->second->channelOrderSlot); + OUT_UPDATE_SZ(it->second->dimOrderSlot); } OUT_UPDATE_SZ(magic_end); @@ -211,31 +211,31 @@ namespace ir { outs << spaces_nl << " ImageSet Map: [reg, arg_idx, idx, wSlot, hSlot, depthSlot, " "dataTypeSlot, channelOrderSlot, dimOrderSlot]\n"; outs << spaces_nl << " regMap size: " << regMap.size() << "\n"; - for (auto iter : regMap) { - outs << spaces_nl << " [" << iter.first << ", " - << iter.second->arg_idx << ", " - << iter.second->idx << ", " - << iter.second->wSlot << ", " - << iter.second->hSlot << ", " - << iter.second->depthSlot << ", " - << iter.second->dataTypeSlot << ", " - << iter.second->channelOrderSlot << ", " - << iter.second->dimOrderSlot << "]" << "\n"; + for (map<Register, struct ImageInfo *>::const_iterator it = regMap.begin(); it != regMap.end(); ++it) { + outs << spaces_nl << " [" << it->first << ", " + << it->second->arg_idx << ", " + << it->second->idx << ", " + << it->second->wSlot << ", " + << it->second->hSlot << ", " + << it->second->depthSlot << ", " + << it->second->dataTypeSlot << ", " + << it->second->channelOrderSlot << ", " + << it->second->dimOrderSlot << "]" << "\n"; } outs << spaces_nl << " ImageSet Map: [index, arg_idx, idx, wSlot, hSlot, depthSlot, " "dataTypeSlot, channelOrderSlot, dimOrderSlot]\n"; outs << spaces_nl << " regMap size: " << indexMap.size() << "\n"; - for (auto iter : indexMap) { - outs << spaces_nl << " [" << iter.first << ", " - << iter.second->arg_idx << ", " - << iter.second->idx << ", " - << iter.second->wSlot << ", " - << iter.second->hSlot << ", " - << iter.second->depthSlot << ", " - << iter.second->dataTypeSlot << ", " - << iter.second->channelOrderSlot << ", " - << iter.second->dimOrderSlot << ", " << "\n"; + for (map<uint32_t, struct ImageInfo *>::iterator it = indexMap.begin(); it != indexMap.end(); ++it) { + outs << spaces_nl << " [" << it->first << ", " + << it->second->arg_idx << ", " + << it->second->idx << ", " + << it->second->wSlot << ", " + << it->second->hSlot << ", " + << it->second->depthSlot << ", " + << it->second->dataTypeSlot << ", " + << it->second->channelOrderSlot << ", " + << it->second->dimOrderSlot << ", " << "\n"; } outs << spaces << "------------- End ImageSet -------------" << "\n"; diff --git a/backend/src/ir/liveness.hpp b/backend/src/ir/liveness.hpp index 1bc66fe..4a7dc4e 100644 --- a/backend/src/ir/liveness.hpp +++ b/backend/src/ir/liveness.hpp @@ -100,8 +100,8 @@ namespace ir { template <DataFlowDirection dir, typename T> void foreach(const T &functor) { // Iterate on all blocks - for (const auto &pair : liveness) { - BlockInfo &info = *pair.second; + for (Info::iterator pair = liveness.begin(); pair != liveness.end(); ++pair) { + BlockInfo &info = *(pair->second); const BasicBlock &bb = info.bb; const BlockSet *set = NULL; if (dir == DF_SUCC) @@ -109,8 +109,8 @@ namespace ir { else set = &bb.getPredecessorSet(); // Iterate over all successors - for (auto other : *set) { - auto otherInfo = liveness.find(other); + for (BlockSet::iterator other = (*set).begin(); other != (*set).end(); ++other) { + Info::iterator otherInfo = liveness.find(*other); GBE_ASSERT(otherInfo != liveness.end() && otherInfo->second != NULL); functor(info, *otherInfo->second); } diff --git a/backend/src/ir/printf.cpp b/backend/src/ir/printf.cpp index 7b670f7..0e9f81c 100644 --- a/backend/src/ir/printf.cpp +++ b/backend/src/ir/printf.cpp @@ -35,11 +35,11 @@ namespace gbe { fmts.push_back(*fmt); - for (auto &f : fmts.back()) { - if (f.type == PRINTF_SLOT_TYPE_STRING) + for (PrintfFmt::iterator f = fmts.back().begin(); f != fmts.back().end(); ++f) { + if (f->type == PRINTF_SLOT_TYPE_STRING) continue; - slots.push_back(&f); + slots.push_back(&(*f)); } /* Update the total size of size. */ @@ -121,14 +121,16 @@ namespace gbe std::string pf_str; int stmt = 0; - for (auto &pf : fmts) { + for (size_t count = 0; count < fmts.size(); ++count) { + PrintfFmt& pf = fmts[count]; for (i = 0; i < global_wk_sz0; i++) { for (j = 0; j < global_wk_sz1; j++) { for (k = 0; k < global_wk_sz2; k++) { int loop_num = ((int *)index_addr)[stmt*global_wk_sz0*global_wk_sz1*global_wk_sz2 + k*global_wk_sz0*global_wk_sz1 + j*global_wk_sz0 + i]; for (int n = 0; n < loop_num; n++) { - for (auto &slot : pf) { + for (PrintfFmt::iterator pfit = pf.begin(); pfit != pf.end(); ++pfit) { + PrintfSlot& slot = *pfit; pf_str = ""; int vec_num; diff --git a/backend/src/ir/printf.hpp b/backend/src/ir/printf.hpp index b9f7619..8639644 100644 --- a/backend/src/ir/printf.hpp +++ b/backend/src/ir/printf.hpp @@ -146,11 +146,13 @@ namespace gbe { public: PrintfSet(const PrintfSet& other) { - for (auto &f : other.fmts) { + for (size_t i = 0; i < other.fmts.size(); ++i) { + const PrintfFmt& f = other.fmts[i]; fmts.push_back(f); } - for (auto &s : other.slots) { + for (size_t i = 0; i < other.fmts.size(); ++i) { + PrintfSlot* s = other.slots[i]; slots.push_back(s); } diff --git a/backend/src/ir/sampler.cpp b/backend/src/ir/sampler.cpp index e4accca..a4e1ddd 100644 --- a/backend/src/ir/sampler.cpp +++ b/backend/src/ir/sampler.cpp @@ -53,7 +53,7 @@ namespace ir { int32_t id = ctx->getFunction().getArgID(arg); GBE_ASSERT(id < (1 << __CLK_SAMPLER_ARG_BITS)); - auto it = samplerMap.find(SAMPLER_ID(id)); + map<uint32_t, uint32_t>::iterator it = samplerMap.find(SAMPLER_ID(id)); if (it != samplerMap.end()) { return it->second; } @@ -71,9 +71,9 @@ namespace ir { OUT_UPDATE_SZ(magic_begin); OUT_UPDATE_SZ(samplerMap.size()); - for (auto iter : samplerMap) { - OUT_UPDATE_SZ(iter.first); - OUT_UPDATE_SZ(iter.second); + for (map<uint32_t, uint32_t>::iterator it = samplerMap.begin(); it != samplerMap.end(); ++it) { + OUT_UPDATE_SZ(it->first); + OUT_UPDATE_SZ(it->second); } OUT_UPDATE_SZ(magic_end); @@ -123,9 +123,9 @@ namespace ir { outs << spaces_nl << " SamplerSet Map: [index, sampler_reg, sampler_slot]\n"; outs << spaces_nl << " samplerMap size: " << samplerMap.size() << "\n"; - for (auto iter : samplerMap) { - outs << spaces_nl << " [" << iter.first << ", " - << iter.second << "]\n"; + for (map<uint32_t, uint32_t>::iterator it = samplerMap.begin(); it != samplerMap.end(); ++it) { + outs << spaces_nl << " [" << it->first << ", " + << it->second << "]\n"; } outs << spaces << "------------- End SamplerSet -------------" << "\n"; diff --git a/backend/src/ir/sampler.hpp b/backend/src/ir/sampler.hpp index a23f871..85e6d54 100644 --- a/backend/src/ir/sampler.hpp +++ b/backend/src/ir/sampler.hpp @@ -48,8 +48,8 @@ namespace ir { size_t getDataSize(void) { return samplerMap.size(); } size_t getDataSize(void) const { return samplerMap.size(); } void getData(uint32_t *samplers) const { - for(auto &it : samplerMap) - samplers[it.second] = it.first; + for (map<uint32_t, uint32_t>::const_iterator it = samplerMap.begin(); it != samplerMap.end(); ++it) + samplers[it->second] = it->first; } void operator = (const SamplerSet& other) { diff --git a/backend/src/ir/unit.hpp b/backend/src/ir/unit.hpp index e2ccbe8..8ff858d 100644 --- a/backend/src/ir/unit.hpp +++ b/backend/src/ir/unit.hpp @@ -56,7 +56,8 @@ namespace ir { /*! Apply the given functor on all the functions */ template <typename T> INLINE void apply(const T &functor) const { - for (const auto &pair : functions) functor(*pair.second); + for (FunctionSet::const_iterator it = functions.begin(); it != functions.end(); ++it) + functor(*(it->second)); } /*! Return the size of the pointers manipulated */ INLINE PointerSize getPointerSize(void) const { return pointerSize; } -- 1.9.1 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
