diff options
Diffstat (limited to 'lib/CodeGen/SelectionDAG/ScheduleDAG.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/ScheduleDAG.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp index dd968ed454..307b2b9b70 100644 --- a/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp +++ b/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp @@ -441,6 +441,18 @@ void ScheduleDAG::EmitNode(SDNode *Node, } } + // Emit implicit def / use operands. + if (II.ImplicitDefs) { + for (const unsigned *ImplicitDefs = II.ImplicitDefs; + *ImplicitDefs; ++ImplicitDefs) + MI->addRegOperand(*ImplicitDefs, true, true); + } + if (II.ImplicitUses) { + for (const unsigned *ImplicitUses = II.ImplicitUses; + *ImplicitUses; ++ImplicitUses) + MI->addRegOperand(*ImplicitUses, false, true); + } + // Now that we have emitted all operands, emit this instruction itself. if ((II.Flags & M_USES_CUSTOM_DAG_SCHED_INSERTION) == 0) { BB->insert(BB->end(), MI); |