From 1f3dd4f91c83271b6a42a778949a199d2acd63c6 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Tue, 23 Jun 2020 11:41:35 +0200 Subject: [PATCH] Prevent different vtables with the same name Fixes #987 --- src/vtable.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/vtable.rs b/src/vtable.rs index 8302047a44e..c0cb70f3ff6 100644 --- a/src/vtable.rs +++ b/src/vtable.rs @@ -136,12 +136,13 @@ fn build_vtable<'tcx>( .module .declare_data( &format!( - "__vtable.{}.for.{:?}", + "__vtable.{}.for.{:?}.{}", trait_ref .as_ref() .map(|trait_ref| format!("{:?}", trait_ref.skip_binder()).into()) .unwrap_or(std::borrow::Cow::Borrowed("???")), - layout.ty + layout.ty, + fx.vtables.len(), ), Linkage::Local, false, @@ -158,10 +159,7 @@ fn build_vtable<'tcx>( ) .unwrap(); - match fx.module.define_data(data_id, &data_ctx) { - Ok(()) | Err(cranelift_module::ModuleError::DuplicateDefinition(_)) => {} - err => err.unwrap(), - } + fx.module.define_data(data_id, &data_ctx).unwrap(); data_id } -- 2.44.0