Skip to content

Commit ab4f93c

Browse files
committed
rustc_codegen_llvm: use safe references for ModuleBuffer.
1 parent b643e51 commit ab4f93c

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/librustc_codegen_llvm/back/lto.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ impl SerializedModule {
527527
}
528528
}
529529

530-
pub struct ModuleBuffer(*mut llvm::ModuleBuffer);
530+
pub struct ModuleBuffer(&'static mut llvm::ModuleBuffer);
531531

532532
unsafe impl Send for ModuleBuffer {}
533533
unsafe impl Sync for ModuleBuffer {}
@@ -550,7 +550,7 @@ impl ModuleBuffer {
550550

551551
impl Drop for ModuleBuffer {
552552
fn drop(&mut self) {
553-
unsafe { llvm::LLVMRustModuleBufferFree(self.0); }
553+
unsafe { llvm::LLVMRustModuleBufferFree(&mut *(self.0 as *mut _)); }
554554
}
555555
}
556556

src/librustc_codegen_llvm/llvm/ffi.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1563,10 +1563,10 @@ extern "C" {
15631563
pub fn LLVMRustSetComdat(M: &'a Module, V: &'a Value, Name: *const c_char);
15641564
pub fn LLVMRustUnsetComdat(V: &Value);
15651565
pub fn LLVMRustSetModulePIELevel(M: &Module);
1566-
pub fn LLVMRustModuleBufferCreate(M: &Module) -> *mut ModuleBuffer;
1567-
pub fn LLVMRustModuleBufferPtr(p: *const ModuleBuffer) -> *const u8;
1568-
pub fn LLVMRustModuleBufferLen(p: *const ModuleBuffer) -> usize;
1569-
pub fn LLVMRustModuleBufferFree(p: *mut ModuleBuffer);
1566+
pub fn LLVMRustModuleBufferCreate(M: &Module) -> &'static mut ModuleBuffer;
1567+
pub fn LLVMRustModuleBufferPtr(p: &ModuleBuffer) -> *const u8;
1568+
pub fn LLVMRustModuleBufferLen(p: &ModuleBuffer) -> usize;
1569+
pub fn LLVMRustModuleBufferFree(p: &'static mut ModuleBuffer);
15701570
pub fn LLVMRustModuleCost(M: &Module) -> u64;
15711571

15721572
pub fn LLVMRustThinLTOAvailable() -> bool;

0 commit comments

Comments
 (0)