@@ -669,10 +669,6 @@ NVPTXSerializer::compileToBinaryNVPTX(const std::string &ptxCode) {
669
669
670
670
std::optional<SmallVector<char , 0 >>
671
671
NVPTXSerializer::moduleToObject (llvm::Module &llvmModule) {
672
- llvm::Timer moduleToObjectTimer (
673
- " moduleToObjectTimer" ,
674
- " Timer for perf llvm-ir -> isa and isa -> binary." );
675
- moduleToObjectTimer.startTimer ();
676
672
// Return LLVM IR if the compilation target is `offload`.
677
673
#define DEBUG_TYPE " serialize-to-llvm"
678
674
LLVM_DEBUG ({
@@ -691,6 +687,18 @@ NVPTXSerializer::moduleToObject(llvm::Module &llvmModule) {
691
687
return std::nullopt;
692
688
#endif // LLVM_HAS_NVPTX_TARGET
693
689
690
+ auto timerDeleter = [](llvm::Timer *timer) {
691
+ if (timer != nullptr ) {
692
+ timer->clear ();
693
+ delete timer;
694
+ }
695
+ };
696
+ std::unique_ptr<llvm::Timer, decltype (timerDeleter)> moduleToObjectTimer (
697
+ new llvm::Timer (" moduleToObjectTimer" ,
698
+ " Timer for perf llvm-ir -> isa and isa -> binary." ),
699
+ timerDeleter);
700
+ moduleToObjectTimer->startTimer ();
701
+
694
702
// Emit PTX code.
695
703
std::optional<llvm::TargetMachine *> targetMachine =
696
704
getOrCreateTargetMachine ();
@@ -706,9 +714,9 @@ NVPTXSerializer::moduleToObject(llvm::Module &llvmModule) {
706
714
return std::nullopt;
707
715
}
708
716
709
- moduleToObjectTimer. stopTimer ();
710
- llvmToISATimeInMs = moduleToObjectTimer. getTotalTime ().getWallTime () * 1000 ;
711
- moduleToObjectTimer. clear ();
717
+ moduleToObjectTimer-> stopTimer ();
718
+ llvmToISATimeInMs = moduleToObjectTimer-> getTotalTime ().getWallTime () * 1000 ;
719
+ moduleToObjectTimer-> clear ();
712
720
if (isaCallback)
713
721
isaCallback (serializedISA.value ());
714
722
@@ -729,17 +737,17 @@ NVPTXSerializer::moduleToObject(llvm::Module &llvmModule) {
729
737
}
730
738
731
739
std::optional<SmallVector<char , 0 >> result;
732
- moduleToObjectTimer. startTimer ();
740
+ moduleToObjectTimer-> startTimer ();
733
741
// Compile to binary.
734
742
#if MLIR_ENABLE_NVPTXCOMPILER
735
743
result = compileToBinaryNVPTX (*serializedISA);
736
744
#else
737
745
result = compileToBinary (*serializedISA);
738
746
#endif // MLIR_ENABLE_NVPTXCOMPILER
739
747
740
- moduleToObjectTimer. stopTimer ();
741
- isaToBinaryTimeInMs = moduleToObjectTimer. getTotalTime (). getWallTime () * 1000 ;
742
- moduleToObjectTimer. clear () ;
748
+ moduleToObjectTimer-> stopTimer ();
749
+ isaToBinaryTimeInMs =
750
+ moduleToObjectTimer-> getTotalTime (). getWallTime () * 1000 ;
743
751
return result;
744
752
}
745
753
0 commit comments