[llvm] r279574 - [stackmaps] Extract out magic constants [NFCI]

Richard Smith via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 23 15:19:20 PDT 2016


I've temporarily removed the unused data member in r279581.

On Tue, Aug 23, 2016 at 3:12 PM, Richard Smith <richard at metafoo.co.uk>
wrote:

> On Tue, Aug 23, 2016 at 3:06 PM, Mehdi Amini via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Hi Philip,
>>
>> I assume it is a work-in-progress, but just to let you know I have a
>> warning with this:
>>
>> /llvm/src/include/llvm/CodeGen/StackMaps.h:35:23: warning: private field
>> 'MI' is not used [-Wunused-private-field]
>>   const MachineInstr *MI;
>>                       ^
>>
>
> We're seeing this too; please fix or revert, this breaks -Werror builds.
>
>
>>
>>>>
>> Mehdi
>>
>>
>> > On Aug 23, 2016, at 2:21 PM, Philip Reames via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>> >
>> > Author: reames
>> > Date: Tue Aug 23 16:21:43 2016
>> > New Revision: 279574
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=279574&view=rev
>> > Log:
>> > [stackmaps] Extract out magic constants [NFCI]
>> >
>> > This is a first step towards clarifying the exact MI semantics of
>> stackmap's "live values".
>> >
>> >
>> > Modified:
>> >    llvm/trunk/include/llvm/CodeGen/StackMaps.h
>> >    llvm/trunk/lib/CodeGen/StackMaps.cpp
>> >    llvm/trunk/lib/CodeGen/TargetInstrInfo.cpp
>> >
>> > Modified: llvm/trunk/include/llvm/CodeGen/StackMaps.h
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/
>> CodeGen/StackMaps.h?rev=279574&r1=279573&r2=279574&view=diff
>> > ============================================================
>> ==================
>> > --- llvm/trunk/include/llvm/CodeGen/StackMaps.h (original)
>> > +++ llvm/trunk/include/llvm/CodeGen/StackMaps.h Tue Aug 23 16:21:43
>> 2016
>> > @@ -22,6 +22,29 @@ class AsmPrinter;
>> > class MCExpr;
>> > class MCStreamer;
>> >
>> > +/// \brief MI-level stackmap operands.
>> > +///
>> > +/// MI slackmap operations take the form:
>> > +/// <id>, <numBytes>, live args...
>> > +class StackMapOpers {
>> > +public:
>> > +  /// Enumerate the meta operands.
>> > +  enum { IDPos, NBytesPos };
>> > +
>> > +private:
>> > +  const MachineInstr *MI;
>> > +
>> > +public:
>> > +  explicit StackMapOpers(const MachineInstr *MI);
>> > +
>> > +  /// Get the operand index of the variable list of non-argument
>> operands.
>> > +  /// These hold the "live state".
>> > +  unsigned getVarIdx() const {
>> > +    // Skip ID, nShadowBytes.
>> > +    return 2;
>> > +  }
>> > +};
>> > +
>> > /// \brief MI-level patchpoint operands.
>> > ///
>> > /// MI patchpoint operations take the form:
>> >
>> > Modified: llvm/trunk/lib/CodeGen/StackMaps.cpp
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/
>> StackMaps.cpp?rev=279574&r1=279573&r2=279574&view=diff
>> > ============================================================
>> ==================
>> > --- llvm/trunk/lib/CodeGen/StackMaps.cpp (original)
>> > +++ llvm/trunk/lib/CodeGen/StackMaps.cpp Tue Aug 23 16:21:43 2016
>> > @@ -35,6 +35,12 @@ static cl::opt<int> StackMapVersion(
>> >
>> > const char *StackMaps::WSMP = "Stack Maps: ";
>> >
>> > +StackMapOpers::StackMapOpers(const MachineInstr *MI)
>> > +  : MI(MI) {
>> > +  assert(getVarIdx() <= MI->getNumOperands() &&
>> > +         "invalid stackmap definition");
>> > +}
>> > +
>> > PatchPointOpers::PatchPointOpers(const MachineInstr *MI)
>> >     : MI(MI), HasDef(MI->getOperand(0).isReg() &&
>> MI->getOperand(0).isDef() &&
>> >                      !MI->getOperand(0).isImplicit()),
>> > @@ -343,8 +349,9 @@ void StackMaps::recordStackMapOpers(cons
>> > void StackMaps::recordStackMap(const MachineInstr &MI) {
>> >   assert(MI.getOpcode() == TargetOpcode::STACKMAP && "expected
>> stackmap");
>> >
>> > -  int64_t ID = MI.getOperand(0).getImm();
>> > -  recordStackMapOpers(MI, ID, std::next(MI.operands_begin(), 2),
>> > +  StackMapOpers opers(&MI);
>> > +  const int64_t ID = MI.getOperand(PatchPointOpers::IDPos).getImm();
>> > +  recordStackMapOpers(MI, ID, std::next(MI.operands_begin(),
>> opers.getVarIdx()),
>> >                       MI.operands_end());
>> > }
>> >
>> > @@ -352,7 +359,7 @@ void StackMaps::recordPatchPoint(const M
>> >   assert(MI.getOpcode() == TargetOpcode::PATCHPOINT && "expected
>> patchpoint");
>> >
>> >   PatchPointOpers opers(&MI);
>> > -  int64_t ID = opers.getMetaOper(PatchPointOpers::IDPos).getImm();
>> > +  const int64_t ID = opers.getMetaOper(PatchPointOp
>> ers::IDPos).getImm();
>> >
>> >   auto MOI = std::next(MI.operands_begin(),
>> opers.getStackMapStartIdx());
>> >   recordStackMapOpers(MI, ID, MOI, MI.operands_end(),
>> >
>> > Modified: llvm/trunk/lib/CodeGen/TargetInstrInfo.cpp
>> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/
>> TargetInstrInfo.cpp?rev=279574&r1=279573&r2=279574&view=diff
>> > ============================================================
>> ==================
>> > --- llvm/trunk/lib/CodeGen/TargetInstrInfo.cpp (original)
>> > +++ llvm/trunk/lib/CodeGen/TargetInstrInfo.cpp Tue Aug 23 16:21:43 2016
>> > @@ -437,11 +437,15 @@ static MachineInstr *foldPatchpoint(Mach
>> >                                     const TargetInstrInfo &TII) {
>> >   unsigned StartIdx = 0;
>> >   switch (MI.getOpcode()) {
>> > -  case TargetOpcode::STACKMAP:
>> > -    StartIdx = 2; // Skip ID, nShadowBytes.
>> > +  case TargetOpcode::STACKMAP: {
>> > +    // StackMapLiveValues are foldable
>> > +    StackMapOpers opers(&MI);
>> > +    StartIdx = opers.getVarIdx();
>> >     break;
>> > +  }
>> >   case TargetOpcode::PATCHPOINT: {
>> > -    // For PatchPoint, the call args are not foldable.
>> > +    // For PatchPoint, the call args are not foldable (even if
>> reported in the
>> > +    // stackmap e.g. via anyregcc).
>> >     PatchPointOpers opers(&MI);
>> >     StartIdx = opers.getVarIdx();
>> >     break;
>> >
>> >
>> > _______________________________________________
>> > llvm-commits mailing list
>> > llvm-commits at lists.llvm.org
>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160823/d1e5f421/attachment-0001.html>


More information about the llvm-commits mailing list