summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2015-08-17 22:17:42 +0000
committerAlex Lorenz <arphaman@gmail.com>2015-08-17 22:17:42 +0000
commita56ba6a6ddabeac1da1b22c79845f5d910d8f543 (patch)
treea04931e47b539988a02773398cf63cefa0696e8d /llvm/lib/CodeGen
parenteb62568625981cb12c83784a99c54cdfcb4d5d81 (diff)
downloadbcm5719-llvm-a56ba6a6ddabeac1da1b22c79845f5d910d8f543.tar.gz
bcm5719-llvm-a56ba6a6ddabeac1da1b22c79845f5d910d8f543.zip
MIR Serialization: Serialize the local offsets for the stack objects.
llvm-svn: 245249
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/MIRParser/MIRParser.cpp2
-rw-r--r--llvm/lib/CodeGen/MIRPrinter.cpp9
2 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
index a0279fa7119..31be0f650a8 100644
--- a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
@@ -487,6 +487,8 @@ bool MIRParserImpl::initializeFrameInfo(MachineFunction &MF,
if (parseCalleeSavedRegister(MF, PFS, CSIInfo, Object.CalleeSavedRegister,
ObjectIdx))
return true;
+ if (Object.LocalOffset)
+ MFI.mapLocalFrameObject(ObjectIdx, Object.LocalOffset.getValue());
}
MFI.setCalleeSavedInfo(CSIInfo);
if (!CSIInfo.empty())
diff --git a/llvm/lib/CodeGen/MIRPrinter.cpp b/llvm/lib/CodeGen/MIRPrinter.cpp
index 6c8acb531da..57e9d875148 100644
--- a/llvm/lib/CodeGen/MIRPrinter.cpp
+++ b/llvm/lib/CodeGen/MIRPrinter.cpp
@@ -324,6 +324,15 @@ void MIRPrinter::convertStackObjects(yaml::MachineFunction &MF,
else
MF.StackObjects[StackObject.ID].CalleeSavedRegister = Reg;
}
+ for (unsigned I = 0, E = MFI.getLocalFrameObjectCount(); I < E; ++I) {
+ auto LocalObject = MFI.getLocalFrameObjectMap(I);
+ auto StackObjectInfo = StackObjectOperandMapping.find(LocalObject.first);
+ assert(StackObjectInfo != StackObjectOperandMapping.end() &&
+ "Invalid stack object index");
+ const FrameIndexOperand &StackObject = StackObjectInfo->second;
+ assert(!StackObject.IsFixed && "Expected a locally mapped stack object");
+ MF.StackObjects[StackObject.ID].LocalOffset = LocalObject.second;
+ }
}
void MIRPrinter::convert(yaml::MachineFunction &MF,
OpenPOWER on IntegriCloud