3030#include " llvm/Support/raw_ostream.h"
3131#include " llvm/TableGen/Error.h"
3232#include " llvm/TableGen/Record.h"
33+ #include " llvm/TableGen/TGTimer.h"
3334#include < algorithm>
3435#include < cassert>
3536#include < cstdint>
@@ -1130,7 +1131,7 @@ CodeGenRegisterCategory::CodeGenRegisterCategory(CodeGenRegBank &RegBank,
11301131
11311132CodeGenRegBank::CodeGenRegBank (const RecordKeeper &Records,
11321133 const CodeGenHwModes &Modes)
1133- : CGH(Modes) {
1134+ : Records(Records), CGH(Modes) {
11341135 // Configure register Sets to understand register classes and tuples.
11351136 Sets.addFieldExpander (" RegisterClass" , " MemberList" );
11361137 Sets.addFieldExpander (" CalleeSavedRegs" , " SaveList" );
@@ -2202,7 +2203,9 @@ void CodeGenRegBank::computeDerivedInfo() {
22022203
22032204 // Compute a weight for each register unit created during getSubRegs.
22042205 // This may create adopted register units (with unit # >= NumNativeRegUnits).
2206+ Records.getTimer ().startTimer (" Compute reg unit weights" );
22052207 computeRegUnitWeights ();
2208+ Records.getTimer ().stopTimer ();
22062209
22072210 // Compute a unique set of RegUnitSets. One for each RegClass and inferred
22082211 // supersets for the union of overlapping sets.
@@ -2446,6 +2449,8 @@ void CodeGenRegBank::computeInferredRegisterClasses() {
24462449 // and assigned EnumValues yet. That means getSubClasses(),
24472450 // getSuperClasses(), and hasSubClass() functions are defunct.
24482451
2452+ Records.getTimer ().startTimer (" Compute inferred register classes" );
2453+
24492454 // Use one-before-the-end so it doesn't move forward when new elements are
24502455 // added.
24512456 auto FirstNewRC = std::prev (RegClasses.end ());
@@ -2481,6 +2486,8 @@ void CodeGenRegBank::computeInferredRegisterClasses() {
24812486 }
24822487 }
24832488
2489+ Records.getTimer ().startTimer (" Extend super-register classes" );
2490+
24842491 // Compute the transitive closure for super-register classes.
24852492 //
24862493 // By iterating over sub-register indices in topological order, we only ever
@@ -2491,6 +2498,8 @@ void CodeGenRegBank::computeInferredRegisterClasses() {
24912498 for (CodeGenRegisterClass &SubRC : RegClasses)
24922499 SubRC.extendSuperRegClasses (SubIdx);
24932500 }
2501+
2502+ Records.getTimer ().stopTimer ();
24942503}
24952504
24962505// / getRegisterClassForRegister - Find the register class that contains the
0 commit comments