@@ -1286,9 +1286,6 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
12861286 }
12871287 OS << " };\n " ;
12881288
1289- OS << " \n static const TargetRegisterClass *const "
1290- << " NullRegClasses[] = { nullptr };\n\n " ;
1291-
12921289 // Emit register class bit mask tables. The first bit mask emitted for a
12931290 // register class, RC, is the set of sub-classes, including RC itself.
12941291 //
@@ -1340,19 +1337,18 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
13401337 SuperRegIdxSeqs.emit (OS, printSubRegIndex);
13411338 OS << " };\n\n " ;
13421339
1343- // Emit NULL terminated super-class lists.
1340+ // Emit super-class lists.
13441341 for (const auto &RC : RegisterClasses) {
13451342 ArrayRef<CodeGenRegisterClass *> Supers = RC.getSuperClasses ();
13461343
1347- // Skip classes without supers. We can reuse NullRegClasses.
1344+ // Skip classes without supers.
13481345 if (Supers.empty ())
13491346 continue ;
13501347
1351- OS << " static const TargetRegisterClass *const " << RC.getName ()
1352- << " Superclasses[] = {\n " ;
1348+ OS << " static unsigned const " << RC.getName () << " Superclasses[] = {\n " ;
13531349 for (const auto *Super : Supers)
1354- OS << " & " << Super->getQualifiedName () << " RegClass ,\n " ;
1355- OS << " nullptr \n };\n\n " ;
1350+ OS << " " << Super->getQualifiedIdName () << " ,\n " ;
1351+ OS << " };\n\n " ;
13561352 }
13571353
13581354 // Emit methods.
@@ -1406,9 +1402,10 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
14061402 << (RC.CoveredBySubRegs ? " true" : " false" )
14071403 << " , /* CoveredBySubRegs */\n " ;
14081404 if (RC.getSuperClasses ().empty ())
1409- OS << " NullRegClasses, \n " ;
1405+ OS << " nullptr, " ;
14101406 else
1411- OS << RC.getName () << " Superclasses,\n " ;
1407+ OS << RC.getName () << " Superclasses, " ;
1408+ OS << RC.getSuperClasses ().size () << " ,\n " ;
14121409 if (RC.AltOrderSelect .empty ())
14131410 OS << " nullptr\n " ;
14141411 else
0 commit comments