diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2007-04-28 13:45:00 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2007-04-28 13:45:00 +0000 |
| commit | b18f8f85e9151195a81833d6862063323338854e (patch) | |
| tree | 3bbb4f5593defb3935aa086ffccc1edb0f2c606a /llvm/lib/Transforms | |
| parent | 1deacd61f4a93742e3e12bac91026158bdb1aaf0 (diff) | |
| download | bcm5719-llvm-b18f8f85e9151195a81833d6862063323338854e.tar.gz bcm5719-llvm-b18f8f85e9151195a81833d6862063323338854e.zip | |
Implement review feedback. Aliasees can be either GlobalValue's or
bitcasts of them.
llvm-svn: 36537
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/IPO/GlobalDCE.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/IPO/GlobalDCE.cpp b/llvm/lib/Transforms/IPO/GlobalDCE.cpp index 560bcb56b0f..90150689cc8 100644 --- a/llvm/lib/Transforms/IPO/GlobalDCE.cpp +++ b/llvm/lib/Transforms/IPO/GlobalDCE.cpp @@ -75,9 +75,8 @@ bool GlobalDCE::runOnModule(Module &M) { for (Module::alias_iterator I = M.alias_begin(), E = M.alias_end(); I != E; ++I) { - Changed |= RemoveUnusedGlobalValue(*I); // Aliases are always needed even if they are not used. - GlobalIsNeeded(I); + MarkUsedGlobalsAsNeeded(cast<Constant>(I->getAliasee())); } // Now that all globals which are needed are in the AliveGlobals set, we loop @@ -143,10 +142,7 @@ void GlobalDCE::GlobalIsNeeded(GlobalValue *G) { // referenced by the initializer to the alive set. if (GV->hasInitializer()) MarkUsedGlobalsAsNeeded(GV->getInitializer()); - } else if (GlobalAlias *GA = dyn_cast<GlobalAlias>(G)) { - // If this is a global alias we also need it's aliasee - GlobalIsNeeded(const_cast<GlobalValue*>(GA->getAliasee())); - } else { + } else if (!isa<GlobalAlias>(G)) { // Otherwise this must be a function object. We have to scan the body of // the function looking for constants and global values which are used as // operands. Any operands of these types must be processed to ensure that |

