SANJAY SRIVALLABH SINGAPURAM via llvm-dev
2017-Mar-19 15:41 UTC
[llvm-dev] Function to strip Module of all debug information
Hello, I need to strip a Module of all debug information before sending it to verifyModule (This is a Module meant for NVPTX code). I've been using llvm::StripDebugInfo, but it doesn't strip some of the debug information. Following is an output from Verifier::visitInstruction, Cannot invoke an intrinsic other than donothing, patchpoint, statepoint, coro_resume or coro_destroy store void (metadata, i64, metadata, metadata)* @llvm.dbg.value, void (metadata, i64, metadata, metadata)** %polly_launch_0_param_7, align 8 Will the following change to lib/IR/DebugInfo.cpp help resolve the problem ? @@ -312,7 +312,7 @@ bool llvm::StripDebugInfo(Module &M) { // We're stripping debug info, and without them, coverage information // doesn't quite make sense. - if (NMD->getName().startswith("llvm.dbg.") || + if (NMD->getName().contains("llvm.dbg.") || NMD->getName() == "llvm.gcov") { NMD->eraseFromParent(); Changed = true I'm not sure if NamedMDNodes are going to include instructions. Although llvm::stripDebugInfo(Function &F) (called through StripDebugInfo on Functions present in the Module) removes DbgInfoIntrinsic instructions, it seems to miss this store instruction. Does this store to a @llvm.dbg.value count as a DbgInfoIntrinsic instruction ? Please suggest a function to strip even this instruction. Also, what does storing something at a place pointed by a function pointer mean in the context of a debug intrinsic ? Thank You, Sanjay -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170319/3aadc6f2/attachment.html>
Mehdi Amini via llvm-dev
2017-Mar-25 04:43 UTC
[llvm-dev] Function to strip Module of all debug information
> On Mar 19, 2017, at 8:41 AM, SANJAY SRIVALLABH SINGAPURAM via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Hello, > > I need to strip a Module of all debug information before sending it to verifyModuleIt is not clear to me why?> (This is a Module meant for NVPTX code). I've been using llvm::StripDebugInfo, but it doesn't strip some of the debug information. Following is an output from Verifier::visitInstruction, > > Cannot invoke an intrinsic other than donothing, patchpoint, statepoint, coro_resume or coro_destroy > store void (metadata, i64, metadata, metadata)* @llvm.dbg.value, void (metadata, i64, metadata, metadata)** %polly_launch_0_param_7, align 8This is not a debug info, this is a buggy IR!> > Will the following change to lib/IR/DebugInfo.cpp help resolve the problem ?It would resolve your problem, but this is not a correct solution I believe. So we should rather understand where this store comes from and fix the code that creates it. — Mehdi> @@ -312,7 +312,7 @@ bool llvm::StripDebugInfo(Module &M) { > > // We're stripping debug info, and without them, coverage information > // doesn't quite make sense. > - if (NMD->getName().startswith("llvm.dbg.") || > + if (NMD->getName().contains("llvm.dbg.") || > NMD->getName() == "llvm.gcov") { > NMD->eraseFromParent(); > Changed = true > > I'm not sure if NamedMDNodes are going to include instructions. > > Although llvm::stripDebugInfo(Function &F) (called through StripDebugInfo on Functions present in the Module) removes DbgInfoIntrinsic instructions, it seems to miss this store instruction. Does this store to a @llvm.dbg.value count as a DbgInfoIntrinsic instruction ? > > Please suggest a function to strip even this instruction. > > Also, what does storing something at a place pointed by a function pointer mean in the context of a debug intrinsic ? > > Thank You, > Sanjay > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170324/5c4140f8/attachment.html>