[PATCH] MIR Serialization: Serialize references from stack objects to named allocas.
Alex L
arphaman at gmail.com
Wed Jul 15 15:16:57 PDT 2015
2015-07-14 16:17 GMT-07:00 Duncan P. N. Exon Smith <dexonsmith at apple.com>:
>
> > On 2015-Jul-14, at 16:04, Alex L <arphaman at gmail.com> wrote:
> >
> > Hi,
> >
> > This patch serializes the references to the named LLVM alloca
> instructions from the stack objects in the machine frame info. This commit
> adds a field 'Name' to the struct 'yaml::MachineStackObject'. This new
> field is used to store the name of the alloca instruction when the alloca
> is present and when it has a name.
> >
> > Cheers,
> > Alex
> > <0001-MIR-Serialization-Serialize-references-from-stack-ob.patch>
>
> > From eb929476f0efa98aef6a28c220371ef4b071c24a Mon Sep 17 00:00:00 2001
> > From: Alex Lorenz <arphaman at gmail.com>
> > Date: Wed, 8 Jul 2015 11:52:02 -0700
> > Subject: [PATCH] MIR Serialization: Serialize references from stack
> objects to
> > named allocas.
> >
> > ---
> > include/llvm/CodeGen/MIRYamlMapping.h | 5 +++-
> > lib/CodeGen/MIRParser/MIRParser.cpp | 23
> ++++++++++++-----
> > lib/CodeGen/MIRPrinter.cpp | 6 +++++
> > test/CodeGen/MIR/X86/stack-object-invalid-name.mir | 30
> ++++++++++++++++++++++
> > test/CodeGen/MIR/X86/stack-objects.mir | 8 +++---
> > .../MIR/X86/variable-sized-stack-objects.mir | 4 +--
> > 6 files changed, 63 insertions(+), 13 deletions(-)
> > create mode 100644 test/CodeGen/MIR/X86/stack-object-invalid-name.mir
> >
> > diff --git a/lib/CodeGen/MIRPrinter.cpp b/lib/CodeGen/MIRPrinter.cpp
> > index d5cf924..3b8fc27 100644
> > --- a/lib/CodeGen/MIRPrinter.cpp
> > +++ b/lib/CodeGen/MIRPrinter.cpp
> > @@ -19,6 +19,7 @@
> > #include "llvm/CodeGen/MachineRegisterInfo.h"
> > #include "llvm/CodeGen/MIRYamlMapping.h"
> > #include "llvm/IR/BasicBlock.h"
> > +#include "llvm/IR/Instructions.h"
> > #include "llvm/IR/Module.h"
> > #include "llvm/IR/ModuleSlotTracker.h"
> > #include "llvm/Support/MemoryBuffer.h"
> > @@ -199,6 +200,11 @@ void
> MIRPrinter::convertStackObjects(yaml::MachineFunction &MF,
> >
> > yaml::MachineStackObject YamlObject;
> > YamlObject.ID = ID++;
> > + if (const auto *Alloca = MFI.getObjectAllocation(I))
> > + YamlObject.Name.Value =
> > + Alloca->hasName() ? Alloca->getName() : "<unnamed alloca>";
> > + else
> > + YamlObject.Name.Value = "";
>
> Is it necessary to manually set `YamlObject.Name.Value` to an empty
> string here? Isn't that handled by the default initializer?
No, it's redundant. I removed this empty string initialization in the
commit.
>
> Otherwise, LGTM.
>
Thanks, this got committed in r242339.
>
> > YamlObject.Type = MFI.isSpillSlotObjectIndex(I)
> > ? yaml::MachineStackObject::SpillSlot
> > : MFI.isVariableSizedObjectIndex(I)
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150715/e66501a3/attachment.html>
More information about the llvm-commits
mailing list