Skip to content

Commit b784502

Browse files
committed
[TableGen][GISel] Delete unused Src arguments
The last uses were removed in #120332 and #120426. When emitting renderers, we shouldn't look at the source DAG at all. The required information is provided by the destination DAG and by the instructions referenced in that DAG. Sometimes, we do want to know if a leaf was referenced in the source DAG; this can be checked by calling `RuleMatcher::hasOperand`. Any other use of the source DAG when emitting renderers is likely an error.
1 parent d375041 commit b784502

File tree

1 file changed

+32
-32
lines changed

1 file changed

+32
-32
lines changed

llvm/utils/TableGen/GlobalISelEmitter.cpp

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -393,28 +393,30 @@ class GlobalISelEmitter final : public GlobalISelMatchTableExecutorEmitter {
393393
bool OperandIsAPointer, bool OperandIsImmArg,
394394
unsigned OpIdx, unsigned &TempOpIdx);
395395

396-
Expected<BuildMIAction &> createAndImportInstructionRenderer(
397-
RuleMatcher &M, InstructionMatcher &InsnMatcher,
398-
const TreePatternNode &Src, const TreePatternNode &Dst);
396+
Expected<BuildMIAction &>
397+
createAndImportInstructionRenderer(RuleMatcher &M,
398+
InstructionMatcher &InsnMatcher,
399+
const TreePatternNode &Dst);
399400
Expected<action_iterator> createAndImportSubInstructionRenderer(
400401
action_iterator InsertPt, RuleMatcher &M, const TreePatternNode &Dst,
401-
const TreePatternNode &Src, unsigned TempReg);
402+
unsigned TempReg);
402403
Expected<action_iterator>
403404
createInstructionRenderer(action_iterator InsertPt, RuleMatcher &M,
404405
const TreePatternNode &Dst);
405406

406407
Expected<action_iterator>
407408
importExplicitDefRenderers(action_iterator InsertPt, RuleMatcher &M,
408409
BuildMIAction &DstMIBuilder,
409-
const TreePatternNode &Src,
410410
const TreePatternNode &Dst, unsigned Start = 0);
411411

