diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp --- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp @@ -28,6 +28,7 @@ #include "llvm/Support/TargetRegistry.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetOptions.h" +#include "llvm/Transforms/IPO.h" #include "llvm/Transforms/IPO/PassManagerBuilder.h" #include "llvm/Transforms/Scalar.h" #include "llvm/Transforms/Scalar/GVN.h" @@ -203,6 +204,15 @@ PM.add(createNVVMReflectPass(Subtarget.getSmVersion())); PM.add(createNVVMIntrRangePass(Subtarget.getSmVersion())); }); + + // Optimized debugging is not supported by ptxas. Strip all debugging + // information in the IR if optimizations are set. + Builder.addGlobalExtension( + PassManagerBuilder::EP_CGSCCOptimizerLate, + [&](const PassManagerBuilder &PMB, legacy::PassManagerBase &PM) { + if (PMB.OptLevel > 0) + PM.add(createStripSymbolsPass(/*OnlyDebugInfo*/ true)); + }); } TargetTransformInfo