codegen_llvm: avoid Deref impls w/ extern type
`rustc_codegen_llvm` relied on `Deref` impls where `Deref::Target` was or contained an extern type - in my experimental implementation of rust-lang/rfcs#3729, this isn't possible as the `Target` associated type's `?Sized` bound cannot be relaxed backwards compatibly (unless we come up with some way of doing this). In later pull requests with the rust-lang/rfcs#3729 implementation, breakage like this could only occur for nightly users relying on the `extern_types` feature. Upstreaming this to avoid needing to keep carrying this patch locally, and I think it'll necessarily need to change eventually.
This commit is contained in:
@@ -637,7 +637,7 @@ pub(crate) unsafe fn llvm_optimize(
|
||||
let result = unsafe {
|
||||
llvm::LLVMRustOptimize(
|
||||
module.module_llvm.llmod(),
|
||||
&*module.module_llvm.tm,
|
||||
&*module.module_llvm.tm.raw(),
|
||||
to_pass_builder_opt_level(opt_level),
|
||||
opt_stage,
|
||||
cgcx.opts.cg.linker_plugin_lto.enabled(),
|
||||
@@ -875,7 +875,7 @@ pub(crate) unsafe fn codegen(
|
||||
};
|
||||
write_output_file(
|
||||
dcx,
|
||||
tm,
|
||||
tm.raw(),
|
||||
config.no_builtins,
|
||||
llmod,
|
||||
&path,
|
||||
@@ -909,7 +909,7 @@ pub(crate) unsafe fn codegen(
|
||||
|
||||
write_output_file(
|
||||
dcx,
|
||||
tm,
|
||||
tm.raw(),
|
||||
config.no_builtins,
|
||||
llmod,
|
||||
&obj_out,
|
||||
|
||||
Reference in New Issue
Block a user