diff options
author | Alex Lorenz <arphaman@gmail.com> | 2015-08-17 22:17:42 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2015-08-17 22:17:42 +0000 |
commit | a56ba6a6ddabeac1da1b22c79845f5d910d8f543 (patch) | |
tree | a04931e47b539988a02773398cf63cefa0696e8d /llvm/lib/CodeGen | |
parent | eb62568625981cb12c83784a99c54cdfcb4d5d81 (diff) | |
download | bcm5719-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.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MIRPrinter.cpp | 9 |
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, |