make GlobalValue::removeDeadConstantUsers() const.
authorChris Lattner <sabre@nondot.org>
Mon, 9 Mar 2009 05:50:45 +0000 (05:50 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 9 Mar 2009 05:50:45 +0000 (05:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66403 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/GlobalValue.h
lib/VMCore/Globals.cpp

index 33f50c907b8743d3e0c6b3f93a4cebfc9a3d6458..45528b2713f23a69e9156dc1b8f7f2257b52c6fd 100644 (file)
@@ -205,7 +205,7 @@ public:
   /// 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.
-  void removeDeadConstantUsers();
+  void removeDeadConstantUsers() const;
 
   // Methods for support type inquiry through isa, cast, and dyn_cast:
   static inline bool classof(const GlobalValue *) { return true; }
index de1b247150ea3e6db8002e071cf6f5b1cb81df36..5abe1f9ac40d6cfb447ba5409b73e7c080b2f664 100644 (file)
@@ -28,17 +28,17 @@ using namespace llvm;
 /// removeDeadUsersOfConstant - If the specified constantexpr is dead, remove
 /// it.  This involves recursively eliminating any dead users of the
 /// constantexpr.
-static bool removeDeadUsersOfConstant(Constant *C) {
+static bool removeDeadUsersOfConstant(const Constant *C) {
   if (isa<GlobalValue>(C)) return false; // Cannot remove this
 
   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 (!removeDeadUsersOfConstant(User))
       return false; // Constant wasn't dead
   }
 
-  C->destroyConstant();
+  const_cast<Constant*>(C)->destroyConstant();
   return true;
 }
 
@@ -46,11 +46,11 @@ static bool removeDeadUsersOfConstant(Constant *C) {
 /// 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.
-void GlobalValue::removeDeadConstantUsers() {
-  Value::use_iterator I = use_begin(), E = use_end();
-  Value::use_iterator LastNonDeadUser = E;
+void GlobalValue::removeDeadConstantUsers() const {
+  Value::use_const_iterator I = use_begin(), E = use_end();
+  Value::use_const_iterator LastNonDeadUser = E;
   while (I != E) {
-    if (Constant *User = dyn_cast<Constant>(*I)) {
+    if (const Constant *User = dyn_cast<Constant>(*I)) {
       if (!removeDeadUsersOfConstant(User)) {
         // If the constant wasn't dead, remember that this was the last live use
         // and move on to the next constant.