diff --git a/src/bin/jbc2mpl b/src/bin/jbc2mpl index aa9b65aaf34fd4c10eb49a27d9a9b00905e2c709..9fb22fb473140263c4f9b4cc91c736aac24776a2 100755 Binary files a/src/bin/jbc2mpl and b/src/bin/jbc2mpl differ diff --git a/src/bin/maple b/src/bin/maple index 0d43a5195f0aca91f7342af6d1d2d3337a3d073f..1dadbf5d35df836a1c2861c5f4deabf682c458fa 100755 Binary files a/src/bin/maple and b/src/bin/maple differ diff --git a/src/bin/mplcg b/src/bin/mplcg index f7996ca5b0884675cd2fb8893358a0e7352e95a3..e2bf31303114e2907c4b34d24c6270f43e6bac54 100755 Binary files a/src/bin/mplcg and b/src/bin/mplcg differ diff --git a/src/deplibs/libmplphase.a b/src/deplibs/libmplphase.a index 623121759376ac61c5a1b5d4aa0aeaeac8e64dc9..b114323b1261bf4e0164039e62f597dd2d92c3cd 100644 Binary files a/src/deplibs/libmplphase.a and b/src/deplibs/libmplphase.a differ diff --git a/src/maple_driver/include/safe_exe.h b/src/maple_driver/include/safe_exe.h index e53745c280517e1b2534928183c93a74231e125d..5a2bf8086501bad8fbc399e3005197432462cad2 100644 --- a/src/maple_driver/include/safe_exe.h +++ b/src/maple_driver/include/safe_exe.h @@ -41,7 +41,7 @@ class SafeExe { char **argv = new char*[vectorArgs.size() + 1]; // argv[0] is program name // copy args - for (int j = 0; j < vectorArgs.size(); ++j) { + for (int j = 0; j < vectorArgs.size(); ++j) { int strLength = vectorArgs[j].size(); argv[j] = new char[strLength + 1]; strncpy_s(argv[j], strLength + 1, vectorArgs[j].c_str(), strLength); @@ -55,7 +55,7 @@ class SafeExe { // child process fflush(nullptr); if (execv(cmd.c_str(), argv) < 0) { - for (int j = 0; j < vectorArgs.size(); ++j) { + for (int j = 0; j < vectorArgs.size(); ++j) { delete [] argv[j]; } delete [] argv; @@ -73,7 +73,7 @@ class SafeExe { ret = ErrorCode::kErrorCompileFail; } } - for (int j = 0; j < vectorArgs.size(); ++j) { + for (int j = 0; j < vectorArgs.size(); ++j) { delete [] argv[j]; } delete [] argv; @@ -104,12 +104,12 @@ class SafeExe { if (*iter == " " || *iter =="") { iter = tmpArgs.erase(iter); } else { - iter++; + ++iter; } } tmpArgs.insert(tmpArgs.begin(), cmd); return tmpArgs; } }; -} // namespace maple -#endif // MAPLE_DRIVER_INCLUDE_SAFE_EXE_H +} // namespace maple +#endif // MAPLE_DRIVER_INCLUDE_SAFE_EXE_H diff --git a/src/maple_ir/include/bin_mpl_import.h b/src/maple_ir/include/bin_mpl_import.h index 39a032106afe98c8c0f103865fd76f05ce19e3d0..876c9de8b91a0e3b10942bacb6412ffbf6de7708 100644 --- a/src/maple_ir/include/bin_mpl_import.h +++ b/src/maple_ir/include/bin_mpl_import.h @@ -24,8 +24,8 @@ class BinaryMplImport { using CallSite = std::pair; public: - BinaryMplImport &operator = (const BinaryMplImport &) = delete; - BinaryMplImport(const BinaryMplImport &) = delete; + BinaryMplImport &operator=(const BinaryMplImport&) = delete; + BinaryMplImport(const BinaryMplImport&) = delete; explicit BinaryMplImport(MIRModule &md) : mod(md), mirBuilder(&md) { imported = true; bufI = 0; diff --git a/src/maple_ir/include/bin_mplt.h b/src/maple_ir/include/bin_mplt.h index 50416d686801b10eb1551074706b2885d80cf54f..8b261d143842db408c15f12c45923585307c8dcd 100644 --- a/src/maple_ir/include/bin_mplt.h +++ b/src/maple_ir/include/bin_mplt.h @@ -38,7 +38,7 @@ class BinaryMplt { return binImport.Import(modID, readCG, readSE); } - MIRModule &GetMod() { + const MIRModule &GetMod() const { return mirModule; } diff --git a/src/maple_ir/include/mir_pragma.h b/src/maple_ir/include/mir_pragma.h index 93a5fbaa048303ae6c93f06d6d88434bb8ebb262..43772710205c06830ac33a0e2005370d015f296b 100644 --- a/src/maple_ir/include/mir_pragma.h +++ b/src/maple_ir/include/mir_pragma.h @@ -169,7 +169,6 @@ class MIRPragmaElement { float f; double d; } val; - MapleVector subElemVec; }; @@ -188,8 +187,8 @@ class MIRPragma { ~MIRPragma() = default; MIRPragmaElement *GetPragmaElemFromSignature(const std::string &signature); void Dump(int indent) const; - void PushElementVector(MIRPragmaElement &elem) { - elementVec.push_back(&elem); + void PushElementVector(MIRPragmaElement *elem) { + elementVec.push_back(elem); } void ClearElementVector() { diff --git a/src/maple_ir/include/opcode_info.h b/src/maple_ir/include/opcode_info.h index 21013d496f7ba251106f5fc236a985dd24db4069..993de3a0aa6eac4d04fe18670133f49337de6776 100644 --- a/src/maple_ir/include/opcode_info.h +++ b/src/maple_ir/include/opcode_info.h @@ -136,7 +136,6 @@ class OpcodeTable { private: OpcodeDesc table[kOpLast]; }; - extern const OpcodeTable kOpcodeInfo; } // namespace maple #endif // MAPLE_IR_INCLUDE_OPCODE_INFO_H diff --git a/src/maple_ir/include/opcodes.def b/src/maple_ir/include/opcodes.def index 07a79fcb8899f1a834bf855103a80ad0b3dc0ef4..fc2df36c3850f55a38e48ee2f3984d6baa3781be 100644 --- a/src/maple_ir/include/opcodes.def +++ b/src/maple_ir/include/opcodes.def @@ -15,6 +15,7 @@ // Stmt & Notmmpl // storage access opcodes OPCODE(dassign, DassignNode, (OPCODEISSTMT | OPCODENOTMMPL | OPCODEHASSSADEF), 8) + OPCODE(paiassign, PaiassignNode, (OPCODEISSTMT | OPCODENOTMMPL | OPCODEHASSSADEF), 8) OPCODE(maydassign, DassignNode, (OPCODEISSTMT | OPCODENOTMMPL | OPCODEHASSSADEF), 8) OPCODE(iassign, IassignNode, (OPCODEISSTMT | OPCODENOTMMPL | OPCODEHASSSADEF), 12) // hierarchical control flow opcodes diff --git a/src/maple_ir/include/opcodes.h b/src/maple_ir/include/opcodes.h index d9e81ed192f49dd6808bf192d1b243ffeac74d11..c5a8bb36600e97784dcab64b6b669be109138cfa 100644 --- a/src/maple_ir/include/opcodes.h +++ b/src/maple_ir/include/opcodes.h @@ -36,6 +36,5 @@ inline constexpr bool IsCallAssigned(Opcode code) { code == OP_icallassigned || code == OP_intrinsiccallassigned || code == OP_xintrinsiccallassigned || code == OP_intrinsiccallwithtypeassigned); } - } // namespace maple #endif // MAPLE_IR_INCLUDE_OPCODES_H diff --git a/src/maple_ir/src/bin_mpl_export.cpp b/src/maple_ir/src/bin_mpl_export.cpp index 25ac37b410b12f0824b71d055136381f99fa2c50..37df50b4a0f40acf652386bb8fc45a0a1722e8bb 100644 --- a/src/maple_ir/src/bin_mpl_export.cpp +++ b/src/maple_ir/src/bin_mpl_export.cpp @@ -19,7 +19,6 @@ #include "name_mangler.h" #include "opcode_info.h" #include "mir_pragma.h" -#include "mir_builder.h" #include "bin_mplt.h" #include "factory.h" @@ -69,8 +68,8 @@ void OutputConstStr16(const MIRConst &constVal, BinaryMplExport &mplExport) { std::string str; NameMangler::UTF16ToUTF8(str, str16); mplExport.WriteNum(str.length()); - for (uint64 i = 0; i < str.length(); i++) { - mplExport.Write(static_cast(str[i])); + for (char c : str) { + mplExport.Write(static_cast(c)); } } @@ -92,7 +91,7 @@ void OutputConstAgg(const MIRConst &constVal, BinaryMplExport &mplExport) { const auto &aggConst = static_cast(constVal); size_t size = aggConst.GetConstVec().size(); mplExport.WriteNum(size); - for (size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; ++i) { mplExport.OutputConst(aggConst.GetConstVecItem(i)); } } @@ -103,12 +102,12 @@ void OutputConstSt(const MIRConst &constVal, BinaryMplExport &mplExport) { const auto &stConst = static_cast(constVal); size_t size = stConst.GetStVec().size(); mplExport.WriteNum(size); - for (size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; ++i) { mplExport.OutputSymbol(stConst.GetStVecItem(i)); } size = stConst.GetStOffsetVec().size(); mplExport.WriteNum(size); - for (size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; ++i) { mplExport.WriteNum(stConst.GetStOffsetVecItem(i)); } } @@ -163,7 +162,7 @@ void OutputTypeArray(const MIRType &ty, BinaryMplExport &mplExport) { mplExport.WriteNum(kBinKindTypeArray); mplExport.OutputTypeBase(type); mplExport.WriteNum(type.GetDim()); - for (int i = 0; i < type.GetDim(); i++) { + for (int i = 0; i < type.GetDim(); ++i) { mplExport.WriteNum(type.GetSizeArrayItem(i)); } mplExport.OutputType(type.GetElemTyIdx()); @@ -177,12 +176,12 @@ void OutputTypeFunction(const MIRType &ty, BinaryMplExport &mplExport) { mplExport.WriteNum(type.IsVarargs()); size_t size = type.GetParamTypeList().size(); mplExport.WriteNum(size); - for (size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; ++i) { mplExport.OutputType(type.GetParamTypeList()[i]); } size = type.GetParamAttrsList().size(); mplExport.WriteNum(size); - for (size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; ++i) { mplExport.OutputTypeAttrs(type.GetParamAttrsList()[i]); } } @@ -353,7 +352,7 @@ void BinaryMplExport::WriteNum(int64 x) { } void BinaryMplExport::WriteAsciiStr(const std::string &str) { - for (size_t i = 0; i < str.size(); i++) { + for (size_t i = 0; i < str.size(); ++i) { Write(static_cast(str[i])); } Write(0); @@ -362,14 +361,14 @@ void BinaryMplExport::WriteAsciiStr(const std::string &str) { void BinaryMplExport::DumpBuf(const std::string &name) { FILE *f = fopen(name.c_str(), "wb"); if (f == nullptr) { - LogInfo::MapleLogger(kLlErr) << "Error while creating the binary file: " << name << std::endl; + LogInfo::MapleLogger(kLlErr) << "Error while creating the binary file: " << name << '\n'; FATAL(kLncFatal, "Error while creating the binary file: %s\n", name.c_str()); } size_t size = buf.size(); size_t k = fwrite(&buf[0], sizeof(uint8), size, f); fclose(f); if (k != size) { - LogInfo::MapleLogger(kLlErr) << "Error while writing the binary file: " << name << std::endl; + LogInfo::MapleLogger(kLlErr) << "Error while writing the binary file: " << name << '\n'; } } @@ -440,7 +439,7 @@ void BinaryMplExport::OutputPragmaElement(const MIRPragmaElement &e) { } size_t size = e.GetSubElemVec().size(); WriteNum(size); - for (size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; ++i) { OutputPragmaElement(*(e.GetSubElement(i))); } } @@ -454,7 +453,7 @@ void BinaryMplExport::OutputPragma(const MIRPragma &p) { WriteNum(p.GetParamNum()); size_t size = p.GetElementVector().size(); WriteNum(size); - for (size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; ++i) { OutputPragmaElement(*(p.GetNthElement(i))); } } @@ -531,7 +530,7 @@ void BinaryMplExport::OutputInfoIsString(const std::vector &infoIsString) void BinaryMplExport::OutputInfo(const std::vector &info, const std::vector &infoIsString) { size_t size = info.size(); WriteNum(size); - for (size_t i = 0; i < size; i++) { + for (size_t i = 0; i < size; ++i) { OutputStr(info[i].first); // GStrIdx if (infoIsString[i]) { OutputStr(GStrIdx(info[i].second)); @@ -568,7 +567,7 @@ void BinaryMplExport::Init() { uStrMark[UStrIdx(0)] = 0; symMark[nullptr] = 0; funcMark[nullptr] = 0; - for (int32 pti = 0; pti <= static_cast(PTY_agg); pti++) { + for (int32 pti = 0; pti <= static_cast(PTY_agg); ++pti) { typMark[GlobalTables::GetTypeTable().GetTypeFromTyIdx(TyIdx(pti))] = pti; } } @@ -638,7 +637,7 @@ void BinaryMplExport::WriteStrField(uint64 contentIdx) { MIRSymbol *sym = entity.second; if (sym->IsLiteral()) { OutputStr(sym->GetNameStrIdx()); - size++; + ++size; } } Fixup(totalSizeIdx, buf.size() - totalSizeIdx); @@ -663,7 +662,7 @@ void BinaryMplExport::WriteTypeField(uint64 contentIdx) { // skip imported class/interface and incomplete types if (!structType->IsImported() && !structType->IsIncomplete()) { OutputType(curTyidx); - size++; + ++size; } } } @@ -711,7 +710,7 @@ void BinaryMplExport::Export(const std::string &fname) { void BinaryMplExport::AppendAt(const std::string &name, int32 offset) { FILE *f = fopen(name.c_str(), "r+b"); if (f == nullptr) { - LogInfo::MapleLogger(kLlErr) << "Error while opening the binary file: " << name << std::endl; + LogInfo::MapleLogger(kLlErr) << "Error while opening the binary file: " << name << '\n'; FATAL(kLncFatal, "Error while creating the binary file: %s\n", name.c_str()); } int seekRet = fseek(f, (long int)offset, SEEK_SET); @@ -720,7 +719,7 @@ void BinaryMplExport::AppendAt(const std::string &name, int32 offset) { size_t k = fwrite(&buf[0], sizeof(uint8), size, f); fclose(f); if (k != size) { - LogInfo::MapleLogger(kLlErr) << "Error while writing the binary file: " << name << std::endl; + LogInfo::MapleLogger(kLlErr) << "Error while writing the binary file: " << name << '\n'; } } diff --git a/src/maple_ir/src/bin_mpl_import.cpp b/src/maple_ir/src/bin_mpl_import.cpp index 83694fe8b6c035add0efe29dff944059de3ca16f..f04845623c9ab10e1831af396accc84afe0c9fcb 100644 --- a/src/maple_ir/src/bin_mpl_import.cpp +++ b/src/maple_ir/src/bin_mpl_import.cpp @@ -133,7 +133,7 @@ MIRConst *BinaryMplImport::ImportConst(MIRFunction *func) { cs->SetPrimType(type->GetPrimType()); int64 len = ReadNum(); std::ostringstream ostr; - for (int64 i = 0; i < len; i++) { + for (int64 i = 0; i < len; ++i) { ostr << Read(); } std::u16string str16; @@ -160,7 +160,7 @@ MIRConst *BinaryMplImport::ImportConst(MIRFunction *func) { ImportConstBase(kind, type, fieldID); MIRAggConst *aggConst = mod.GetMemPool()->New(mod, *type); int64 size = ReadNum(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { aggConst->PushBack(ImportConst(func)); } return aggConst; @@ -168,11 +168,11 @@ MIRConst *BinaryMplImport::ImportConst(MIRFunction *func) { ImportConstBase(kind, type, fieldID); MIRStConst *stConst = mod.GetMemPool()->New(mod, *type); int64 size = ReadNum(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { stConst->PushbackSymbolToSt(InSymbol(func)); } size = ReadNum(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { stConst->PushbackOffsetToSt(ReadNum()); } return stConst; @@ -228,7 +228,7 @@ MIRPragmaElement *BinaryMplImport::ImportPragmaElement() { element->SetU64Val(static_cast(ReadInt64())); } int64 size = ReadNum(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { element->SubElemVecPushBack(ImportPragmaElement()); } return element; @@ -243,8 +243,8 @@ MIRPragma *BinaryMplImport::ImportPragma() { p->SetTyIdxEx(ImportType()); p->SetParamNum(ReadNum()); int64 size = ReadNum(); - for (int64 i = 0; i < size; i++) { - p->PushElementVector(*ImportPragmaElement()); + for (int64 i = 0; i < size; ++i) { + p->PushElementVector(ImportPragmaElement()); } return p; } @@ -319,7 +319,7 @@ void BinaryMplImport::UpdateMethodSymbols() { void BinaryMplImport::ImportFieldsOfStructType(FieldVector &fields, uint32 methodSize) { int64 size = ReadNum(); int64 initSize = fields.size() + methodSize; - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { FieldPair fp; ImportFieldPair(fp); if (initSize == 0) { @@ -331,7 +331,7 @@ void BinaryMplImport::ImportFieldsOfStructType(FieldVector &fields, uint32 metho void BinaryMplImport::ImportMethodsOfStructType(MethodVector &methods) { int64 size = ReadNum(); bool isEmpty = methods.empty(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { MethodPair memPool; ImportMethodPair(memPool); if (isEmpty) { @@ -352,7 +352,7 @@ void BinaryMplImport::ImportStructTypeData(MIRStructType &type) { void BinaryMplImport::ImportInterfacesOfClassType(std::vector &interfaces) { int64 size = ReadNum(); bool isEmpty = interfaces.empty(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { TyIdx idx = ImportType(); if (isEmpty) { interfaces.push_back(idx); @@ -364,7 +364,7 @@ void BinaryMplImport::ImportInfoIsStringOfStructType(MIRStructType &type) { int64 size = ReadNum(); bool isEmpty = type.GetInfoIsString().empty(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { bool isString = static_cast(ReadNum()); if (isEmpty) { @@ -376,7 +376,7 @@ void BinaryMplImport::ImportInfoIsStringOfStructType(MIRStructType &type) { void BinaryMplImport::ImportInfoOfStructType(MIRStructType &type) { int64 size = ReadNum(); bool isEmpty = type.GetInfo().empty(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { GStrIdx idx = ImportStr(); int64 x = (type.GetInfoIsString()[i]) ? ImportStr().GetIdx() : ReadNum(); CHECK_FATAL(x >= 0, "ReadNum nagative, x: %d", x); @@ -390,7 +390,7 @@ void BinaryMplImport::ImportInfoOfStructType(MIRStructType &type) { void BinaryMplImport::ImportPragmaOfStructType(MIRStructType &type) { int64 size = ReadNum(); bool isEmpty = type.GetPragmaVec().empty(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { MIRPragma *pragma = ImportPragma(); if (isEmpty) { type.PushbackPragma(pragma); @@ -401,7 +401,7 @@ void BinaryMplImport::ImportPragmaOfStructType(MIRStructType &type) { void BinaryMplImport::SetClassTyidxOfMethods(MIRStructType &type) { if (type.GetTypeIndex() != 0) { // set up classTyIdx for methods - for (size_t i = 0; i < type.GetMethods().size(); i++) { + for (size_t i = 0; i < type.GetMethods().size(); ++i) { StIdx stidx = type.GetMethodsElement(i).first; MIRSymbol *st = GlobalTables::GetGsymTable().GetSymbolFromStidx(stidx.Idx()); CHECK_FATAL(st != nullptr, "st is null"); @@ -447,7 +447,7 @@ void BinaryMplImport::Reset() { uStrTab.push_back(UStrIdx(0)); // Dummy symTab.push_back(nullptr); // Dummy funcTab.push_back(nullptr); // Dummy - for (int32 pti = 0; pti <= static_cast(PTY_agg); pti++) { + for (int32 pti = 0; pti <= static_cast(PTY_agg); ++pti) { typTab.push_back(GlobalTables::GetTypeTable().GetTypeFromTyIdx(TyIdx(pti))); } } @@ -461,7 +461,7 @@ TypeAttrs BinaryMplImport::ImportTypeAttrs() { void BinaryMplImport::ImportTypePairs(MIRInstantVectorType &insVecType) { int64 size = ReadNum(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { TyIdx t0 = ImportType(); TyIdx t1 = ImportType(); TypePair tp(t0, t1); @@ -549,7 +549,7 @@ TyIdx BinaryMplImport::ImportType(bool forPointedType) { type.SetNameIsLocal(nameIsLocal); type.SetDim(ReadNum()); CHECK_FATAL(type.GetDim() < kMaxArrayDim, "array index out of range"); - for (uint16 i = 0; i < type.GetDim(); i++) { + for (uint16 i = 0; i < type.GetDim(); ++i) { type.SetSizeArrayItem(i, ReadNum()); } size_t idx = typTab.size(); @@ -566,11 +566,11 @@ TyIdx BinaryMplImport::ImportType(bool forPointedType) { type.SetRetTyIdx(ImportType()); type.SetVarArgs(ReadNum()); int64 size = ReadNum(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { type.GetParamTypeList().push_back(ImportType()); } size = ReadNum(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { type.GetParamAttrsList().push_back(ImportTypeAttrs()); } MIRType *origType = &InsertInTypeTables(type); @@ -815,7 +815,7 @@ void BinaryMplImport::ReadStrField() { SkipTotalSize(); int32 size = ReadInt(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { GStrIdx stridx = ImportStr(); GlobalTables::GetConstPool().PutLiteralNameAsImported(stridx); } @@ -828,7 +828,7 @@ void BinaryMplImport::ReadTypeField() { SkipTotalSize(); int32 size = ReadInt(); - for (int64 i = 0; i < size; i++) { + for (int64 i = 0; i < size; ++i) { ImportType(); } int64 tag = 0; @@ -842,7 +842,7 @@ void BinaryMplImport::ReadContentField() { int32 size = ReadInt(); int64 item; int32 offset; - for (int32 i = 0; i < size; i++) { + for (int32 i = 0; i < size; ++i) { item = ReadNum(); offset = ReadInt(); content[item] = offset; diff --git a/src/maple_ir/src/mir_pragma.cpp b/src/maple_ir/src/mir_pragma.cpp index f12ec6a3b2f0c2f0a23dba0d62f1a748474f4ece..153e243df34911b2162bfc4b5def3330817ca48a 100644 --- a/src/maple_ir/src/mir_pragma.cpp +++ b/src/maple_ir/src/mir_pragma.cpp @@ -24,7 +24,7 @@ enum Status { kStop = 0, kStartWithSubvec = 1, kNormalTypeStrEndWithSemicolon = 2, - kNormalTypeStrEndWithSubvecNeedSemicolon = 3, + kNormalTypeStrEndWithSubvecNeedsSemicolon = 3, kEndWithSubvec = 4, kIgnoreAndContinue = 5 }; @@ -88,7 +88,7 @@ static void GetTypeStr(const std::string &str, uint32 &start, uint32 &end, uint3 uint32 i = start; status = kStop; while (str[i] == '[') { - i++; + ++i; } start = i; end = i; @@ -114,11 +114,11 @@ static void GetTypeStr(const std::string &str, uint32 &start, uint32 &end, uint3 end = i + 1; break; } else if (str[i] == '<') { - status = kNormalTypeStrEndWithSubvecNeedSemicolon; + status = kNormalTypeStrEndWithSubvecNeedsSemicolon; end = i; break; } else { - i++; + ++i; } } break; @@ -177,7 +177,7 @@ MIRPragmaElement *MIRPragma::GetPragmaElemFromSignature(const std::string &signa elemStack.top()->SubElemVecPushBack(etmp); break; } - case kNormalTypeStrEndWithSubvecNeedSemicolon: { + case kNormalTypeStrEndWithSubvecNeedsSemicolon: { MIRPragmaElement *etmp = mod->GetMemPool()->New(*mod); etmp->SetType(kValueType); std::string typeStr = signature.substr(start, end - start) + ";"; @@ -278,7 +278,7 @@ void MIRPragmaElement::Dump(int indent) const { if (i != num - 1) { LogInfo::MapleLogger() << "," << std::endl; } - i++; + ++i; } } LogInfo::MapleLogger() << "]"; @@ -306,7 +306,7 @@ void MIRPragmaElement::Dump(int indent) const { if (i != num - 1) { LogInfo::MapleLogger() << "," << std::endl; } - i++; + ++i; } } LogInfo::MapleLogger() << "]"; @@ -358,7 +358,7 @@ void MIRPragma::Dump(int indent) const { LogInfo::MapleLogger() << "\"" << typeEx->GetMplTypeName() << "\" "; } LogInfo::MapleLogger() << "<$" << GlobalTables::GetStrTable().GetStringFromStrIdx(gStrIdx) << "> {"; - for (size_t j = 0; j < elementVec.size(); j++) { + for (size_t j = 0; j < elementVec.size(); ++j) { LogInfo::MapleLogger() << std::endl; PrintIndentation(indent + 1); MIRPragmaElement *e = elementVec[j]; @@ -370,6 +370,5 @@ void MIRPragma::Dump(int indent) const { } } LogInfo::MapleLogger() << "}"; - return; } } // namespace maple diff --git a/src/maple_ir/src/opcode_info.cpp b/src/maple_ir/src/opcode_info.cpp index 9d997c4cd34b658b41b670760e90696967546161..cdfce72b3969f120dd641e56d91fb2824cb4023d 100644 --- a/src/maple_ir/src/opcode_info.cpp +++ b/src/maple_ir/src/opcode_info.cpp @@ -13,7 +13,6 @@ * See the Mulan PSL v1 for more details. */ #include "opcode_info.h" -#include "mir_nodes.h" namespace maple { OpcodeTable::OpcodeTable() { @@ -26,6 +25,5 @@ OpcodeTable::OpcodeTable() { #undef OPCODE table[OP_maydassign].name = "dassign"; // maydassign is printed dassign } - const OpcodeTable kOpcodeInfo; } // namespace maple diff --git a/src/maple_ir/src/parser.cpp b/src/maple_ir/src/parser.cpp index bbde07639806ec1ed9f07e6cc5f3917bacc32958..3d605f8b674e085ca7c594f5619de51ab93509c5 100644 --- a/src/maple_ir/src/parser.cpp +++ b/src/maple_ir/src/parser.cpp @@ -569,7 +569,7 @@ bool MIRParser::ParsePragma(MIRStructType &type) { Error("parsing pragma error type "); return false; } - p->PushElementVector(*e); + p->PushElementVector(e); tk = lexer.NextToken(); if (tk != kTkRbrace && tk != kTkComa) { Error("parsing pragma error syntax "); diff --git a/src/maple_me/include/bb.h b/src/maple_me/include/bb.h index 9eb8abe39294986d258bc62132289ecf4bd65cd7..e88213f52e0192c48ae04433c5b256f2ec73dab4 100644 --- a/src/maple_me/include/bb.h +++ b/src/maple_me/include/bb.h @@ -24,6 +24,7 @@ class OriginalSt; // circular dependency exists, no other choice class MeStmt; // circular dependency exists, no other choice class MeVarPhiNode; // circular dependency exists, no other choice class MeRegPhiNode; // circular dependency exists, no other choice +class PaiassignMeStmt; class IRMap; // circular dependency exists, no other choice enum BBKind { kBBUnknown, // uninitialized @@ -101,6 +102,7 @@ class BB { phiList(versAlloc->Adapter()), mevarPhiList(alloc->Adapter()), meregPhiList(alloc->Adapter()), + mevarPaiList(alloc->Adapter()), frequency(0), kind(kBBUnknown), attributes(0) { @@ -118,6 +120,7 @@ class BB { phiList(versAlloc->Adapter()), mevarPhiList(alloc->Adapter()), meregPhiList(alloc->Adapter()), + mevarPaiList(alloc->Adapter()), frequency(0), kind(kBBUnknown), attributes(0), @@ -207,6 +210,7 @@ class BB { void SetFirstMe(MeStmt *stmt); void SetLastMe(MeStmt *stmt); + MeStmt *GetLastMe(); bool IsInList(const MapleVector &bbList) const; bool IsPredBB(const BB &bb) const { // if this is a pred of bb return true; @@ -217,6 +221,7 @@ class BB { bool IsSuccBB(const BB &bb) const { return IsInList(bb.succ); } + void DumpMeBB(IRMap &irMap); void AddSuccBB(BB *succPara) { succ.push_back(succPara); @@ -246,6 +251,18 @@ class BB { RemoveBBFromSucc(succBB); } + void InsertPai(BB &bb, PaiassignMeStmt &s) { + if (mevarPaiList.find(&bb) == mevarPaiList.end()) { + std::vector tmp; + mevarPaiList[&bb] = tmp; + } + mevarPaiList[&bb].push_back(&s); + } + + MapleMap>& GetPaiList() { + return mevarPaiList; + } + bool IsMeStmtEmpty() const { return meStmtList.empty(); } @@ -264,7 +281,7 @@ class BB { void ReplaceMeStmt(MeStmt *stmt, MeStmt *newStmt); void DumpMeVarPhiList(IRMap *irMap); void DumpMeRegPhiList(IRMap *irMap); - + void DumpMeVarPaiList(IRMap *irMap); StmtNodes &GetStmtNodes() { return stmtNodeList; } @@ -387,6 +404,7 @@ class BB { MapleMap phiList; MapleMap mevarPhiList; MapleMap meregPhiList; + MapleMap> mevarPaiList; uint32 frequency; BBKind kind; uint32 attributes; diff --git a/src/maple_me/include/irmap.h b/src/maple_me/include/irmap.h index 0fd0c71af90d38768f1680979d301812bebe391f..30896ebfe817bbe10d44ae36b06a570ee3187f5d 100644 --- a/src/maple_me/include/irmap.h +++ b/src/maple_me/include/irmap.h @@ -41,9 +41,9 @@ class IRMap : public AnalysisResult { } virtual ~IRMap() = default; - virtual BB *GetBB(BBId id) = 0; virtual BB *GetBBForLabIdx(LabelIdx lidx, PUIdx pidx = 0) = 0; + Dominance &GetDominance() { return dom; } @@ -80,7 +80,6 @@ class IRMap : public AnalysisResult { DassignMeStmt *CreateDassignMeStmt(MeExpr&, MeExpr&, BB&); RegassignMeStmt *CreateRegassignMeStmt(MeExpr&, MeExpr&, BB&); void InsertMeStmtBefore(BB&, MeStmt&, MeStmt&); - MeRegPhiNode *CreateMeRegPhi(RegMeExpr&); MeVarPhiNode *CreateMeVarPhi(VarMeExpr&); @@ -109,18 +108,23 @@ class IRMap : public AnalysisResult { SSATab &GetSSATab() { return ssaTab; } + const SSATab &GetSSATab() const { return ssaTab; } + MIRModule &GetMIRModule() { return mirModule; } + const MIRModule &GetMIRModule() const { return mirModule; } + MapleAllocator &GetIRMapAlloc() { return irMapAlloc; } + MapleAllocator &GetTempAlloc() { return tempAlloc; } @@ -128,6 +132,7 @@ class IRMap : public AnalysisResult { int32 GetExprID() const { return exprID; } + void SetExprID(int32 id) { exprID = id; } @@ -135,12 +140,15 @@ class IRMap : public AnalysisResult { const MapleVector &GetVerst2MeExprTable() const { return verst2MeExprTable; } + MeExpr *GetVerst2MeExprTableItem(int i) { return verst2MeExprTable[i]; } + size_t GetVerst2MeExprTableSize() const { return verst2MeExprTable.size(); } + void PushBackVerst2MeExprTable(MeExpr *item) { verst2MeExprTable.push_back(item); } @@ -153,6 +161,7 @@ class IRMap : public AnalysisResult { void SetNeedAnotherPass(bool need) { needAnotherPass = need; } + bool GetNeedAnotherPass() const { return needAnotherPass; } @@ -160,6 +169,7 @@ class IRMap : public AnalysisResult { bool GetDumpStmtNum() const { return dumpStmtNum; } + void SetDumpStmtNum(bool num) { dumpStmtNum = num; } diff --git a/src/maple_me/include/me_ir.h b/src/maple_me/include/me_ir.h index 8138a33e70e7bbcaaba39e83bc6647834bfd755f..16fad687f245d4d224f583de1ec36d94d9b4b1a7 100644 --- a/src/maple_me/include/me_ir.h +++ b/src/maple_me/include/me_ir.h @@ -265,9 +265,11 @@ class VarMeExpr final : public MeExpr { const MapleVector &GetInferredTypeCandidates() const { return inferredTypeCandidates; } + void AddInferredTypeCandidate(TyIdx idx) { inferredTypeCandidates.push_back(idx); } + void ClearInferredTypeCandidates(TyIdx idx) { inferredTypeCandidates.clear(); } @@ -340,13 +342,17 @@ class VarMeExpr final : public MeExpr { class MeVarPhiNode { public: explicit MeVarPhiNode(MapleAllocator *alloc) - : lhs(nullptr), opnds(kOperandNumBinary, nullptr, alloc->Adapter()), isLive(true), defBB(nullptr) { + : lhs(nullptr), + opnds(kOperandNumBinary, nullptr, alloc->Adapter()), + isLive(true), + defBB(nullptr), + isPaiAdded(false) { opnds.pop_back(); opnds.pop_back(); } MeVarPhiNode(VarMeExpr *var, MapleAllocator *alloc) - : lhs(var), opnds(kOperandNumBinary, nullptr, alloc->Adapter()), isLive(true), defBB(nullptr) { + : lhs(var), opnds(kOperandNumBinary, nullptr, alloc->Adapter()), isLive(true), defBB(nullptr), isPaiAdded(false) { var->SetDefPhi(*this); var->SetDefBy(kDefByPhi); opnds.pop_back(); @@ -402,11 +408,20 @@ class MeVarPhiNode { lhs = value; } + void SetPaiAdded() { + isPaiAdded = true; + } + + bool IsPaiAdded() const { + return isPaiAdded; + } + private: VarMeExpr *lhs; MapleVector opnds; bool isLive; BB *defBB; // the bb that defines this phi + bool isPaiAdded; }; class RegMeExpr : public MeExpr { @@ -1028,7 +1043,7 @@ class NaryMeExpr : public MeExpr { opnds(alloc->Adapter()), boundCheck(meexpr.boundCheck) { InitBase(meexpr.GetOp(), meexpr.GetPrimType(), meexpr.GetNumOpnds()); - for (size_t i = 0; i < meexpr.opnds.size(); i++) { + for (size_t i = 0; i < meexpr.opnds.size(); ++i) { opnds.push_back(meexpr.opnds[i]); } } @@ -1086,9 +1101,10 @@ class NaryMeExpr : public MeExpr { uint32 GetHashIndex() const override { auto hashIdx = static_cast(GetOp()); constexpr uint32 kNaryHashShift = 3; - for (uint32 i = 0; i < GetNumOpnds(); i++) { + for (uint32 i = 0; i < GetNumOpnds(); ++i) { hashIdx += static_cast(opnds[i]->GetExprID()) << kNaryHashShift; } + hashIdx += static_cast(boundCheck); return hashIdx; } @@ -1429,7 +1445,56 @@ class MustDefMeNode { MeStmt *base; bool isLive; }; +class PaiassignMeStmt : public MeStmt { + public: + explicit PaiassignMeStmt(MapleAllocator *alloc) + : MeStmt(OP_paiassign), + rhs(nullptr), + lhs(nullptr), + generatedBy(nullptr), + isToken(false) {} + ~PaiassignMeStmt() = default; + + void SetLHS(VarMeExpr &l) { + lhs = &l; + } + + void SetRHS(VarMeExpr &r) { + rhs = &r; + } + + void SetGeneratedBy(MeStmt &m) { + generatedBy = &m; + } + + VarMeExpr *GetLHS() const { + return lhs; + } + + VarMeExpr *GetRHS() const { + return rhs; + } + MeStmt *GetGeneratedBy() { + return generatedBy; + } + + void SetIsToken(bool t) { + isToken = t; + } + + bool GetIsToken() { + return isToken; + } + + void Dump(IRMap*) const; + + private: + VarMeExpr *rhs; + VarMeExpr *lhs; + MeStmt *generatedBy; + bool isToken; +}; class DassignMeStmt : public MeStmt { public: DassignMeStmt(MapleAllocator *alloc, const StmtNode *stt) @@ -2612,9 +2677,7 @@ class DumpOptions { static bool simpleDump; static int dumpVsymNum; }; - } // namespace maple - #define LOAD_SAFE_CAST_FOR_ME_EXPR #define LOAD_SAFE_CAST_FOR_ME_STMT #include "me_safe_cast_traits.def" diff --git a/src/maple_me/include/union_find.h b/src/maple_me/include/union_find.h index f72ac1939238bbc3414a66c39f0c1ae9a2c116e2..478f21c35d3316a27452add397e6d40418cdbf99 100644 --- a/src/maple_me/include/union_find.h +++ b/src/maple_me/include/union_find.h @@ -50,7 +50,7 @@ class UnionFind { } void Reinit() { - for (unsigned int i = 0; i < num; i++) { + for (size_t i = 0; i < num; ++i) { id[i] = i; sz[i] = 1; } diff --git a/src/maple_me/src/bb.cpp b/src/maple_me/src/bb.cpp index fc4b72dc69b015072447b46f00e2ffd3830b5c7a..1f38bb6aff1522667640c4109b83a90a82ad4a50 100644 --- a/src/maple_me/src/bb.cpp +++ b/src/maple_me/src/bb.cpp @@ -285,6 +285,10 @@ void BB::SetLastMe(MeStmt *stmt) { meStmtList.update_back(stmt); } +MeStmt *BB::GetLastMe() { + return &meStmtList.back(); +} + void BB::RemoveMeStmt(MeStmt *meStmt) { CHECK_FATAL(meStmt != nullptr, "null ptr check"); meStmtList.erase(meStmt); @@ -335,6 +339,27 @@ void BB::ReplaceMeStmt(MeStmt *stmt, MeStmt *newStmt) { RemoveMeStmt(stmt); } +void BB::DumpMeBB(IRMap &irMap) { + for(MeStmt &meStmt : GetMeStmts()) { + meStmt.Dump(&irMap); + } +} + +void BB::DumpMeVarPaiList(IRMap *irMap) { + if (mevarPaiList.size() == 0) { + return; + } + std::cout << "<<<<<<<<<<<<<< PAI Node Start >>>>>>>>>>>>>>>>>>" << '\n'; + for (auto pair : mevarPaiList) { + BB *bb = pair.first; + std::cout << "Frome BB : " << bb->GetBBId() << '\n'; + for (uint32 j = 0; j < pair.second.size(); ++j) { + pair.second.at(j)->Dump(irMap); + } + } + std::cout << "<<<<<<<<<<<<<< PAI Node End >>>>>>>>>>>>>>>>>>>>" << '\n'; +} + void BB::DumpMeVarPhiList(IRMap *irMap) { int count = 0; for (auto phiIt = mevarPhiList.begin(); phiIt != mevarPhiList.end(); phiIt++) { @@ -354,11 +379,11 @@ void BB::DumpMeRegPhiList(IRMap *irMap) { } void SCCOfBBs::Dump() { - std::cout << "SCC " << id << " contains" << std::endl; + std::cout << "SCC " << id << " contains" << '\n'; for (BB *bb : bbs) { std::cout << "bb(" << bb->UintID() << ") "; } - std::cout << std::endl; + std::cout << '\n'; } bool SCCOfBBs::HasCycle() const { diff --git a/src/maple_me/src/irmap.cpp b/src/maple_me/src/irmap.cpp index 367d266faf98313b646ac07ea032baf8e28980d8..8739bbb49dec4848ec403db4e6cdb3804f00785a 100644 --- a/src/maple_me/src/irmap.cpp +++ b/src/maple_me/src/irmap.cpp @@ -43,7 +43,7 @@ void IRMap::BuildBB(BB &bb, std::vector &bbIRMapProcessed) { // travesal bb's dominated tree ASSERT(bbid < dom.GetDomChildrenSize(), " index out of range in IRMap::BuildBB"); const MapleSet &domChildren = dom.GetDomChildren(bbid); - for (auto bbit = domChildren.begin(); bbit != domChildren.end(); bbit++) { + for (auto bbit = domChildren.begin(); bbit != domChildren.end(); ++bbit) { BBId childbbid = *bbit; BuildBB(*GetBB(childbbid), bbIRMapProcessed); } @@ -527,7 +527,6 @@ void IRMap::BuildMuList(MapleMap &mayuseList, MapleMap(mirNode); VersionSt *verSt = addrofnode.GetSSAVar(); @@ -689,6 +688,7 @@ MeExpr *IRMap::ReplaceMeExprExpr(MeExpr &origExpr, MeExpr &meExpr, MeExpr &repEx bool IRMap::ReplaceMeExprStmtOpnd(uint32 opndID, MeStmt &meStmt, MeExpr &meExpr, MeExpr &repExpr) { MeExpr *opnd = meStmt.GetOpnd(opndID); + if (opnd == &meExpr) { meStmt.SetOpnd(opndID, &repExpr); return true; @@ -696,6 +696,7 @@ bool IRMap::ReplaceMeExprStmtOpnd(uint32 opndID, MeStmt &meStmt, MeExpr &meExpr, meStmt.SetOpnd(opndID, ReplaceMeExprExpr(*opnd, meExpr, repExpr)); return meStmt.GetOpnd(opndID) != opnd; } + return false; } diff --git a/src/maple_me/src/me_ir.cpp b/src/maple_me/src/me_ir.cpp index cc2191ecfd1e6d236109109d36858eefeb033104..72c301222cd33d5041ae4d88d1a5fd9966f772a1 100644 --- a/src/maple_me/src/me_ir.cpp +++ b/src/maple_me/src/me_ir.cpp @@ -54,7 +54,7 @@ bool MeExpr::IsTheSameWorkcand(const MeExpr &expr) const { void MeExpr::UpdateDepth() { uint8 maxDepth = 0; - for (int32 i = 0; i < GetNumOpnds(); i++) { + for (int32 i = 0; i < GetNumOpnds(); ++i) { MeExpr *opnd = GetOpnd(i); if (opnd == nullptr) { continue; @@ -176,7 +176,7 @@ bool MeExpr::CouldThrowException() const { return true; } } - for (int32 i = 0; i < GetNumOpnds(); i++) { + for (int32 i = 0; i < GetNumOpnds(); ++i) { if (GetOpnd(i)->CouldThrowException()) { return true; } @@ -257,7 +257,7 @@ bool NaryMeExpr::IsUseSameSymbol(const MeExpr &expr) const { if (opnds.size() != naryMeExpr.GetOpnds().size()) { return false; } - for (size_t i = 0; i < opnds.size(); i++) { + for (size_t i = 0; i < opnds.size(); ++i) { if (!opnds[i]->IsUseSameSymbol(*naryMeExpr.GetOpnd(i))) { return false; } @@ -266,7 +266,7 @@ bool NaryMeExpr::IsUseSameSymbol(const MeExpr &expr) const { } bool MeExpr::IsAllOpndsIdentical(const MeExpr &meExpr) const { - for (uint8 i = 0; i < GetNumOpnds(); i++) { + for (uint8 i = 0; i < GetNumOpnds(); ++i) { if (GetOpnd(i)->GetExprID() != meExpr.GetOpnd(i)->GetExprID()) { return false; } @@ -475,7 +475,7 @@ bool OpMeExpr::IsUseSameSymbol(const MeExpr &expr) const { return false; } auto &opMeExpr = static_cast(expr); - for (uint32 i = 0; i < kOperandNumTernary; i++) { + for (uint32 i = 0; i < kOperandNumTernary; ++i) { if (opnds[i]) { if (!opMeExpr.opnds[i]) { return false; @@ -645,11 +645,14 @@ MeExpr *AddroffuncMeExpr::GetIdenticalExpr(MeExpr &expr) const { } void MeVarPhiNode::Dump(IRMap *irMap) const { + if (isPaiAdded) { + LogInfo::MapleLogger() << "PAI_ADD VAR:"; + } LogInfo::MapleLogger() << "VAR:"; irMap->GetSSATab().GetOriginalStFromID(lhs->GetOStIdx())->Dump(); LogInfo::MapleLogger() << " mx" << lhs->GetExprID(); LogInfo::MapleLogger() << " = MEPHI{"; - for (size_t i = 0; i < opnds.size(); i++) { + for (size_t i = 0; i < opnds.size(); ++i) { LogInfo::MapleLogger() << "mx" << opnds[i]->GetExprID(); if (i != opnds.size() - 1) { LogInfo::MapleLogger() << ","; @@ -672,7 +675,7 @@ void MeRegPhiNode::Dump(IRMap *irMap) const { << ")"; LogInfo::MapleLogger() << " mx" << lhs->GetExprID(); LogInfo::MapleLogger() << " = MEPHI{"; - for (size_t i = 0; i < opnds.size(); i++) { + for (size_t i = 0; i < opnds.size(); ++i) { LogInfo::MapleLogger() << "mx" << opnds[i]->GetExprID(); if (i != opnds.size() - 1) { LogInfo::MapleLogger() << ","; @@ -815,7 +818,7 @@ void NaryMeExpr::Dump(IRMap *irMap, int32 indent) const { LogInfo::MapleLogger() << "INTRINOPWTY[" << intrinsic << "]"; } LogInfo::MapleLogger() << " mx" << GetExprID() << '\n'; - for (int32 i = 0; i < GetNumOpnds(); i++) { + for (int32 i = 0; i < GetNumOpnds(); ++i) { PrintIndentation(indent + 1); LogInfo::MapleLogger() << "opnd[" << i << "] = "; opnds[i]->Dump(irMap, indent + 1); @@ -931,6 +934,16 @@ MeStmt *MeStmt::GetNextMeStmt() const { return nextMeStmt; } +void PaiassignMeStmt::Dump(IRMap *irMap) const { + LogInfo::MapleLogger() << "||MEIR PAI|| " << kOpcodeInfo.GetTableItemAt(GetOp()).name << " "; + lhs->Dump(irMap); + LogInfo::MapleLogger() << std::endl; + PrintIndentation(kDefaultPrintIndentNum); + LogInfo::MapleLogger() << "rhs = "; + rhs->Dump(irMap, kDefaultPrintIndentNum); + LogInfo::MapleLogger() << std::endl; +} + void DassignMeStmt::Dump(IRMap *irMap) const { LogInfo::MapleLogger() << "||MEIR|| " << kOpcodeInfo.GetTableItemAt(GetOp()).name << " "; lhs->Dump(irMap); @@ -1001,7 +1014,7 @@ void DumpMuList(IRMap *irMap, const MapleMap &muList, int32 } else { LogInfo::MapleLogger() << "mx" << (*it).second->GetExprID(); } - it++; + ++it; if (it == muList.end()) { break; } else { @@ -1057,7 +1070,7 @@ void IassignMeStmt::Dump(IRMap *irMap) const { } void NaryMeStmt::DumpOpnds(IRMap *irMap) const { - for (size_t i = 0; i < opnds.size(); i++) { + for (size_t i = 0; i < opnds.size(); ++i) { PrintIndentation(kDefaultPrintIndentNum); LogInfo::MapleLogger() << "opnd[" << i << "] = "; opnds[i]->Dump(irMap, kDefaultPrintIndentNum); @@ -1072,7 +1085,7 @@ void NaryMeStmt::Dump(IRMap *irMap) const { void AssignedPart::DumpAssignedPart(IRMap *irMap) const { LogInfo::MapleLogger() << " assignedpart: {"; - for (auto it = mustDefList.begin(); it != mustDefList.end(); it++) { + for (auto it = mustDefList.begin(); it != mustDefList.end(); ++it) { const MeExpr *lhsvar = (*it).GetLHS(); lhsvar->Dump(irMap); } @@ -1282,7 +1295,7 @@ MeExpr *MeExpr::FindSymAppearance(OStIdx oidx) { } return nullptr; } - for (uint8 i = 0; i < GetNumOpnds(); i++) { + for (uint8 i = 0; i < GetNumOpnds(); ++i) { MeExpr *retx = GetOpnd(i)->FindSymAppearance(oidx); if (retx != nullptr) { return retx; @@ -1299,7 +1312,7 @@ bool MeExpr::HasIvar() const { if (meOp == kMeOpIvar) { return true; } - for (uint8 i = 0; i < GetNumOpnds(); i++) { + for (uint8 i = 0; i < GetNumOpnds(); ++i) { ASSERT(GetOpnd(i) != nullptr, "null ptr check"); if (GetOpnd(i)->HasIvar()) { return true; @@ -1348,7 +1361,7 @@ MapleMap *GenericGetChiListFromVarMeExprInner(VarMeExpr &exp if (expr.GetDefBy() == kDefByPhi) { MeVarPhiNode &phime = expr.GetDefPhi(); MapleVector &phiopnds = phime.GetOpnds(); - for (auto it = phiopnds.begin(); it != phiopnds.end(); it++) { + for (auto it = phiopnds.begin(); it != phiopnds.end(); ++it) { VarMeExpr *meExpr = *it; MapleMap *chiList = GenericGetChiListFromVarMeExprInner(*meExpr, visited); if (chiList != nullptr) { diff --git a/src/maple_me/src/me_irmap.cpp b/src/maple_me/src/me_irmap.cpp index ec03a0ed1e718652fd72d8a0b45ee945e195a811..fab5ac9d3ed14ce3cd1e9aa508d6fa84f5cc5fb0 100644 --- a/src/maple_me/src/me_irmap.cpp +++ b/src/maple_me/src/me_irmap.cpp @@ -39,6 +39,7 @@ void MeIRMap::Dump() { auto *bb = *bIt; bb->DumpHeader(&GetMIRModule()); LogInfo::MapleLogger() << "frequency : " << bb->GetFrequency() << "\n"; + bb->DumpMeVarPaiList(this); bb->DumpMeVarPhiList(this); bb->DumpMeRegPhiList(this); int i = 0; @@ -46,7 +47,9 @@ void MeIRMap::Dump() { if (GetDumpStmtNum()) { LogInfo::MapleLogger() << "(" << i++ << ") "; } - meStmt.EmitStmt(GetSSATab()).Dump(GetMIRModule(), 0); + if (meStmt.GetOp() != OP_paiassign) { + meStmt.EmitStmt(GetSSATab()).Dump(GetMIRModule(), 0); + } meStmt.Dump(this); } } @@ -109,7 +112,7 @@ AnalysisResult *MeDoIRMap::Run(MeFunction *func, MeFuncResultMgr *funcResMgr, Mo // delete versionst_table #if MIR_FEATURE_FULL // nullify all references to the versionst_table contents - for (size_t i = 0; i < func->GetMeSSATab()->GetVersionStTable().GetVersionStVectorSize(); i++) { + for (size_t i = 0; i < func->GetMeSSATab()->GetVersionStTable().GetVersionStVectorSize(); ++i) { func->GetMeSSATab()->GetVersionStTable().SetVersionStVectorItem(i, nullptr); } // clear BB's phi_list_ which uses versionst; nullify first_stmt_, last_stmt_