summaryrefslogtreecommitdiffstats
path: root/llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h')
-rw-r--r--llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h b/llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h
index 8ee3a16b36a..f493dbc5e36 100644
--- a/llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h
+++ b/llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h
@@ -37,6 +37,13 @@ public:
typedef typename instr_iterator::const_pointer const_pointer;
typedef typename instr_iterator::const_reference const_reference;
+private:
+ typedef typename std::remove_const<value_type>::type nonconst_value_type;
+ typedef ilist_node<nonconst_value_type> node_type;
+ typedef ilist_iterator<nonconst_value_type> nonconst_instr_iterator;
+ typedef MachineInstrBundleIterator<nonconst_value_type> nonconst_iterator;
+
+public:
MachineInstrBundleIterator(instr_iterator MI) : MII(MI) {}
MachineInstrBundleIterator(reference MI) : MII(MI) {
@@ -130,6 +137,12 @@ public:
}
instr_iterator getInstrIterator() const { return MII; }
+
+ nonconst_iterator getNonConstIterator() const {
+ if (auto *N = const_cast<node_type *>(MII.getNodePtr()))
+ return nonconst_iterator(nonconst_instr_iterator(*N));
+ return nonconst_iterator();
+ }
};
} // end namespace llvm
OpenPOWER on IntegriCloud