[PATCH] D69836: [MIR] Target specific MIR formating and parsing

Peng Guo via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 4 15:36:08 PST 2019


pguo marked 2 inline comments as done.
pguo added inline comments.


================
Comment at: llvm/include/llvm/CodeGen/MIRFormatter.h:36
+  /// value of OpIdx is ~0 which means the index is unknown.
+  virtual void printImm(raw_ostream &OS, const MachineInstr &MI, unsigned OpIdx,
+                        int64_t Imm) const {
----------------
dsanders wrote:
> pguo wrote:
> > dsanders wrote:
> > > This is just an optional nitpick. Using ~0 is fine but if you used Optional<unsigned> then you wouldn't have to explain that. It does take a little more storage though so I don't mind if you stick to ~0
> > I think the OpIdx here is not optional but required to get the correct functionally.  The tuple <OpCode, OpIdx> will uniquely tell formatter how to format the immediate in a target specific way.  While since we can do dump() on any MachineOperand object inside debugger, in this case we don't know the Index, so we have to pass ~0 to the real print function to mark it as unknown.
> I think there may be some confusion here so just to clarify: Optional<unsigned> is essentially the same as what you're doing but the unknown case is more explicit and self documenting as it doesn't need a number to be carved out of `unsigned` and documented as being 'unknown':
>   printImm(OS, MI, ~0 /* Unknown */, Imm)
> becomes:
>   printImm(OS, MI, None, Imm)
Got it.  I switched to use Optional.  Thanks.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69836/new/

https://reviews.llvm.org/D69836





More information about the llvm-commits mailing list