aboutsummaryrefslogtreecommitdiff
path: root/backend/unittests/Target/DescriptionGeneratorTest.cpp
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-09 04:40:17 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-09 04:40:17 +0800
commite5fdceb9b869f010a2a75638fd38aaf1867f3008 (patch)
tree023d3e18960956f5ce369739c68aaa2a3e8400e7 /backend/unittests/Target/DescriptionGeneratorTest.cpp
parent6c7cecc81a4c7e06e26027e21edd2cfd95a37a0b (diff)
downloadrcc-project-e5fdceb9b869f010a2a75638fd38aaf1867f3008.tar.gz
rcc-project-e5fdceb9b869f010a2a75638fd38aaf1867f3008.tar.xz
[CodeGen] Complete register allocation infrastructure
Diffstat (limited to 'backend/unittests/Target/DescriptionGeneratorTest.cpp')
-rw-r--r--backend/unittests/Target/DescriptionGeneratorTest.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/backend/unittests/Target/DescriptionGeneratorTest.cpp b/backend/unittests/Target/DescriptionGeneratorTest.cpp
index d41d2d4..0f8d1e9 100644
--- a/backend/unittests/Target/DescriptionGeneratorTest.cpp
+++ b/backend/unittests/Target/DescriptionGeneratorTest.cpp
@@ -78,27 +78,28 @@ void testGeneration(TestContext &Context) {
}
Context.expect(First.succeeded() && Second.succeeded(),
"a complete restricted target description must generate successfully");
- if (!First.succeeded() || !Second.succeeded())
+ if (!First.succeeded() || !Second.succeeded() || !First.Output || !Second.Output)
return;
+ const auto &FirstOutput = First.Output.value();
+ const auto &SecondOutput = Second.Output.value();
- Context.expect(First.Output->RegisterHeader == Second.Output->RegisterHeader &&
- First.Output->InstructionHeader == Second.Output->InstructionHeader &&
- First.Output->TargetTables == Second.Output->TargetTables,
+ Context.expect(FirstOutput.RegisterHeader == SecondOutput.RegisterHeader &&
+ FirstOutput.InstructionHeader == SecondOutput.InstructionHeader &&
+ FirstOutput.TargetTables == SecondOutput.TargetTables,
"target description generation must be deterministic");
Context.expect(
- First.Output->RegisterHeader.find("enum class PhysicalRegisterID") != std::string::npos &&
- First.Output->RegisterHeader.find("R1 = 1") != std::string::npos &&
- First.Output->InstructionHeader.find("enum class InstructionOpcode") !=
+ FirstOutput.RegisterHeader.find("enum class PhysicalRegisterID") != std::string::npos &&
+ FirstOutput.RegisterHeader.find("R1 = 1") != std::string::npos &&
+ FirstOutput.InstructionHeader.find("enum class InstructionOpcode") != std::string::npos &&
+ FirstOutput.InstructionHeader.find("LOAD_IMM = 1024") != std::string::npos &&
+ FirstOutput.TargetTables.find("appendGeneratedRegisterInfo") != std::string::npos &&
+ FirstOutput.TargetTables.find("appendGeneratedInstructionInfo") != std::string::npos &&
+ FirstOutput.TargetTables.find("GeneratedAssemblyInstructions") != std::string::npos &&
+ FirstOutput.TargetTables.find("Description.DirectOperandFlagMask = 31") !=
std::string::npos &&
- First.Output->InstructionHeader.find("LOAD_IMM = 1024") != std::string::npos &&
- First.Output->TargetTables.find("appendGeneratedRegisterInfo") != std::string::npos &&
- First.Output->TargetTables.find("appendGeneratedInstructionInfo") != std::string::npos &&
- First.Output->TargetTables.find("GeneratedAssemblyInstructions") != std::string::npos &&
- First.Output->TargetTables.find("Description.DirectOperandFlagMask = 31") !=
- std::string::npos &&
- First.Output->TargetTables.find("\"tiny-call\", 1") != std::string::npos &&
- First.Output->TargetTables.find("\"load.imm\"") != std::string::npos &&
- First.Output->TargetTables.find("makePreservedMask") != std::string::npos,
+ FirstOutput.TargetTables.find("\"tiny-call\", 1") != std::string::npos &&
+ FirstOutput.TargetTables.find("\"load.imm\"") != std::string::npos &&
+ FirstOutput.TargetTables.find("makePreservedMask") != std::string::npos,
"generated output must contain typed target IDs, assembly mnemonics, and static target "
"tables");
}