]> git.lizzy.rs Git - rust.git/commitdiff
rustc_codegen_llvm: use safe references for ThinLTOBuffer.
authorIrina Popa <irinagpopa@gmail.com>
Tue, 17 Jul 2018 13:31:09 +0000 (16:31 +0300)
committerIrina Popa <irinagpopa@gmail.com>
Mon, 30 Jul 2018 17:10:47 +0000 (20:10 +0300)
src/librustc_codegen_llvm/back/lto.rs
src/librustc_codegen_llvm/llvm/ffi.rs

index 27a8b5c1d0778689e1187c4e51522fe570ebe98d..ce56be734d77595a58b55eb6e997b5bc51a2636c 100644 (file)
@@ -579,7 +579,7 @@ fn drop(&mut self) {
     }
 }
 
-pub struct ThinBuffer(*mut llvm::ThinLTOBuffer);
+pub struct ThinBuffer(&'static mut llvm::ThinLTOBuffer);
 
 unsafe impl Send for ThinBuffer {}
 unsafe impl Sync for ThinBuffer {}
@@ -604,7 +604,7 @@ pub fn data(&self) -> &[u8] {
 impl Drop for ThinBuffer {
     fn drop(&mut self) {
         unsafe {
-            llvm::LLVMRustThinLTOBufferFree(self.0);
+            llvm::LLVMRustThinLTOBufferFree(&mut *(self.0 as *mut _));
         }
     }
 }
index 6f849e65b2eb9263fb9e3b3a4feeb48b333efe87..ce10a98938ec206a2814c79125faf79ff1a16edb 100644 (file)
@@ -1571,10 +1571,10 @@ pub fn LLVMRustBuildOperandBundleDef(Name: *const c_char,
 
     pub fn LLVMRustThinLTOAvailable() -> bool;
     pub fn LLVMRustPGOAvailable() -> bool;
-    pub fn LLVMRustThinLTOBufferCreate(M: &Module) -> *mut ThinLTOBuffer;
-    pub fn LLVMRustThinLTOBufferFree(M: *mut ThinLTOBuffer);
-    pub fn LLVMRustThinLTOBufferPtr(M: *const ThinLTOBuffer) -> *const c_char;
-    pub fn LLVMRustThinLTOBufferLen(M: *const ThinLTOBuffer) -> size_t;
+    pub fn LLVMRustThinLTOBufferCreate(M: &Module) -> &'static mut ThinLTOBuffer;
+    pub fn LLVMRustThinLTOBufferFree(M: &'static mut ThinLTOBuffer);
+    pub fn LLVMRustThinLTOBufferPtr(M: &ThinLTOBuffer) -> *const c_char;
+    pub fn LLVMRustThinLTOBufferLen(M: &ThinLTOBuffer) -> size_t;
     pub fn LLVMRustCreateThinLTOData(
         Modules: *const ThinLTOModule,
         NumModules: c_uint,