[PATCH] D42374: [RFC] Add IsFixed field to ISD::ArgFlagsTy

Alex Bradbury via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 23 02:04:10 PST 2018


asb added inline comments.


================
Comment at: include/llvm/CodeGen/GlobalISel/CallLowering.h:53-54
+        : Reg(Reg), Ty(Ty), Flags(Flags), IsFixed(IsFixed) {
+      if (IsFixed)
+        Flags.setFixed();
+    }
----------------
dsanders wrote:
> It looks like SelectionDAG and FastISel are both calling Flags.setFixed() themselves. Do we still need the IsFixed argument or is GlobalISel still using it?
The IsFixed field could fairly easily be removed. Ideally setArgFlags would also set IsFixed (probably by adding a bool IsFixed arg to that method), though I'd need to audit current GlobalISel to make sure setArgFlags is _always_ called. It seems it's not currently called for void return types at least.

Simply changing assignArg in AArch64CallLowering.cpp to use `Info.Flags.isFixed()` rather than `Info.IsFixed` seems to result in some minor test output changes. Given that Flags.IsFixed always set at the time the ArgInfo struct is created, there's clearly something I'm missing about the lifetime of Flags...


Repository:
  rL LLVM

https://reviews.llvm.org/D42374





More information about the llvm-commits mailing list