[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