[PATCH] D79537: Add NoMerge MIFlag to avoid MIR branch folding

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 13 14:42:42 PDT 2020


arsenm added inline comments.


================
Comment at: llvm/include/llvm/CodeGen/MachineInstr.h:109
                                         // floatint-point exceptions.
+    NoMerge      = 1 << 15,             // Instruction should not be merged
   };
----------------
zequanwu wrote:
> rnk wrote:
> > arsenm wrote:
> > > It's not obvious to me what this means. These are also supposed to be droppable optimization flags, but it seems like you're using this for something semantically required?
> > I don't think `BundledPred` or `FrameSetup` are droppable, IMO they are semantically significant.
> > 
> > The only alternative I see to this would be to encode this information in the MCInstrDesc, which would require mirroring the entire family of X86 CALL instructions, of which there are many.
> This `NoMerge` flag is used to disable branch-fold optimization when present. What do you mean something semantically required?
I forgot those were also here. Maybe this should be sorted up to the other mandatory flags. I'm pretty sure FrameSetup only changes debug info, so I guess that's not exactly mandatory?

I would still like a better comment here. This one just restates the name of the flag and doesn't tell me what it means by merge


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

https://reviews.llvm.org/D79537





More information about the llvm-commits mailing list