@@ -1286,6 +1286,9 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
1286
1286
}
1287
1287
OS << " };\n " ;
1288
1288
1289
+ OS << " \n static const TargetRegisterClass *const "
1290
+ << " NullRegClasses[] = { nullptr };\n\n " ;
1291
+
1289
1292
// Emit register class bit mask tables. The first bit mask emitted for a
1290
1293
// register class, RC, is the set of sub-classes, including RC itself.
1291
1294
//
@@ -1337,18 +1340,19 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
1337
1340
SuperRegIdxSeqs.emit (OS, printSubRegIndex);
1338
1341
OS << " };\n\n " ;
1339
1342
1340
- // Emit super-class lists.
1343
+ // Emit NULL terminated super-class lists.
1341
1344
for (const auto &RC : RegisterClasses) {
1342
1345
ArrayRef<CodeGenRegisterClass *> Supers = RC.getSuperClasses ();
1343
1346
1344
- // Skip classes without supers.
1347
+ // Skip classes without supers. We can reuse NullRegClasses.
1345
1348
if (Supers.empty ())
1346
1349
continue ;
1347
1350
1348
- OS << " static unsigned const " << RC.getName () << " Superclasses[] = {\n " ;
1351
+ OS << " static const TargetRegisterClass *const " << RC.getName ()
1352
+ << " Superclasses[] = {\n " ;
1349
1353
for (const auto *Super : Supers)
1350
- OS << " " << Super->getQualifiedIdName () << " ,\n " ;
1351
- OS << " };\n\n " ;
1354
+ OS << " & " << Super->getQualifiedName () << " RegClass ,\n " ;
1355
+ OS << " nullptr \n };\n\n " ;
1352
1356
}
1353
1357
1354
1358
// Emit methods.
@@ -1402,10 +1406,9 @@ void RegisterInfoEmitter::runTargetDesc(raw_ostream &OS) {
1402
1406
<< (RC.CoveredBySubRegs ? " true" : " false" )
1403
1407
<< " , /* CoveredBySubRegs */\n " ;
1404
1408
if (RC.getSuperClasses ().empty ())
1405
- OS << " nullptr, " ;
1409
+ OS << " NullRegClasses, \n " ;
1406
1410
else
1407
- OS << RC.getName () << " Superclasses, " ;
1408
- OS << RC.getSuperClasses ().size () << " ,\n " ;
1411
+ OS << RC.getName () << " Superclasses,\n " ;
1409
1412
if (RC.AltOrderSelect .empty ())
1410
1413
OS << " nullptr\n " ;
1411
1414
else
0 commit comments