[PATCH] D18257: Add "first class" lowering for deopt operand bundles
Sanjoy Das via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 18 18:40:57 PDT 2016
sanjoy added a subscriber: rnk.
Comment at: lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:6114
@@ +6113,3 @@
+ for (unsigned i = 0, e = I.getNumOperandBundles(); i != e; ++i)
+ assert((I.getOperandBundleAt(i).isDeoptOperandBundle() ||
> It currently looks like we're actually supporting *either* deopt operands XOR funclet operands. I might remove the loop and just assert that nothing other than deopt operands are available on the deopt path.
> Same in the other place this loop exist.
IIUC we don't need to do anything to lower the `funclet` operand bundle, so we're trivially lowering both. @majnemer, @rnk -- can you one of you please point out what the right behavior is here?
Comment at: lib/CodeGen/SelectionDAG/StatepointLowering.cpp:844
@@ +843,3 @@
+ StatepointLoweringInfo SI(DAG);
+ populateCallLoweringInfo(SI.CLI, CS, 0, CS.getNumArgOperands(), Callee,
+ CS.getType(), false);
> 0 as a magic value is unclear. At least pull out a named constant CallSiteArgOperandBegin.
Changed it to `CS.arg_begin() - CS.op_begin()`
Comment at: lib/CodeGen/SelectionDAG/StatepointLowering.cpp:857
@@ +856,3 @@
+ StatepointDirectives SD =
> Minor code structure: I'd move the default init immediately before each conditional init to make the value flow obvious.
Changed to use `getValueOr`.
More information about the llvm-commits