diff options
Diffstat (limited to 'lib/Transforms/IPO/GlobalDCE.cpp')
-rw-r--r-- | lib/Transforms/IPO/GlobalDCE.cpp | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/lib/Transforms/IPO/GlobalDCE.cpp b/lib/Transforms/IPO/GlobalDCE.cpp index c13a99853e..e025813fd0 100644 --- a/lib/Transforms/IPO/GlobalDCE.cpp +++ b/lib/Transforms/IPO/GlobalDCE.cpp @@ -26,7 +26,6 @@ using namespace llvm; namespace { Statistic<> NumFunctions("globaldce","Number of functions removed"); Statistic<> NumVariables("globaldce","Number of global variables removed"); - Statistic<> NumGVs("globaldce", "Number of global values removed"); struct GlobalDCE : public Pass { // run - Do the GlobalDCE pass on the specified module, optionally updating @@ -171,13 +170,10 @@ void GlobalDCE::MarkUsedGlobalsAsNeeded(Constant *C) { // might make it deader. // bool GlobalDCE::RemoveUnusedGlobalValue(GlobalValue &GV) { - for (Value::use_iterator I = GV.use_begin(), E = GV.use_end(); I != E; ++I) - if (GlobalValue* User = dyn_cast<GlobalValue>(*I)) - if (User->removeDeadConstantUsers()) { // Only if unreferenced... - ++NumGVs; - } - return false; - } + if (GV.use_empty()) return false; + GV.removeDeadConstantUsers(); + return GV.use_empty(); +} // SafeToDestroyConstant - It is safe to destroy a constant iff it is only used // by constants itself. Note that constants cannot be cyclic, so this test is |