summaryrefslogtreecommitdiffstats
path: root/llvm/lib/VMCore/Function.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-12-07 19:56:51 +0000
committerDan Gohman <gohman@apple.com>2010-12-07 19:56:51 +0000
commitf844b3b2275fd71a0751c92b432651b64a984786 (patch)
treef8372ea69358103994d5732e0bec34faecaaa875 /llvm/lib/VMCore/Function.cpp
parentd43384f6086ce76bfc3befb6e8a89396cb1b75a6 (diff)
downloadbcm5719-llvm-f844b3b2275fd71a0751c92b432651b64a984786.tar.gz
bcm5719-llvm-f844b3b2275fd71a0751c92b432651b64a984786.zip
Remove the code from Function::dropAllReferences which replaced
uses of the function's blocks with undef. This code isn't needed, because BasicBlock's destructor handles such uses. Also, undef isn't correct, since blockaddresses may still be used for comparisons with null. llvm-svn: 121170
Diffstat (limited to 'llvm/lib/VMCore/Function.cpp')
-rw-r--r--llvm/lib/VMCore/Function.cpp17
1 files changed, 4 insertions, 13 deletions
diff --git a/llvm/lib/VMCore/Function.cpp b/llvm/lib/VMCore/Function.cpp
index 22f0096e538..00d1d787324 100644
--- a/llvm/lib/VMCore/Function.cpp
+++ b/llvm/lib/VMCore/Function.cpp
@@ -227,19 +227,10 @@ void Function::dropAllReferences() {
for (iterator I = begin(), E = end(); I != E; ++I)
I->dropAllReferences();
- // Delete all basic blocks.
- while (!BasicBlocks.empty()) {
- // If there is still a reference to the block, it must be a 'blockaddress'
- // constant pointing to it. Just replace the BlockAddress with undef.
- BasicBlock *BB = BasicBlocks.begin();
- if (!BB->use_empty()) {
- BlockAddress *BA = cast<BlockAddress>(BB->use_back());
- BA->replaceAllUsesWith(UndefValue::get(BA->getType()));
- BA->destroyConstant();
- }
-
- BB->eraseFromParent();
- }
+ // Delete all basic blocks. They are now unused, except possibly by
+ // blockaddresses, but BasicBlock's destructor takes care of those.
+ while (!BasicBlocks.empty())
+ BasicBlocks.begin()->eraseFromParent();
}
void Function::addAttribute(unsigned i, Attributes attr) {
OpenPOWER on IntegriCloud