aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/IR/Function.cpp
diff options
context:
space:
mode:
authorVasileios Porpodas <vporpodas@google.com>2022-12-13 13:22:04 -0800
committerVasileios Porpodas <vporpodas@google.com>2022-12-14 10:45:47 -0800
commit7b684119abc7d94bad47ec0b97b35598fac412d3 (patch)
tree0dd8c31f4ed8f2fb6e6e1d1e183d5a45d3df3c14 /llvm/lib/IR/Function.cpp
parent9408164254d26d5305fe4e0267b668c41c1266ed (diff)
downloadllvm-7b684119abc7d94bad47ec0b97b35598fac412d3.zip
llvm-7b684119abc7d94bad47ec0b97b35598fac412d3.tar.gz
llvm-7b684119abc7d94bad47ec0b97b35598fac412d3.tar.bz2
[IR] Adds Function::splice() member functions
This is part of a series of patches that aim at making Function::getBasicBlockList() private. Differential Revision: https://reviews.llvm.org/D139982
Diffstat (limited to 'llvm/lib/IR/Function.cpp')
-rw-r--r--llvm/lib/IR/Function.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/IR/Function.cpp b/llvm/lib/IR/Function.cpp
index 10bbdcf..949eb05 100644
--- a/llvm/lib/IR/Function.cpp
+++ b/llvm/lib/IR/Function.cpp
@@ -368,6 +368,18 @@ void Function::eraseFromParent() {
getParent()->getFunctionList().erase(getIterator());
}
+void Function::splice(Function::iterator ToIt, Function *FromF,
+ Function::iterator FromBeginIt,
+ Function::iterator FromEndIt) {
+#ifdef EXPENSIVE_CHECKS
+ // Check that FromBeginIt is before FromEndIt.
+ auto FromFEnd = FromF->end();
+ for (auto It = FromBeginIt; It != FromEndIt; ++It)
+ assert(It != FromBBEnd && "FromBeginIt not before FromEndIt!");
+#endif // EXPENSIVE_CHECKS
+ BasicBlocks.splice(ToIt, FromF->BasicBlocks, FromBeginIt, FromEndIt);
+}
+
//===----------------------------------------------------------------------===//
// Function Implementation
//===----------------------------------------------------------------------===//