diff options
| author | Devang Patel <dpatel@apple.com> | 2009-06-26 01:49:18 +0000 | 
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2009-06-26 01:49:18 +0000 | 
| commit | 0751a28888322f54b210e85da7bc3f3366290d3a (patch) | |
| tree | 6e08ca25cb4bb35fb77bd486ec392f1f8dd1909f /llvm/lib/Transforms | |
| parent | aa311ca0006961aabd056c11255cea146378c411 (diff) | |
| download | bcm5719-llvm-0751a28888322f54b210e85da7bc3f3366290d3a.tar.gz bcm5719-llvm-0751a28888322f54b210e85da7bc3f3366290d3a.zip | |
Remove debug info anchors - llvm.dbg.compile_units, llvm.dbg.subprograms
and llvm.dbg.global_variables.
llvm-svn: 74251
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/IPO/StripSymbols.cpp | 21 | 
1 files changed, 20 insertions, 1 deletions
| diff --git a/llvm/lib/Transforms/IPO/StripSymbols.cpp b/llvm/lib/Transforms/IPO/StripSymbols.cpp index ab8fe5f125e..046e0441b1d 100644 --- a/llvm/lib/Transforms/IPO/StripSymbols.cpp +++ b/llvm/lib/Transforms/IPO/StripSymbols.cpp @@ -26,6 +26,7 @@  #include "llvm/Instructions.h"  #include "llvm/Module.h"  #include "llvm/Pass.h" +#include "llvm/Analysis/DebugInfo.h"  #include "llvm/ValueSymbolTable.h"  #include "llvm/TypeSymbolTable.h"  #include "llvm/Transforms/Utils/Local.h" @@ -210,7 +211,25 @@ bool StripDebugInfo(Module &M) {    SmallPtrSet<const GlobalValue*, 8> llvmUsedValues;    findUsedValues(M, llvmUsedValues); -  // Delete all dbg variables. +  SmallVector<GlobalVariable *, 2> CUs; +  SmallVector<GlobalVariable *, 4> GVs; +  SmallVector<GlobalVariable *, 4> SPs; +  CollectDebugInfoAnchors(M, CUs, GVs, SPs); +  // These anchors use LinkOnce linkage so that the optimizer does not +  // remove them accidently. Set InternalLinkage for all these debug +  // info anchors. +  for (SmallVector<GlobalVariable *, 2>::iterator I = CUs.begin(), +         E = CUs.end(); I != E; ++I) +    (*I)->setLinkage(GlobalValue::InternalLinkage); +  for (SmallVector<GlobalVariable *, 4>::iterator I = GVs.begin(), +         E = GVs.end(); I != E; ++I) +    (*I)->setLinkage(GlobalValue::InternalLinkage); +  for (SmallVector<GlobalVariable *, 4>::iterator I = SPs.begin(), +         E = SPs.end(); I != E; ++I) +    (*I)->setLinkage(GlobalValue::InternalLinkage); + + + // Delete all dbg variables.    for (Module::global_iterator I = M.global_begin(), E = M.global_end();          I != E; ++I) {      GlobalVariable *GV = dyn_cast<GlobalVariable>(I); | 

