diff --git a/bolt/lib/Core/MCPlusBuilder.cpp b/bolt/lib/Core/MCPlusBuilder.cpp --- a/bolt/lib/Core/MCPlusBuilder.cpp +++ b/bolt/lib/Core/MCPlusBuilder.cpp @@ -494,16 +494,13 @@ // SizeMap caches a mapping of registers to their sizes static std::vector SizeMap; - if (SizeMap.size() > 0) { + if (SizeMap.size() > 0) return SizeMap[Reg]; - } + SizeMap = std::vector(RegInfo->getNumRegs()); // Build size map - for (auto I = RegInfo->regclass_begin(), E = RegInfo->regclass_end(); I != E; - ++I) { - for (MCPhysReg Reg : *I) - SizeMap[Reg] = I->getSizeInBits() / 8; - } + for (const MCRegisterClass &RC : RegInfo->regclasses()) + for_each(RC, [&](MCPhysReg Reg) { SizeMap[Reg] = RC.getSizeInBits() / 8; }); return SizeMap[Reg]; }