412-
Expected<action_iterator> importExplicitUseRenderers(
413-
action_iterator InsertPt, RuleMatcher &M, BuildMIAction &DstMIBuilder,
414-
const llvm::TreePatternNode &Dst, const TreePatternNode &Src);
415-
Expected<action_iterator> importExplicitUseRenderer(
416-
action_iterator InsertPt, RuleMatcher &Rule, BuildMIAction &DstMIBuilder,
417-
const TreePatternNode &DstChild, const TreePatternNode &Src);
412+
Expected<action_iterator>
413+
importExplicitUseRenderers(action_iterator InsertPt, RuleMatcher &M,
414+
BuildMIAction &DstMIBuilder,
415+
const TreePatternNode &Dst);
416+
Expected<action_iterator>
417+
importExplicitUseRenderer(action_iterator InsertPt, RuleMatcher &Rule,
418+
BuildMIAction &DstMIBuilder,
419+
const TreePatternNode &DstChild);
418420
Error importDefaultOperandRenderers(action_iterator InsertPt, RuleMatcher &M,
419421
BuildMIAction &DstMIBuilder,
420422
const DAGDefaultOperand &DefaultOp) const;
@@ -1196,7 +1198,7 @@ Error GlobalISelEmitter::importChildMatcher(
11961198

11971199
Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer(
11981200
action_iterator InsertPt, RuleMatcher &Rule, BuildMIAction &DstMIBuilder,
1199-
const TreePatternNode &DstChild, const TreePatternNode &Src) {
1201+
const TreePatternNode &DstChild) {
12001202

12011203
const auto &SubOperand = Rule.getComplexSubOperand(DstChild.getName());
12021204
if (SubOperand) {
@@ -1272,7 +1274,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer(
12721274
DstMIBuilder.addRenderer<TempRegRenderer>(TempRegID);
12731275

12741276
auto InsertPtOrError = createAndImportSubInstructionRenderer(
1275-
++InsertPt, Rule, DstChild, Src, TempRegID);
1277+
++InsertPt, Rule, DstChild, TempRegID);
12761278
if (auto Error = InsertPtOrError.takeError())
12771279
return std::move(Error);
12781280
return InsertPtOrError.get();
@@ -1357,7 +1359,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer(
13571359
}
13581360

13591361
Expected<BuildMIAction &> GlobalISelEmitter::createAndImportInstructionRenderer(
1360-
RuleMatcher &M, InstructionMatcher &InsnMatcher, const TreePatternNode &Src,
1362+
RuleMatcher &M, InstructionMatcher &InsnMatcher,
13611363
const TreePatternNode &Dst) {
13621364
auto InsertPtOrError = createInstructionRenderer(M.actions_end(), M, Dst);
13631365
if (auto Error = InsertPtOrError.takeError())
@@ -1377,23 +1379,21 @@ Expected<BuildMIAction &> GlobalISelEmitter::createAndImportInstructionRenderer(
13771379
CopyToPhysRegMIBuilder.addRenderer<CopyPhysRegRenderer>(PhysInput.first);
13781380
}
13791381

1380-
if (auto Error =
1381-
importExplicitDefRenderers(InsertPt, M, DstMIBuilder, Src, Dst)
1382-
.takeError())
1382+
if (auto Error = importExplicitDefRenderers(InsertPt, M, DstMIBuilder, Dst)
1383+
.takeError())
13831384
return std::move(Error);
13841385

1385-
if (auto Error =
1386-
importExplicitUseRenderers(InsertPt, M, DstMIBuilder, Dst, Src)
1387-
.takeError())
1386+
if (auto Error = importExplicitUseRenderers(InsertPt, M, DstMIBuilder, Dst)
1387+
.takeError())
13881388
return std::move(Error);
13891389

13901390
return DstMIBuilder;
13911391
}
13921392

13931393
Expected<action_iterator>
13941394
GlobalISelEmitter::createAndImportSubInstructionRenderer(
1395-
const action_iterator InsertPt, RuleMatcher &M, const TreePatternNode &Dst,
1396-
const TreePatternNode &Src, unsigned TempRegID) {
1395+
action_iterator InsertPt, RuleMatcher &M, const TreePatternNode &Dst,
1396+
unsigned TempRegID) {
13971397
auto InsertPtOrError = createInstructionRenderer(InsertPt, M, Dst);
13981398

13991399
// TODO: Assert there's exactly one result.
@@ -1408,13 +1408,13 @@ GlobalISelEmitter::createAndImportSubInstructionRenderer(
14081408
DstMIBuilder.addRenderer<TempRegRenderer>(TempRegID, true);
14091409

14101410
// Handle additional (ignored) results.
1411-
InsertPtOrError = importExplicitDefRenderers(
1412-
std::prev(*InsertPtOrError), M, DstMIBuilder, Src, Dst, /*Start=*/1);
1411+
InsertPtOrError = importExplicitDefRenderers(std::prev(*InsertPtOrError), M,
1412+
DstMIBuilder, Dst, /*Start=*/1);
14131413
if (auto Error = InsertPtOrError.takeError())
14141414
return std::move(Error);
14151415

1416-
InsertPtOrError = importExplicitUseRenderers(InsertPtOrError.get(), M,
1417-
DstMIBuilder, Dst, Src);
1416+
InsertPtOrError =
1417+
importExplicitUseRenderers(InsertPtOrError.get(), M, DstMIBuilder, Dst);
14181418
if (auto Error = InsertPtOrError.takeError())
14191419
return std::move(Error);
14201420

@@ -1448,7 +1448,7 @@ Expected<action_iterator> GlobalISelEmitter::createInstructionRenderer(
14481448

14491449
Expected<action_iterator> GlobalISelEmitter::importExplicitDefRenderers(
14501450
action_iterator InsertPt, RuleMatcher &M, BuildMIAction &DstMIBuilder,
1451-
const TreePatternNode &Src, const TreePatternNode &Dst, unsigned Start) {
1451+
const TreePatternNode &Dst, unsigned Start) {
14521452
const CodeGenInstruction *DstI = DstMIBuilder.getCGI();
14531453

14541454
// Some instructions have multiple defs, but are missing a type entry
@@ -1497,7 +1497,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitDefRenderers(
14971497

14981498
Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
14991499
action_iterator InsertPt, RuleMatcher &M, BuildMIAction &DstMIBuilder,
1500-
const llvm::TreePatternNode &Dst, const llvm::TreePatternNode &Src) {
1500+
const TreePatternNode &Dst) {
15011501
const CodeGenInstruction *DstI = DstMIBuilder.getCGI();
15021502
CodeGenInstruction *OrigDstI = &Target.getInstruction(Dst.getOperator());
15031503

@@ -1527,7 +1527,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
15271527
TempRegID);
15281528

15291529
auto InsertPtOrError = createAndImportSubInstructionRenderer(
1530-
++InsertPt, M, ValChild, Src, TempRegID);
1530+
++InsertPt, M, ValChild, TempRegID);
15311531
if (auto Error = InsertPtOrError.takeError())
15321532
return std::move(Error);
15331533

@@ -1585,7 +1585,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
15851585
CodeGenSubRegIndex *SubIdx = CGRegs.getSubRegIdx(SubRegInit->getDef());
15861586

15871587
auto InsertPtOrError =
1588-
importExplicitUseRenderer(InsertPt, M, DstMIBuilder, ValChild, Src);
1588+
importExplicitUseRenderer(InsertPt, M, DstMIBuilder, ValChild);
15891589
if (auto Error = InsertPtOrError.takeError())
15901590
return std::move(Error);
15911591
InsertPt = InsertPtOrError.get();
@@ -1654,7 +1654,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
16541654
}
16551655

16561656
auto InsertPtOrError = importExplicitUseRenderer(InsertPt, M, DstMIBuilder,
1657-
Dst.getChild(Child), Src);
1657+
Dst.getChild(Child));
16581658
if (auto Error = InsertPtOrError.takeError())
16591659
return std::move(Error);
16601660
InsertPt = InsertPtOrError.get();
@@ -2135,7 +2135,7 @@ Expected<RuleMatcher> GlobalISelEmitter::runOnPattern(const PatternToMatch &P) {
21352135
}
21362136

21372137
auto DstMIBuilderOrError =
2138-
createAndImportInstructionRenderer(M, InsnMatcher, Src, Dst);
2138+
createAndImportInstructionRenderer(M, InsnMatcher, Dst);
21392139
if (auto Error = DstMIBuilderOrError.takeError())
21402140
return std::move(Error);
21412141
BuildMIAction &DstMIBuilder = DstMIBuilderOrError.get();

0 commit comments

Comments
 (0)