1d88c1a5aSDimitry Andric //===- StripNonLineTableDebugInfo.cpp -- Strip parts of Debug Info --------===// 2d88c1a5aSDimitry Andric // 3d88c1a5aSDimitry Andric // The LLVM Compiler Infrastructure 4d88c1a5aSDimitry Andric // 5d88c1a5aSDimitry Andric // This file is distributed under the University of Illinois Open Source 6d88c1a5aSDimitry Andric // License. See LICENSE.TXT for details. 7d88c1a5aSDimitry Andric // 8d88c1a5aSDimitry Andric //===----------------------------------------------------------------------===// 9d88c1a5aSDimitry Andric 10d88c1a5aSDimitry Andric #include "llvm/IR/DebugInfo.h" 11d88c1a5aSDimitry Andric #include "llvm/Pass.h" 12*4ba319b5SDimitry Andric #include "llvm/Transforms/Utils.h" 13d88c1a5aSDimitry Andric using namespace llvm; 14d88c1a5aSDimitry Andric 15d88c1a5aSDimitry Andric namespace { 16d88c1a5aSDimitry Andric 17d88c1a5aSDimitry Andric /// This pass strips all debug info that is not related line tables. 18d88c1a5aSDimitry Andric /// The result will be the same as if the program where compiled with 19d88c1a5aSDimitry Andric /// -gline-tables-only. 20d88c1a5aSDimitry Andric struct StripNonLineTableDebugInfo : public ModulePass { 21d88c1a5aSDimitry Andric static char ID; // Pass identification, replacement for typeid StripNonLineTableDebugInfo__anon23f193930111::StripNonLineTableDebugInfo22d88c1a5aSDimitry Andric StripNonLineTableDebugInfo() : ModulePass(ID) { 23d88c1a5aSDimitry Andric initializeStripNonLineTableDebugInfoPass(*PassRegistry::getPassRegistry()); 24d88c1a5aSDimitry Andric } 25d88c1a5aSDimitry Andric getAnalysisUsage__anon23f193930111::StripNonLineTableDebugInfo26d88c1a5aSDimitry Andric void getAnalysisUsage(AnalysisUsage &AU) const override { 27d88c1a5aSDimitry Andric AU.setPreservesAll(); 28d88c1a5aSDimitry Andric } 29d88c1a5aSDimitry Andric runOnModule__anon23f193930111::StripNonLineTableDebugInfo30d88c1a5aSDimitry Andric bool runOnModule(Module &M) override { 31d88c1a5aSDimitry Andric return llvm::stripNonLineTableDebugInfo(M); 32d88c1a5aSDimitry Andric } 33d88c1a5aSDimitry Andric }; 34d88c1a5aSDimitry Andric } 35d88c1a5aSDimitry Andric 36d88c1a5aSDimitry Andric char StripNonLineTableDebugInfo::ID = 0; 37d88c1a5aSDimitry Andric INITIALIZE_PASS(StripNonLineTableDebugInfo, "strip-nonlinetable-debuginfo", 38d88c1a5aSDimitry Andric "Strip all debug info except linetables", false, false) 39d88c1a5aSDimitry Andric createStripNonLineTableDebugInfoPass()40d88c1a5aSDimitry AndricModulePass *llvm::createStripNonLineTableDebugInfoPass() { 41d88c1a5aSDimitry Andric return new StripNonLineTableDebugInfo(); 42d88c1a5aSDimitry Andric } 43