diff --git a/bolt/include/bolt/Core/DynoStats.h b/bolt/include/bolt/Core/DynoStats.h --- a/bolt/include/bolt/Core/DynoStats.h +++ b/bolt/include/bolt/Core/DynoStats.h @@ -28,8 +28,7 @@ /// Class encapsulating runtime statistics about an execution unit. class DynoStats { -#define DYNO_STATS\ - D(FIRST_DYNO_STAT, "", Fn)\ +#define REAL_DYNO_STATS\ D(FORWARD_COND_BRANCHES, "executed forward branches", Fn)\ D(FORWARD_COND_BRANCHES_TAKEN, "taken forward branches", Fn)\ D(BACKWARD_COND_BRANCHES, "executed backward branches", Fn)\ @@ -53,7 +52,11 @@ Fadd(FORWARD_COND_BRANCHES_TAKEN, BACKWARD_COND_BRANCHES_TAKEN))\ D(ALL_CONDITIONAL, "all conditional branches",\ Fadd(FORWARD_COND_BRANCHES, BACKWARD_COND_BRANCHES))\ - D(VENEER_CALLS_AARCH64, "linker-inserted veneer calls", Fn)\ + D(VENEER_CALLS_AARCH64, "linker-inserted veneer calls", Fn) + +#define DYNO_STATS\ + D(FIRST_DYNO_STAT, "", 0)\ + REAL_DYNO_STATS\ D(LAST_DYNO_STAT, "", 0) public: diff --git a/bolt/lib/Passes/BinaryPasses.cpp b/bolt/lib/Passes/BinaryPasses.cpp --- a/bolt/lib/Passes/BinaryPasses.cpp +++ b/bolt/lib/Passes/BinaryPasses.cpp @@ -29,10 +29,8 @@ namespace { const char *dynoStatsOptName(const bolt::DynoStats::Category C) { - if (C == bolt::DynoStats::FIRST_DYNO_STAT) - return "none"; - else if (C == bolt::DynoStats::LAST_DYNO_STAT) - return "all"; + assert(C > bolt::DynoStats::FIRST_DYNO_STAT && + C < DynoStats::LAST_DYNO_STAT && "Unexpected dyno stat category."); static std::string OptNames[bolt::DynoStats::LAST_DYNO_STAT + 1]; @@ -43,15 +41,6 @@ return OptNames[C].c_str(); } -const char *dynoStatsOptDesc(const bolt::DynoStats::Category C) { - if (C == bolt::DynoStats::FIRST_DYNO_STAT) - return "unsorted"; - else if (C == bolt::DynoStats::LAST_DYNO_STAT) - return "sorted by all stats"; - - return bolt::DynoStats::Description(C); -} - } namespace opts { @@ -128,13 +117,13 @@ cl::desc("print functions sorted by order of dyno stats"), cl::value_desc("key1,key2,key3,..."), cl::values( -#define D(name, ...) \ +#define D(name, description, ...) \ clEnumValN(bolt::DynoStats::name, \ dynoStatsOptName(bolt::DynoStats::name), \ - dynoStatsOptDesc(bolt::DynoStats::name)), - DYNO_STATS + description), + REAL_DYNO_STATS #undef D - clEnumValN(0xffff, ".", ".") + clEnumValN(bolt::DynoStats::LAST_DYNO_STAT, "all", "sorted by all names") ), cl::ZeroOrMore, cl::cat(BoltOptCategory)); @@ -1451,9 +1440,7 @@ } } - if (!opts::PrintSortedBy.empty() && - !llvm::is_contained(opts::PrintSortedBy, DynoStats::FIRST_DYNO_STAT)) { - + if (!opts::PrintSortedBy.empty()) { std::vector Functions; std::map Stats;