[Statepoint] Fix StatepointLoweringInfo::GCTransitionArgs initialization
authorDenis Antrushin <dantrushin@gmail.com>
Mon, 30 Mar 2020 16:47:56 +0000 (19:47 +0300)
committerDenis Antrushin <dantrushin@gmail.com>
Tue, 31 Mar 2020 08:45:06 +0000 (11:45 +0300)
Summary:
In method SelectionDAGBuilder::LowerStatepoint, array SI.GCTransitionArgs
is initialized from wrong part of ImmutableStatepoint class.
We copy gc args instead of transitions args.

Reviewers: reames, skatkov

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D77075

llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp

index 15c6658..8904ab3 100644 (file)
@@ -848,8 +848,8 @@ SelectionDAGBuilder::LowerStatepoint(ImmutableStatepoint ISP,
 
   SI.GCArgs = ArrayRef<const Use>(ISP.gc_args_begin(), ISP.gc_args_end());
   SI.StatepointInstr = ISP.getInstruction();
-  SI.GCTransitionArgs =
-      ArrayRef<const Use>(ISP.gc_args_begin(), ISP.gc_args_end());
+  SI.GCTransitionArgs = ArrayRef<const Use>(ISP.gc_transition_args_begin(),
+                                            ISP.gc_transition_args_end());
   SI.ID = ISP.getID();
   SI.DeoptState = ArrayRef<const Use>(ISP.deopt_begin(), ISP.deopt_end());
   SI.StatepointFlags = ISP.getFlags();