about summary refs log tree commit diff
path: root/library/stdarch/crates/assert-instr-macro
diff options
context:
space:
mode:
authorsayantn <sayantn05@gmail.com>2025-04-16 03:53:48 +0530
committerAmanieu d'Antras <amanieu@gmail.com>2025-04-20 21:39:39 +0000
commitf2870b76fdc8d3e31340749ae5feb94c27e396e6 (patch)
tree46466dedfbaa6db8af99ec5bdf7543d9652063da /library/stdarch/crates/assert-instr-macro
parentbc9e29d9be2601e406a03bb6749a051c4ecab01e (diff)
downloadrust-f2870b76fdc8d3e31340749ae5feb94c27e396e6.tar.gz
rust-f2870b76fdc8d3e31340749ae5feb94c27e396e6.zip
Remove `STDARCH_DISABLE_DEDUP_GUARD` as it was unused
Diffstat (limited to 'library/stdarch/crates/assert-instr-macro')
-rw-r--r--library/stdarch/crates/assert-instr-macro/src/lib.rs54
1 files changed, 8 insertions, 46 deletions
diff --git a/library/stdarch/crates/assert-instr-macro/src/lib.rs b/library/stdarch/crates/assert-instr-macro/src/lib.rs
index acc764e7aa8..96b86d93bbc 100644
--- a/library/stdarch/crates/assert-instr-macro/src/lib.rs
+++ b/library/stdarch/crates/assert-instr-macro/src/lib.rs
@@ -50,10 +50,6 @@ pub fn assert_instr(
     // testing for.
     let disable_assert_instr = std::env::var("STDARCH_DISABLE_ASSERT_INSTR").is_ok();
 
-    // Disable dedup guard. Only works if the LLVM MergeFunctions pass is disabled, e.g.
-    // with `-Z merge-functions=disabled` in RUSTFLAGS.
-    let disable_dedup_guard = std::env::var("STDARCH_DISABLE_DEDUP_GUARD").is_ok();
-
     // If instruction tests are disabled avoid emitting this shim at all, just
     // return the original item without our attribute.
     if !cfg!(optimized) || disable_assert_instr {
@@ -69,10 +65,6 @@ pub fn assert_instr(
         &format!("stdarch_test_shim_{name}_{instr_str}"),
         name.span(),
     );
-    let shim_name_ptr = syn::Ident::new(
-        &format!("stdarch_test_shim_{name}_{instr_str}_ptr").to_ascii_uppercase(),
-        name.span(),
-    );
     let mut inputs = Vec::new();
     let mut input_vals = Vec::new();
     let mut const_vals = Vec::new();
@@ -138,41 +130,13 @@ pub fn assert_instr(
     } else {
         syn::LitStr::new("C", proc_macro2::Span::call_site())
     };
-    let shim_name_str = format!("{shim_name}{assert_name}");
-    let to_test = if disable_dedup_guard {
-        quote! {
-            #attrs
-            #maybe_allow_deprecated
-            #[unsafe(no_mangle)]
-            #[inline(never)]
-            pub unsafe extern #abi fn #shim_name(#(#inputs),*) #ret {
-                #name::<#(#const_vals),*>(#(#input_vals),*)
-            }
-        }
-    } else {
-        quote! {
-
-            const #shim_name_ptr : *const u8 = #shim_name_str.as_ptr();
-
-            #attrs
-            #maybe_allow_deprecated
-            #[unsafe(no_mangle)]
-            #[inline(never)]
-            pub unsafe extern #abi fn #shim_name(#(#inputs),*) #ret {
-                // The compiler in optimized mode by default runs a pass called
-                // "mergefunc" where it'll merge functions that look identical.
-                // Turns out some intrinsics produce identical code and they're
-                // folded together, meaning that one just jumps to another. This
-                // messes up our inspection of the disassembly of this function and
-                // we're not a huge fan of that.
-                //
-                // To thwart this pass and prevent functions from being merged we
-                // generate some code that's hopefully very tight in terms of
-                // codegen but is otherwise unique to prevent code from being
-                // folded.
-                ::stdarch_test::_DONT_DEDUP = #shim_name_ptr;
-                #name::<#(#const_vals),*>(#(#input_vals),*)
-            }
+    let to_test = quote! {
+        #attrs
+        #maybe_allow_deprecated
+        #[unsafe(no_mangle)]
+        #[inline(never)]
+        pub unsafe extern #abi fn #shim_name(#(#inputs),*) #ret {
+            #name::<#(#const_vals),*>(#(#input_vals),*)
         }
     };
 
@@ -182,9 +146,7 @@ pub fn assert_instr(
         fn #assert_name() {
             #to_test
 
-            ::stdarch_test::assert(#shim_name as usize,
-                                   stringify!(#shim_name),
-                                   #instr);
+            ::stdarch_test::assert(#shim_name as usize, stringify!(#shim_name), #instr);
         }
     };