aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/lib/MIR/MIRFunctionParser.cpp10
-rw-r--r--backend/unittests/MIR/MIRDocumentTest.cpp5
2 files changed, 9 insertions, 6 deletions
diff --git a/backend/lib/MIR/MIRFunctionParser.cpp b/backend/lib/MIR/MIRFunctionParser.cpp
index 68bc0aa..c8bba70 100644
--- a/backend/lib/MIR/MIRFunctionParser.cpp
+++ b/backend/lib/MIR/MIRFunctionParser.cpp
@@ -344,12 +344,14 @@ bool MIRDocumentParser::parseRegisters(const yaml::Node &Root, MachineFunction &
std::optional<Register> Initial;
if (const yaml::Node *VirtualNode = mappingValue(*Element, "virtual-reg")) {
std::string_view Text;
- Register Virtual;
- if (scalar(*VirtualNode, Text, "virtual register") ||
- virtualRegister(Text, VirtualNode->range(), Context, Virtual)) {
+ if (scalar(*VirtualNode, Text, "virtual register"))
return true;
+ if (!trim(Text).empty()) {
+ Register Virtual;
+ if (virtualRegister(Text, VirtualNode->range(), Context, Virtual))
+ return true;
+ Initial = Virtual;
}
- Initial = Virtual;
}
auto AddResult = Function.registerInfo().addLiveIn(Reg, Initial);
if (!AddResult)
diff --git a/backend/unittests/MIR/MIRDocumentTest.cpp b/backend/unittests/MIR/MIRDocumentTest.cpp
index 28d5350..5855f57 100644
--- a/backend/unittests/MIR/MIRDocumentTest.cpp
+++ b/backend/unittests/MIR/MIRDocumentTest.cpp
@@ -331,6 +331,7 @@ registers:
- { id: 8, class: gpr64, preferred-register: '' }
liveins:
- { reg: '$g0', virtual-reg: '%7' }
+ - { reg: '$g1', virtual-reg: '' }
calleeSavedRegisters: [ '$g1' ]
frameInfo:
isFrameAddressTaken: true
@@ -374,7 +375,7 @@ machineMetadataNodes:
- '!10 = distinct !{!0, !"machine", null}'
body: |
bb.0.entry (%ir-block.entry):
- liveins: $g0
+ liveins: $g0, $g1
%7:gpr64 = TEST_LOAD $g0 :: (load syncscope("agent") acquire 8 from %ir.slot, align 8)
TEST_GLOBAL @ordinary
TEST_BRANCH %bb.0.entry
@@ -429,7 +430,7 @@ void testDocumentTransaction(TestContext &Context) {
return;
Context.expect(Function->registerInfo().virtualRegisters().size() == 2 &&
- Function->registerInfo().liveIns().size() == 1 &&
+ Function->registerInfo().liveIns().size() == 2 &&
Function->records().hasCalleeSavedRegisters(),
"register tables must publish into the common MachineIR model");
Context.expect(Function->frameInfo().liveObjectCount() == 3 &&