make GlobalValue::removeDeadConstantUsers() const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66403 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2009-03-09 05:50:45 +00:00
parent 339c93b074
commit 319e63234a
2 changed files with 8 additions and 8 deletions

View File

@@ -205,7 +205,7 @@ public:
/// off of this global value, remove them. This method is useful for clients /// 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 /// 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. /// with potentially dead constants hanging off of the globals.
void removeDeadConstantUsers(); void removeDeadConstantUsers() const;
// Methods for support type inquiry through isa, cast, and dyn_cast: // Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const GlobalValue *) { return true; } static inline bool classof(const GlobalValue *) { return true; }

View File

@@ -28,17 +28,17 @@ using namespace llvm;
/// removeDeadUsersOfConstant - If the specified constantexpr is dead, remove /// removeDeadUsersOfConstant - If the specified constantexpr is dead, remove
/// it. This involves recursively eliminating any dead users of the /// it. This involves recursively eliminating any dead users of the
/// constantexpr. /// constantexpr.
static bool removeDeadUsersOfConstant(Constant *C) { static bool removeDeadUsersOfConstant(const Constant *C) {
if (isa<GlobalValue>(C)) return false; // Cannot remove this if (isa<GlobalValue>(C)) return false; // Cannot remove this
while (!C->use_empty()) { while (!C->use_empty()) {
Constant *User = dyn_cast<Constant>(C->use_back()); const Constant *User = dyn_cast<Constant>(C->use_back());
if (!User) return false; // Non-constant usage; if (!User) return false; // Non-constant usage;
if (!removeDeadUsersOfConstant(User)) if (!removeDeadUsersOfConstant(User))
return false; // Constant wasn't dead return false; // Constant wasn't dead
} }
C->destroyConstant(); const_cast<Constant*>(C)->destroyConstant();
return true; return true;
} }
@@ -46,11 +46,11 @@ static bool removeDeadUsersOfConstant(Constant *C) {
/// off of this global value, remove them. This method is useful for clients /// 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 /// 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. /// with potentially dead constants hanging off of the globals.
void GlobalValue::removeDeadConstantUsers() { void GlobalValue::removeDeadConstantUsers() const {
Value::use_iterator I = use_begin(), E = use_end(); Value::use_const_iterator I = use_begin(), E = use_end();
Value::use_iterator LastNonDeadUser = E; Value::use_const_iterator LastNonDeadUser = E;
while (I != E) { while (I != E) {
if (Constant *User = dyn_cast<Constant>(*I)) { if (const Constant *User = dyn_cast<Constant>(*I)) {
if (!removeDeadUsersOfConstant(User)) { if (!removeDeadUsersOfConstant(User)) {
// If the constant wasn't dead, remember that this was the last live use // If the constant wasn't dead, remember that this was the last live use
// and move on to the next constant. // and move on to the next constant.