1
Fork 0

Prevent different vtables with the same name

Fixes #987
This commit is contained in:
bjorn3 2020-06-23 11:41:35 +02:00
parent 9c0d18c8db
commit 1f3dd4f91c

View file

@ -136,12 +136,13 @@ fn build_vtable<'tcx>(
.module .module
.declare_data( .declare_data(
&format!( &format!(
"__vtable.{}.for.{:?}", "__vtable.{}.for.{:?}.{}",
trait_ref trait_ref
.as_ref() .as_ref()
.map(|trait_ref| format!("{:?}", trait_ref.skip_binder()).into()) .map(|trait_ref| format!("{:?}", trait_ref.skip_binder()).into())
.unwrap_or(std::borrow::Cow::Borrowed("???")), .unwrap_or(std::borrow::Cow::Borrowed("???")),
layout.ty layout.ty,
fx.vtables.len(),
), ),
Linkage::Local, Linkage::Local,
false, false,
@ -158,10 +159,7 @@ fn build_vtable<'tcx>(
) )
.unwrap(); .unwrap();
match fx.module.define_data(data_id, &data_ctx) { fx.module.define_data(data_id, &data_ctx).unwrap();
Ok(()) | Err(cranelift_module::ModuleError::DuplicateDefinition(_)) => {}
err => err.unwrap(),
}
data_id data_id
} }