mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
Prevent creating the same Instance::mono
multiple times
This commit is contained in:
parent
ad18fe08de
commit
d34be935ec
@ -246,7 +246,8 @@ impl<'ll> CodegenCx<'ll, '_> {
|
|||||||
|
|
||||||
#[instrument(level = "debug", skip(self, llty))]
|
#[instrument(level = "debug", skip(self, llty))]
|
||||||
pub(crate) fn get_static_inner(&self, def_id: DefId, llty: &'ll Type) -> &'ll Value {
|
pub(crate) fn get_static_inner(&self, def_id: DefId, llty: &'ll Type) -> &'ll Value {
|
||||||
if let Some(&g) = self.instances.borrow().get(&Instance::mono(self.tcx, def_id)) {
|
let instance = Instance::mono(self.tcx, def_id);
|
||||||
|
if let Some(&g) = self.instances.borrow().get(&instance) {
|
||||||
trace!("used cached value");
|
trace!("used cached value");
|
||||||
return g;
|
return g;
|
||||||
}
|
}
|
||||||
@ -259,7 +260,7 @@ impl<'ll> CodegenCx<'ll, '_> {
|
|||||||
statics defined in the same CGU, but did not for `{def_id:?}`"
|
statics defined in the same CGU, but did not for `{def_id:?}`"
|
||||||
);
|
);
|
||||||
|
|
||||||
let sym = self.tcx.symbol_name(Instance::mono(self.tcx, def_id)).name;
|
let sym = self.tcx.symbol_name(instance).name;
|
||||||
let fn_attrs = self.tcx.codegen_fn_attrs(def_id);
|
let fn_attrs = self.tcx.codegen_fn_attrs(def_id);
|
||||||
|
|
||||||
debug!(?sym, ?fn_attrs);
|
debug!(?sym, ?fn_attrs);
|
||||||
@ -349,7 +350,7 @@ impl<'ll> CodegenCx<'ll, '_> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.instances.borrow_mut().insert(Instance::mono(self.tcx, def_id), g);
|
self.instances.borrow_mut().insert(instance, g);
|
||||||
g
|
g
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user