aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/VMCore/Globals.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/lib/VMCore/Globals.cpp b/lib/VMCore/Globals.cpp
index 0e8227bdeb..e35d801f8a 100644
--- a/lib/VMCore/Globals.cpp
+++ b/lib/VMCore/Globals.cpp
@@ -17,7 +17,6 @@
#include "llvm/Module.h"
#include "llvm/SymbolTable.h"
#include "Support/LeakDetector.h"
-
using namespace llvm;
//===----------------------------------------------------------------------===//
@@ -28,21 +27,20 @@ using namespace llvm;
/// there are no non-constant uses of this GlobalValue. If there aren't then
/// this and the transitive closure of the constants can be deleted. See the
/// destructor for details.
-namespace {
-bool removeDeadConstantUsers(Constant* C) {
- while (!C->use_empty()) {
+static bool removeDeadConstantUsers(Constant* C) {
+ if (isa<GlobalValue>(C)) return false; // Cannot remove this
+
+ while (!C->use_empty())
if (Constant *User = dyn_cast<Constant>(C->use_back())) {
if (!removeDeadConstantUsers(User))
return false; // Constant wasn't dead
} else {
return false; // Non-constant usage;
}
- }
- if (!isa<GlobalValue>(C))
- C->destroyConstant();
+
+ 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