mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
Implement new method
llvm-svn: 14767
This commit is contained in:
parent
7e948057af
commit
b704df8365
@ -13,6 +13,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Constant.h"
|
||||
#include "llvm/DerivedTypes.h"
|
||||
#include "llvm/iOther.h"
|
||||
#include "llvm/Intrinsics.h"
|
||||
@ -81,6 +82,41 @@ void Argument::setParent(Function *parent) {
|
||||
LeakDetector::removeGarbageObject(this);
|
||||
}
|
||||
|
||||
static bool removeDeadConstantUsers(Constant *C) {
|
||||
while (!C->use_empty()) {
|
||||
if (Constant *C = dyn_cast<Constant>(C->use_back())) {
|
||||
if (!removeDeadConstantUsers(C))
|
||||
return false; // Constant wasn't dead.
|
||||
} else {
|
||||
return false; // Nonconstant user of the global.
|
||||
}
|
||||
}
|
||||
|
||||
C->destroyConstant();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/// removeDeadConstantUsers - If there are any dead constant users dangling
|
||||
/// off of this global value, remove them. This method is useful for clients
|
||||
/// that want to check to see if a global is unused, but don't want to deal
|
||||
/// with potentially dead constants hanging off of the globals.
|
||||
///
|
||||
/// This function returns true if the global value is now dead. If all
|
||||
/// users of this global are not dead, this method may return false and
|
||||
/// leave some of them around.
|
||||
bool GlobalValue::removeDeadConstantUsers() {
|
||||
while (!use_empty()) {
|
||||
if (Constant *C = dyn_cast<Constant>(use_back())) {
|
||||
if (!::removeDeadConstantUsers(C))
|
||||
return false; // Constant wasn't dead.
|
||||
} else {
|
||||
return false; // Nonconstant user of the global.
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Function Implementation
|
||||
|
Loading…
Reference in New Issue
Block a user