]> git.lizzy.rs Git - rust.git/commitdiff
Fix use after drop in self-profile with llvm events
authorAndreas Jonson <andjo403@users.noreply.github.com>
Wed, 29 Sep 2021 20:58:33 +0000 (22:58 +0200)
committerAndreas Jonson <andjo403@users.noreply.github.com>
Wed, 29 Sep 2021 20:58:33 +0000 (22:58 +0200)
compiler/rustc_codegen_llvm/src/back/write.rs

index 92199f611bad03baa517c0425a28e1aa98a4bb36..985640fb60e04571679df5812800ab9542096bb0 100644 (file)
@@ -405,13 +405,15 @@ pub(crate) unsafe fn optimize_with_new_llvm_pass_manager(
         None
     };
 
-    let llvm_selfprofiler = if cgcx.prof.llvm_recording_enabled() {
-        let mut llvm_profiler = LlvmSelfProfiler::new(cgcx.prof.get_self_profiler().unwrap());
-        &mut llvm_profiler as *mut _ as *mut c_void
+    let mut llvm_profiler = if cgcx.prof.llvm_recording_enabled() {
+        Some(LlvmSelfProfiler::new(cgcx.prof.get_self_profiler().unwrap()))
     } else {
-        std::ptr::null_mut()
+        None
     };
 
+    let llvm_selfprofiler =
+        llvm_profiler.as_mut().map(|s| s as *mut _ as *mut c_void).unwrap_or(std::ptr::null_mut());
+
     let extra_passes = config.passes.join(",");
 
     // FIXME: NewPM doesn't provide a facility to pass custom InlineParams.