about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorBen Kimock <kimockb@gmail.com>2024-12-04 21:03:12 -0500
committerBen Kimock <kimockb@gmail.com>2024-12-06 16:42:09 -0500
commit711c8cc690c70d9b4c0e17e90f21f03d4e9d3ebf (patch)
treec2025a7bb0c2a9bf1af448b859b41f5905762cbc /tests
parent8dc83770f748c6cd16b342889ca2240397c19534 (diff)
downloadrust-711c8cc690c70d9b4c0e17e90f21f03d4e9d3ebf.tar.gz
rust-711c8cc690c70d9b4c0e17e90f21f03d4e9d3ebf.zip
Remove polymorphization
Diffstat (limited to 'tests')
-rw-r--r--tests/codegen-units/item-collection/static-init.rs4
-rw-r--r--tests/codegen-units/item-collection/trait-method-default-impl.rs4
-rw-r--r--tests/codegen-units/polymorphization/auxiliary/poly-dep.rs4
-rw-r--r--tests/codegen-units/polymorphization/poly-foreign.rs11
-rw-r--r--tests/codegen-units/polymorphization/unused_type_parameters.rs315
-rw-r--r--tests/crashes/105249.rs16
-rw-r--r--tests/crashes/123893.rs24
-rw-r--r--tests/crashes/124020.rs33
-rw-r--r--tests/crashes/124436.rs7
-rw-r--r--tests/crashes/130425.rs13
-rw-r--r--tests/ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs21
-rw-r--r--tests/ui/const-generics/generic_const_exprs/issue-94287.rs10
-rw-r--r--tests/ui/const-generics/generic_const_exprs/issue-94287.stderr15
-rw-r--r--tests/ui/coroutine/polymorphize-args.rs18
-rw-r--r--tests/ui/mir/inline-wrong-abi.rs2
-rw-r--r--tests/ui/polymorphization/abi_mismatch.rs20
-rw-r--r--tests/ui/polymorphization/abi_mismatch.stderr11
-rw-r--r--tests/ui/polymorphization/closure_in_upvar/fn.rs29
-rw-r--r--tests/ui/polymorphization/closure_in_upvar/fnmut.rs34
-rw-r--r--tests/ui/polymorphization/closure_in_upvar/fnonce.rs34
-rw-r--r--tests/ui/polymorphization/closure_in_upvar/other.rs38
-rw-r--r--tests/ui/polymorphization/const_parameters/closures.rs67
-rw-r--r--tests/ui/polymorphization/const_parameters/closures.stderr44
-rw-r--r--tests/ui/polymorphization/const_parameters/functions.rs37
-rw-r--r--tests/ui/polymorphization/const_parameters/functions.stderr17
-rw-r--r--tests/ui/polymorphization/coroutine.rs98
-rw-r--r--tests/ui/polymorphization/coroutine.stderr29
-rw-r--r--tests/ui/polymorphization/drop_shims/simple.rs22
-rw-r--r--tests/ui/polymorphization/drop_shims/transitive.rs27
-rw-r--r--tests/ui/polymorphization/ice-poly-with-mir-opts-90192.rs20
-rw-r--r--tests/ui/polymorphization/inline-incorrect-early-bound.rs27
-rw-r--r--tests/ui/polymorphization/inline-incorrect-early-bound.stderr15
-rw-r--r--tests/ui/polymorphization/inline-tainted-body.rs21
-rw-r--r--tests/ui/polymorphization/inline-tainted-body.stderr30
-rw-r--r--tests/ui/polymorphization/issue-74614.rs18
-rw-r--r--tests/ui/polymorphization/issue-74636.rs16
-rw-r--r--tests/ui/polymorphization/lifetimes.rs25
-rw-r--r--tests/ui/polymorphization/lifetimes.stderr17
-rw-r--r--tests/ui/polymorphization/normalized_sig_types.rs26
-rw-r--r--tests/ui/polymorphization/predicates.rs95
-rw-r--r--tests/ui/polymorphization/predicates.stderr45
-rw-r--r--tests/ui/polymorphization/promoted-function-1.rs12
-rw-r--r--tests/ui/polymorphization/promoted-function-1.stderr8
-rw-r--r--tests/ui/polymorphization/promoted-function-2.rs16
-rw-r--r--tests/ui/polymorphization/promoted-function-2.stderr17
-rw-r--r--tests/ui/polymorphization/promoted-function-3.rs14
-rw-r--r--tests/ui/polymorphization/promoted-function.rs15
-rw-r--r--tests/ui/polymorphization/symbol-ambiguity.rs22
-rw-r--r--tests/ui/polymorphization/too-many-generic-params.rs85
-rw-r--r--tests/ui/polymorphization/type_parameters/closures.rs161
-rw-r--r--tests/ui/polymorphization/type_parameters/closures.stderr80
-rw-r--r--tests/ui/polymorphization/type_parameters/functions.rs96
-rw-r--r--tests/ui/polymorphization/type_parameters/functions.stderr35
-rw-r--r--tests/ui/polymorphization/unsized_cast.rs30
-rw-r--r--tests/ui/polymorphization/unsized_cast.stderr38
-rw-r--r--tests/ui/recursion/issue-38591-non-regular-dropck-recursion.rs2
-rw-r--r--tests/ui/unsized/issue-115809.rs2
57 files changed, 7 insertions, 1985 deletions
diff --git a/tests/codegen-units/item-collection/static-init.rs b/tests/codegen-units/item-collection/static-init.rs
index 1406fba2b98..44b80ef73a4 100644
--- a/tests/codegen-units/item-collection/static-init.rs
+++ b/tests/codegen-units/item-collection/static-init.rs
@@ -1,4 +1,4 @@
-//@ compile-flags:-Zprint-mono-items=eager -Zpolymorphize=on
+//@ compile-flags:-Zprint-mono-items=eager
 
 #![feature(start)]
 
@@ -6,7 +6,7 @@ pub static FN: fn() = foo::<i32>;
 
 pub fn foo<T>() {}
 
-//~ MONO_ITEM fn foo::<T>
+//~ MONO_ITEM fn foo::<i32>
 //~ MONO_ITEM static FN
 
 //~ MONO_ITEM fn start
diff --git a/tests/codegen-units/item-collection/trait-method-default-impl.rs b/tests/codegen-units/item-collection/trait-method-default-impl.rs
index b0a43d28e40..fd73786a402 100644
--- a/tests/codegen-units/item-collection/trait-method-default-impl.rs
+++ b/tests/codegen-units/item-collection/trait-method-default-impl.rs
@@ -1,4 +1,4 @@
-//@ compile-flags:-Zprint-mono-items=eager -Zpolymorphize=on -Zinline-mir=no
+//@ compile-flags:-Zprint-mono-items=eager -Zinline-mir=no
 
 #![deny(dead_code)]
 #![feature(start)]
@@ -29,7 +29,7 @@ impl SomeGenericTrait<u64> for i32 {
 
     // For the non-generic foo(), we should generate a codegen-item even if it
     // is not called anywhere
-    //~ MONO_ITEM fn <i32 as SomeGenericTrait<T1>>::foo
+    //~ MONO_ITEM fn <i32 as SomeGenericTrait<u64>>::foo
 }
 
 // Non-generic impl of generic trait
diff --git a/tests/codegen-units/polymorphization/auxiliary/poly-dep.rs b/tests/codegen-units/polymorphization/auxiliary/poly-dep.rs
deleted file mode 100644
index d6cbd282ec1..00000000000
--- a/tests/codegen-units/polymorphization/auxiliary/poly-dep.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-//@ compile-flags: -Zpolymorphize=on
-
-#[inline(never)]
-pub fn foo<T>() {}
diff --git a/tests/codegen-units/polymorphization/poly-foreign.rs b/tests/codegen-units/polymorphization/poly-foreign.rs
deleted file mode 100644
index 05dbac46d36..00000000000
--- a/tests/codegen-units/polymorphization/poly-foreign.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-//@ aux-build:poly-dep.rs
-//@ compile-flags: --crate-type=lib -Zprint-mono-items=eager -Zpolymorphize=on
-
-extern crate poly_dep;
-
-pub static FN1: fn() = poly_dep::foo::<i32>;
-pub static FN2: fn() = poly_dep::foo::<u32>;
-
-//~ MONO_ITEM static FN1
-//~ MONO_ITEM static FN2
-//~ MONO_ITEM fn poly_dep::foo::<T>
diff --git a/tests/codegen-units/polymorphization/unused_type_parameters.rs b/tests/codegen-units/polymorphization/unused_type_parameters.rs
deleted file mode 100644
index 438305f112f..00000000000
--- a/tests/codegen-units/polymorphization/unused_type_parameters.rs
+++ /dev/null
@@ -1,315 +0,0 @@
-//@ compile-flags:-Zpolymorphize=on -Zprint-mono-items=lazy -Copt-level=1
-
-#![crate_type = "rlib"]
-
-// This test checks that the polymorphization analysis correctly reduces the
-// generated mono items.
-
-mod functions {
-    // Function doesn't have any type parameters to be unused.
-    pub fn no_parameters() {}
-
-    //~ MONO_ITEM fn functions::no_parameters
-
-    // Function has an unused type parameter.
-    pub fn unused<T>() {}
-
-    //~ MONO_ITEM fn functions::unused::<T>
-
-    // Function uses type parameter in value of a binding.
-    pub fn used_binding_value<T: Default>() {
-        let _: T = Default::default();
-    }
-
-    //~ MONO_ITEM fn functions::used_binding_value::<u32>
-    //~ MONO_ITEM fn functions::used_binding_value::<u64>
-
-    // Function uses type parameter in type of a binding.
-    pub fn used_binding_type<T>() {
-        let _: Option<T> = None;
-    }
-
-    //~ MONO_ITEM fn functions::used_binding_type::<u32>
-    //~ MONO_ITEM fn functions::used_binding_type::<u64>
-
-    // Function uses type parameter in argument.
-    pub fn used_argument<T>(_: T) {}
-
-    //~ MONO_ITEM fn functions::used_argument::<u32>
-    //~ MONO_ITEM fn functions::used_argument::<u64>
-    //
-    // Function uses type parameter in substitutions to another function.
-    pub fn used_substs<T>() {
-        unused::<T>()
-    }
-
-    //~ MONO_ITEM fn functions::used_substs::<u32>
-    //~ MONO_ITEM fn functions::used_substs::<u64>
-}
-
-mod closures {
-    // Function doesn't have any type parameters to be unused.
-    pub fn no_parameters() {
-        let _ = || {};
-    }
-
-    //~ MONO_ITEM fn closures::no_parameters
-
-    // Function has an unused type parameter in parent and closure.
-    pub fn unused<T>() -> u32 {
-        let add_one = |x: u32| x + 1;
-        add_one(3)
-    }
-
-    //~ MONO_ITEM fn closures::unused::<T>::{closure#0}
-    //~ MONO_ITEM fn closures::unused::<T>
-
-    // Function has an unused type parameter in closure, but not in parent.
-    pub fn used_parent<T: Default>() -> u32 {
-        let _: T = Default::default();
-        let add_one = |x: u32| x + 1;
-        add_one(3)
-    }
-
-    //~ MONO_ITEM fn closures::used_parent::<T>::{closure#0}
-    //~ MONO_ITEM fn closures::used_parent::<u32>
-    //~ MONO_ITEM fn closures::used_parent::<u64>
-
-    // Function uses type parameter in value of a binding in closure.
-    pub fn used_binding_value<T: Default>() -> T {
-        let x = || {
-            let y: T = Default::default();
-            y
-        };
-
-        x()
-    }
-
-    //~ MONO_ITEM fn closures::used_binding_value::<u32>::{closure#0}
-    //~ MONO_ITEM fn closures::used_binding_value::<u64>::{closure#0}
-    //~ MONO_ITEM fn closures::used_binding_value::<u32>
-    //~ MONO_ITEM fn closures::used_binding_value::<u64>
-
-    // Function uses type parameter in type of a binding in closure.
-    pub fn used_binding_type<T>() -> Option<T> {
-        let x = || {
-            let y: Option<T> = None;
-            y
-        };
-
-        x()
-    }
-
-    //~ MONO_ITEM fn closures::used_binding_type::<u32>::{closure#0}
-    //~ MONO_ITEM fn closures::used_binding_type::<u64>::{closure#0}
-    //~ MONO_ITEM fn closures::used_binding_type::<u32>
-    //~ MONO_ITEM fn closures::used_binding_type::<u64>
-
-    // Function and closure uses type parameter in argument.
-    pub fn used_argument<T>(t: T) -> u32 {
-        let x = |_: T| 3;
-        x(t)
-    }
-
-    //~ MONO_ITEM fn closures::used_argument::<u32>::{closure#0}
-    //~ MONO_ITEM fn closures::used_argument::<u64>::{closure#0}
-    //~ MONO_ITEM fn closures::used_argument::<u32>
-    //~ MONO_ITEM fn closures::used_argument::<u64>
-
-    // Closure uses type parameter in argument.
-    pub fn used_argument_closure<T: Default>() -> u32 {
-        let t: T = Default::default();
-        let x = |_: T| 3;
-        x(t)
-    }
-
-    //~ MONO_ITEM fn closures::used_argument_closure::<u32>::{closure#0}
-    //~ MONO_ITEM fn closures::used_argument_closure::<u64>::{closure#0}
-    //~ MONO_ITEM fn closures::used_argument_closure::<u32>
-    //~ MONO_ITEM fn closures::used_argument_closure::<u64>
-
-    // Closure uses type parameter as upvar.
-    pub fn used_upvar<T: Default>() -> T {
-        let x: T = Default::default();
-        let y = || x;
-        y()
-    }
-
-    //~ MONO_ITEM fn closures::used_upvar::<u32>::{closure#0}
-    //~ MONO_ITEM fn closures::used_upvar::<u64>::{closure#0}
-    //~ MONO_ITEM fn closures::used_upvar::<u32>
-    //~ MONO_ITEM fn closures::used_upvar::<u64>
-
-    // Closure uses type parameter in substitutions to another function.
-    pub fn used_substs<T>() {
-        let x = || super::functions::unused::<T>();
-        x()
-    }
-
-    //~ MONO_ITEM fn closures::used_substs::<u32>::{closure#0}
-    //~ MONO_ITEM fn closures::used_substs::<u64>::{closure#0}
-    //~ MONO_ITEM fn closures::used_substs::<u32>
-    //~ MONO_ITEM fn closures::used_substs::<u64>
-}
-
-mod methods {
-    pub struct Foo<F>(F);
-
-    impl<F: Default> Foo<F> {
-        // Function has an unused type parameter from impl.
-        pub fn unused_impl() {}
-
-        //~ MONO_ITEM fn methods::Foo::<F>::unused_impl
-
-        // Function has an unused type parameter from impl and fn.
-        pub fn unused_both<G: Default>() {}
-
-        //~ MONO_ITEM fn methods::Foo::<F>::unused_both::<G>
-
-        // Function uses type parameter from impl.
-        pub fn used_impl() {
-            let _: F = Default::default();
-        }
-
-        //~ MONO_ITEM fn methods::Foo::<u32>::used_impl
-        //~ MONO_ITEM fn methods::Foo::<u64>::used_impl
-
-        // Function uses type parameter from impl.
-        pub fn used_fn<G: Default>() {
-            let _: G = Default::default();
-        }
-
-        //~ MONO_ITEM fn methods::Foo::<F>::used_fn::<u32>
-        //~ MONO_ITEM fn methods::Foo::<F>::used_fn::<u64>
-
-        // Function uses type parameter from impl.
-        pub fn used_both<G: Default>() {
-            let _: F = Default::default();
-            let _: G = Default::default();
-        }
-
-        //~ MONO_ITEM fn methods::Foo::<u32>::used_both::<u32>
-        //~ MONO_ITEM fn methods::Foo::<u64>::used_both::<u64>
-
-        // Function uses type parameter in substitutions to another function.
-        pub fn used_substs() {
-            super::functions::unused::<F>()
-        }
-
-        //~ MONO_ITEM fn methods::Foo::<u32>::used_substs
-        //~ MONO_ITEM fn methods::Foo::<u64>::used_substs
-
-        // Function has an unused type parameter from impl and fn.
-        pub fn closure_unused_all<G: Default>() -> u32 {
-            let add_one = |x: u32| x + 1;
-            add_one(3)
-        }
-
-        //~ MONO_ITEM fn methods::Foo::<F>::closure_unused_all::<G>::{closure#0}
-        //~ MONO_ITEM fn methods::Foo::<F>::closure_unused_all::<G>
-
-        // Function uses type parameter from impl and fn in closure.
-        pub fn closure_used_both<G: Default>() -> u32 {
-            let add_one = |x: u32| {
-                let _: F = Default::default();
-                let _: G = Default::default();
-                x + 1
-            };
-
-            add_one(3)
-        }
-
-        //~ MONO_ITEM fn methods::Foo::<u32>::closure_used_both::<u32>::{closure#0}
-        //~ MONO_ITEM fn methods::Foo::<u64>::closure_used_both::<u64>::{closure#0}
-        //~ MONO_ITEM fn methods::Foo::<u32>::closure_used_both::<u32>
-        //~ MONO_ITEM fn methods::Foo::<u64>::closure_used_both::<u64>
-
-        // Function uses type parameter from fn in closure.
-        pub fn closure_used_fn<G: Default>() -> u32 {
-            let add_one = |x: u32| {
-                let _: G = Default::default();
-                x + 1
-            };
-
-            add_one(3)
-        }
-
-        //~ MONO_ITEM fn methods::Foo::<F>::closure_used_fn::<u32>::{closure#0}
-        //~ MONO_ITEM fn methods::Foo::<F>::closure_used_fn::<u64>::{closure#0}
-        //~ MONO_ITEM fn methods::Foo::<F>::closure_used_fn::<u32>
-        //~ MONO_ITEM fn methods::Foo::<F>::closure_used_fn::<u64>
-
-        // Function uses type parameter from impl in closure.
-        pub fn closure_used_impl<G: Default>() -> u32 {
-            let add_one = |x: u32| {
-                let _: F = Default::default();
-                x + 1
-            };
-
-            add_one(3)
-        }
-
-        //~ MONO_ITEM fn methods::Foo::<u32>::closure_used_impl::<G>::{closure#0}
-        //~ MONO_ITEM fn methods::Foo::<u64>::closure_used_impl::<G>::{closure#0}
-        //~ MONO_ITEM fn methods::Foo::<u32>::closure_used_impl::<G>
-        //~ MONO_ITEM fn methods::Foo::<u64>::closure_used_impl::<G>
-
-        // Closure uses type parameter in substitutions to another function.
-        pub fn closure_used_substs() {
-            let x = || super::functions::unused::<F>();
-            x()
-        }
-
-        //~ MONO_ITEM fn methods::Foo::<u32>::closure_used_substs::{closure#0}
-        //~ MONO_ITEM fn methods::Foo::<u64>::closure_used_substs::{closure#0}
-        //~ MONO_ITEM fn methods::Foo::<u32>::closure_used_substs
-        //~ MONO_ITEM fn methods::Foo::<u64>::closure_used_substs
-    }
-}
-
-fn dispatch<T: Default>() {
-    functions::no_parameters();
-    functions::unused::<T>();
-    functions::used_binding_value::<T>();
-    functions::used_binding_type::<T>();
-    functions::used_argument::<T>(Default::default());
-    functions::used_substs::<T>();
-
-    closures::no_parameters();
-    let _ = closures::unused::<T>();
-    let _ = closures::used_parent::<T>();
-    let _ = closures::used_binding_value::<T>();
-    let _ = closures::used_binding_type::<T>();
-    let _ = closures::used_argument::<T>(Default::default());
-    let _ = closures::used_argument_closure::<T>();
-    let _ = closures::used_upvar::<T>();
-    let _ = closures::used_substs::<T>();
-
-    methods::Foo::<T>::unused_impl();
-    methods::Foo::<T>::unused_both::<T>();
-    methods::Foo::<T>::used_impl();
-    methods::Foo::<T>::used_fn::<T>();
-    methods::Foo::<T>::used_both::<T>();
-    methods::Foo::<T>::used_substs();
-    let _ = methods::Foo::<T>::closure_unused_all::<T>();
-    let _ = methods::Foo::<T>::closure_used_both::<T>();
-    let _ = methods::Foo::<T>::closure_used_impl::<T>();
-    let _ = methods::Foo::<T>::closure_used_fn::<T>();
-    let _ = methods::Foo::<T>::closure_used_substs();
-}
-
-//~ MONO_ITEM fn dispatch::<u32>
-//~ MONO_ITEM fn dispatch::<u64>
-
-pub fn foo() {
-    // Generate two copies of each function to check that where the type parameter is unused,
-    // there is only a single copy.
-    dispatch::<u32>();
-    dispatch::<u64>();
-}
-
-//~ MONO_ITEM fn foo @@ unused_type_parameters-cgu.0[External]
-
-// These are all the items that aren't relevant to the test.
-//~ MONO_ITEM fn <u32 as std::default::Default>::default
-//~ MONO_ITEM fn <u64 as std::default::Default>::default
diff --git a/tests/crashes/105249.rs b/tests/crashes/105249.rs
deleted file mode 100644
index 592ed5b6dbc..00000000000
--- a/tests/crashes/105249.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-//@ known-bug: #105249
-//@ compile-flags: -Zpolymorphize=on
-
-trait Foo<T> {
-    fn print<'a>(&'a self) where T: 'a { println!("foo"); }
-}
-
-impl<'a> Foo<&'a ()> for () { }
-
-trait Bar: for<'a> Foo<&'a ()> { }
-
-impl Bar for () {}
-
-fn main() {
-    (&() as &dyn Bar).print(); // Segfault
-}
diff --git a/tests/crashes/123893.rs b/tests/crashes/123893.rs
deleted file mode 100644
index 05237d002b8..00000000000
--- a/tests/crashes/123893.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-//@ known-bug: #123893
-//@ compile-flags: -Zpolymorphize=on -Zinline-mir=yes -Zinline-mir-threshold=20
-pub fn main() {
-    generic_impl::<bool>();
-}
-
-fn generic_impl<T>() {
-    trait MagicTrait {
-        const IS_BIG: bool;
-    }
-    impl<T> MagicTrait for T {
-        const IS_BIG: bool = true;
-    }
-    more_cost();
-    if T::IS_BIG {
-        big_impl::<i32>();
-    }
-}
-
-#[inline(never)]
-fn big_impl<T>() {}
-
-#[inline(never)]
-fn more_cost() {}
diff --git a/tests/crashes/124020.rs b/tests/crashes/124020.rs
deleted file mode 100644
index a944213298d..00000000000
--- a/tests/crashes/124020.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-//@ known-bug: #124020
-//@ compile-flags: -Zpolymorphize=on --edition=2018 --crate-type=lib
-
-#![feature(async_closure, async_trait_bounds)]
-
-use std::future::Future;
-use std::pin::pin;
-use std::task::*;
-
-pub fn block_on<T>(fut: impl Future<Output = T>) -> T {
-    let mut fut = pin!(fut);
-    let ctx = &mut Context::from_waker(Waker::noop());
-
-    loop {
-        match fut.as_mut().poll(ctx) {
-            Poll::Pending => {}
-            Poll::Ready(t) => break t,
-        }
-    }
-}
-
-async fn call_once(f: impl AsyncFnOnce(DropMe)) {
-    f(DropMe("world")).await;
-}
-
-struct DropMe(&'static str);
-
-pub fn future() {
-    block_on(async {
-        let async_closure = async move |a: DropMe| {};
-        call_once(async_closure).await;
-    });
-}
diff --git a/tests/crashes/124436.rs b/tests/crashes/124436.rs
deleted file mode 100644
index aed830e8f0e..00000000000
--- a/tests/crashes/124436.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-//@ known-bug: rust-lang/rust#124436
-//@ compile-flags: -Zdump-mir=all -Zpolymorphize=on
-
-pub trait TraitCat {}
-pub trait TraitDog {}
-
-pub fn gamma<T: TraitCat + TraitDog>(t: [TraitDog; 32]) {}
diff --git a/tests/crashes/130425.rs b/tests/crashes/130425.rs
deleted file mode 100644
index 559b86f7bc2..00000000000
--- a/tests/crashes/130425.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-//@ known-bug: #130425
-//@ compile-flags: -Zmir-opt-level=5 -Zpolymorphize=on
-
-struct S<T>(T)
-where
-    [T; (
-        |_: u8| {
-            static FOO: Sync = AtomicUsize::new(0);
-            unsafe { &*(&FOO as *const _ as *const usize) }
-        },
-        1,
-    )
-        .1]: Copy;
diff --git a/tests/ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs b/tests/ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs
deleted file mode 100644
index df454dae725..00000000000
--- a/tests/ui/const-generics/generic_const_exprs/auxiliary/issue-94287-aux.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-#![feature(generic_const_exprs)]
-
-use std::str::FromStr;
-
-pub struct If<const CONDITION: bool>;
-
-pub trait True {}
-
-impl True for If<true> {}
-
-pub struct FixedI32<const FRAC: u32>;
-
-impl<const FRAC: u32> FromStr for FixedI32<FRAC>
-where
-    If<{ FRAC <= 32 }>: True,
-{
-    type Err = ();
-    fn from_str(_s: &str) -> Result<Self, Self::Err> {
-        unimplemented!()
-    }
-}
diff --git a/tests/ui/const-generics/generic_const_exprs/issue-94287.rs b/tests/ui/const-generics/generic_const_exprs/issue-94287.rs
deleted file mode 100644
index 4b2fa1dac9b..00000000000
--- a/tests/ui/const-generics/generic_const_exprs/issue-94287.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-//@ aux-build:issue-94287-aux.rs
-//@ build-fail
-
-extern crate issue_94287_aux;
-
-use std::str::FromStr;
-
-fn main() {
-    let _ = <issue_94287_aux::FixedI32<16>>::from_str("");
-}
diff --git a/tests/ui/const-generics/generic_const_exprs/issue-94287.stderr b/tests/ui/const-generics/generic_const_exprs/issue-94287.stderr
deleted file mode 100644
index b57779739a5..00000000000
--- a/tests/ui/const-generics/generic_const_exprs/issue-94287.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error: failed to evaluate generic const expression
-  --> $DIR/auxiliary/issue-94287-aux.rs:15:8
-   |
-LL |     If<{ FRAC <= 32 }>: True,
-   |        ^^^^^^^^^^^^^^
-   |
-   = note: the crate this constant originates from uses `#![feature(generic_const_exprs)]`
-help: consider enabling this feature
-  --> $DIR/issue-94287.rs:1:1
-   |
-LL + #![feature(generic_const_exprs)]
-   |
-
-error: aborting due to 1 previous error
-
diff --git a/tests/ui/coroutine/polymorphize-args.rs b/tests/ui/coroutine/polymorphize-args.rs
deleted file mode 100644
index 5123bf412b5..00000000000
--- a/tests/ui/coroutine/polymorphize-args.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-//@ compile-flags: -Zpolymorphize=on
-//@ build-pass
-
-#![feature(coroutines, coroutine_trait, stmt_expr_attributes)]
-
-use std::ops::Coroutine;
-use std::pin::Pin;
-use std::thread;
-
-fn main() {
-    let mut foo = #[coroutine]
-    || yield;
-    thread::spawn(move || match Pin::new(&mut foo).resume(()) {
-        s => panic!("bad state: {:?}", s),
-    })
-    .join()
-    .unwrap();
-}
diff --git a/tests/ui/mir/inline-wrong-abi.rs b/tests/ui/mir/inline-wrong-abi.rs
index 8ef0b86a26b..f015463846f 100644
--- a/tests/ui/mir/inline-wrong-abi.rs
+++ b/tests/ui/mir/inline-wrong-abi.rs
@@ -1,4 +1,4 @@
-//@ compile-flags: -Zpolymorphize=on -Zinline-mir=yes -Zmir-opt-level=0
+//@ compile-flags: -Zinline-mir=yes -Zmir-opt-level=0 -Zvalidate-mir
 
 #![feature(fn_traits, unboxed_closures)]
 struct Foo<T>(T);
diff --git a/tests/ui/polymorphization/abi_mismatch.rs b/tests/ui/polymorphization/abi_mismatch.rs
deleted file mode 100644
index 22c2c162d1c..00000000000
--- a/tests/ui/polymorphization/abi_mismatch.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-//! This test used to ICE: #123917
-//! The reason was that while the AST knows about two fields
-//! named `ptr`, only one exists at the layout level, so accessing
-//! `_extra_field` would use an oob index
-//@ compile-flags: -Zmir-opt-level=5 -Zpolymorphize=on
-
-struct NonNull<T>(*mut T);
-
-struct Token<T> {
-    ptr: *mut T,
-    ptr: NonNull<T>,
-    //~^ ERROR: `ptr` is already declared
-    _extra_field: (),
-}
-
-fn tokenize<T>(item: *mut T) -> Token<T> {
-    Token { ptr: NonNull(item), _extra_field: () }
-}
-
-fn main() {}
diff --git a/tests/ui/polymorphization/abi_mismatch.stderr b/tests/ui/polymorphization/abi_mismatch.stderr
deleted file mode 100644
index e96c737f777..00000000000
--- a/tests/ui/polymorphization/abi_mismatch.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0124]: field `ptr` is already declared
-  --> $DIR/abi_mismatch.rs:11:5
-   |
-LL |     ptr: *mut T,
-   |     ----------- `ptr` first declared here
-LL |     ptr: NonNull<T>,
-   |     ^^^^^^^^^^^^^^^ field already declared
-
-error: aborting due to 1 previous error
-
-For more information about this error, try `rustc --explain E0124`.
diff --git a/tests/ui/polymorphization/closure_in_upvar/fn.rs b/tests/ui/polymorphization/closure_in_upvar/fn.rs
deleted file mode 100644
index 87f7bc9562b..00000000000
--- a/tests/ui/polymorphization/closure_in_upvar/fn.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-//@ build-pass
-//@ compile-flags:-Zpolymorphize=on -Csymbol-mangling-version=v0
-
-fn foo(f: impl Fn()) {
-    let x = |_: ()| ();
-
-    // Don't use `f` in `y`, but refer to `x` so that the closure substs contain a reference to
-    // `x` that will differ for each instantiation despite polymorphisation of the varying
-    // argument.
-    let y = || x(());
-
-    // Consider `f` used in `foo`.
-    f();
-    // Use `y` so that it is visited in monomorphisation collection.
-    y();
-}
-
-fn entry_a() {
-    foo(|| ());
-}
-
-fn entry_b() {
-    foo(|| ());
-}
-
-fn main() {
-    entry_a();
-    entry_b();
-}
diff --git a/tests/ui/polymorphization/closure_in_upvar/fnmut.rs b/tests/ui/polymorphization/closure_in_upvar/fnmut.rs
deleted file mode 100644
index 0f49c0426ee..00000000000
--- a/tests/ui/polymorphization/closure_in_upvar/fnmut.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-//@ build-pass
-//@ compile-flags:-Zpolymorphize=on -Csymbol-mangling-version=v0
-
-fn foo(f: impl Fn()) {
-    // Mutate an upvar from `x` so that it implements `FnMut`.
-    let mut outer = 3;
-    let mut x = |_: ()| {
-        outer = 4;
-        ()
-    };
-
-    // Don't use `f` in `y`, but refer to `x` so that the closure substs contain a reference to
-    // `x` that will differ for each instantiation despite polymorphisation of the varying
-    // argument.
-    let mut y = || x(());
-
-    // Consider `f` used in `foo`.
-    f();
-    // Use `y` so that it is visited in monomorphisation collection.
-    y();
-}
-
-fn entry_a() {
-    foo(|| ());
-}
-
-fn entry_b() {
-    foo(|| ());
-}
-
-fn main() {
-    entry_a();
-    entry_b();
-}
diff --git a/tests/ui/polymorphization/closure_in_upvar/fnonce.rs b/tests/ui/polymorphization/closure_in_upvar/fnonce.rs
deleted file mode 100644
index 85c7ce2ce27..00000000000
--- a/tests/ui/polymorphization/closure_in_upvar/fnonce.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-//@ build-pass
-//@ compile-flags:-Zpolymorphize=on -Csymbol-mangling-version=v0
-
-fn foo(f: impl Fn()) {
-    // Move a non-copy type into `x` so that it implements `FnOnce`.
-    let outer = Vec::<u32>::new();
-    let x = move |_: ()| {
-        let inner = outer;
-        ()
-    };
-
-    // Don't use `f` in `y`, but refer to `x` so that the closure substs contain a reference to
-    // `x` that will differ for each instantiation despite polymorphisation of the varying
-    // argument.
-    let y = || x(());
-
-    // Consider `f` used in `foo`.
-    f();
-    // Use `y` so that it is visited in monomorphisation collection.
-    y();
-}
-
-fn entry_a() {
-    foo(|| ());
-}
-
-fn entry_b() {
-    foo(|| ());
-}
-
-fn main() {
-    entry_a();
-    entry_b();
-}
diff --git a/tests/ui/polymorphization/closure_in_upvar/other.rs b/tests/ui/polymorphization/closure_in_upvar/other.rs
deleted file mode 100644
index b008fc49af4..00000000000
--- a/tests/ui/polymorphization/closure_in_upvar/other.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-//@ build-pass
-//@ compile-flags:-Zpolymorphize=on -Csymbol-mangling-version=v0
-
-fn y_uses_f(f: impl Fn()) {
-    let x = |_: ()| ();
-
-    let y = || {
-        f();
-        x(());
-    };
-
-    f();
-    y();
-}
-
-fn x_uses_f(f: impl Fn()) {
-    let x = |_: ()| { f(); };
-
-    let y = || x(());
-
-    f();
-    y();
-}
-
-fn entry_a() {
-    x_uses_f(|| ());
-    y_uses_f(|| ());
-}
-
-fn entry_b() {
-    x_uses_f(|| ());
-    y_uses_f(|| ());
-}
-
-fn main() {
-    entry_a();
-    entry_b();
-}
diff --git a/tests/ui/polymorphization/const_parameters/closures.rs b/tests/ui/polymorphization/const_parameters/closures.rs
deleted file mode 100644
index 8bdb7381454..00000000000
--- a/tests/ui/polymorphization/const_parameters/closures.rs
+++ /dev/null
@@ -1,67 +0,0 @@
-//@ build-fail
-//@ compile-flags:-Zpolymorphize=on
-#![feature(generic_const_exprs, rustc_attrs)]
-//~^ WARN the feature `generic_const_exprs` is incomplete
-
-// This test checks that the polymorphization analysis correctly detects unused const
-// parameters in closures.
-
-// Function doesn't have any generic parameters to be unused.
-#[rustc_polymorphize_error]
-pub fn no_parameters() {
-    let _ = || {};
-}
-
-// Function has an unused generic parameter in parent and closure.
-#[rustc_polymorphize_error]
-pub fn unused<const T: usize>() -> usize {
-    //~^ ERROR item has unused generic parameters
-    let add_one = |x: usize| x + 1;
-    //~^ ERROR item has unused generic parameters
-    add_one(3)
-}
-
-// Function has an unused generic parameter in closure, but not in parent.
-#[rustc_polymorphize_error]
-pub fn used_parent<const T: usize>() -> usize {
-    let x: usize = T;
-    let add_one = |x: usize| x + 1;
-    //~^ ERROR item has unused generic parameters
-    x + add_one(3)
-}
-
-// Function uses generic parameter in value of a binding in closure.
-#[rustc_polymorphize_error]
-pub fn used_binding<const T: usize>() -> usize {
-    let x = || {
-        let y: usize = T;
-        y
-    };
-
-    x()
-}
-
-// Closure uses a value as an upvar, which used the generic parameter.
-#[rustc_polymorphize_error]
-pub fn unused_upvar<const T: usize>() -> usize {
-    let x: usize = T;
-    let y = || x;
-    //~^ ERROR item has unused generic parameters
-    y()
-}
-
-// Closure uses generic parameter in substitutions to another function.
-#[rustc_polymorphize_error]
-pub fn used_substs<const T: usize>() -> usize {
-    let x = || unused::<T>();
-    x()
-}
-
-fn main() {
-    no_parameters();
-    let _ = unused::<1>();
-    let _ = used_parent::<1>();
-    let _ = used_binding::<1>();
-    let _ = unused_upvar::<1>();
-    let _ = used_substs::<1>();
-}
diff --git a/tests/ui/polymorphization/const_parameters/closures.stderr b/tests/ui/polymorphization/const_parameters/closures.stderr
deleted file mode 100644
index 4e927f7732f..00000000000
--- a/tests/ui/polymorphization/const_parameters/closures.stderr
+++ /dev/null
@@ -1,44 +0,0 @@
-warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/closures.rs:3:12
-   |
-LL | #![feature(generic_const_exprs, rustc_attrs)]
-   |            ^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:19:19
-   |
-LL | pub fn unused<const T: usize>() -> usize {
-   |               -------------- generic parameter `T` is unused
-LL |
-LL |     let add_one = |x: usize| x + 1;
-   |                   ^^^^^^^^^^
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:17:8
-   |
-LL | pub fn unused<const T: usize>() -> usize {
-   |        ^^^^^^ -------------- generic parameter `T` is unused
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:28:19
-   |
-LL | pub fn used_parent<const T: usize>() -> usize {
-   |                    -------------- generic parameter `T` is unused
-LL |     let x: usize = T;
-LL |     let add_one = |x: usize| x + 1;
-   |                   ^^^^^^^^^^
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:48:13
-   |
-LL | pub fn unused_upvar<const T: usize>() -> usize {
-   |                     -------------- generic parameter `T` is unused
-LL |     let x: usize = T;
-LL |     let y = || x;
-   |             ^^
-
-error: aborting due to 4 previous errors; 1 warning emitted
-
diff --git a/tests/ui/polymorphization/const_parameters/functions.rs b/tests/ui/polymorphization/const_parameters/functions.rs
deleted file mode 100644
index 6535e3f081d..00000000000
--- a/tests/ui/polymorphization/const_parameters/functions.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-//@ build-fail
-//@ compile-flags:-Zpolymorphize=on
-#![feature(generic_const_exprs, rustc_attrs)]
-//~^ WARN the feature `generic_const_exprs` is incomplete
-
-// This test checks that the polymorphization analysis correctly detects unused const
-// parameters in functions.
-
-// Function doesn't have any generic parameters to be unused.
-#[rustc_polymorphize_error]
-pub fn no_parameters() {}
-
-// Function has an unused generic parameter.
-#[rustc_polymorphize_error]
-pub fn unused<const T: usize>() {
-    //~^ ERROR item has unused generic parameters
-}
-
-// Function uses generic parameter in value of a binding.
-#[rustc_polymorphize_error]
-pub fn used_binding<const T: usize>() -> usize {
-    let x: usize = T;
-    x
-}
-
-// Function uses generic parameter in substitutions to another function.
-#[rustc_polymorphize_error]
-pub fn used_substs<const T: usize>() {
-    unused::<T>()
-}
-
-fn main() {
-    no_parameters();
-    unused::<1>();
-    used_binding::<1>();
-    used_substs::<1>();
-}
diff --git a/tests/ui/polymorphization/const_parameters/functions.stderr b/tests/ui/polymorphization/const_parameters/functions.stderr
deleted file mode 100644
index a3033d1dcab..00000000000
--- a/tests/ui/polymorphization/const_parameters/functions.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/functions.rs:3:12
-   |
-LL | #![feature(generic_const_exprs, rustc_attrs)]
-   |            ^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
-error: item has unused generic parameters
-  --> $DIR/functions.rs:15:8
-   |
-LL | pub fn unused<const T: usize>() {
-   |        ^^^^^^ -------------- generic parameter `T` is unused
-
-error: aborting due to 1 previous error; 1 warning emitted
-
diff --git a/tests/ui/polymorphization/coroutine.rs b/tests/ui/polymorphization/coroutine.rs
deleted file mode 100644
index 22ceadfb194..00000000000
--- a/tests/ui/polymorphization/coroutine.rs
+++ /dev/null
@@ -1,98 +0,0 @@
-//@ build-fail
-//@ compile-flags:-Zpolymorphize=on -Zinline-mir=off
-#![feature(generic_const_exprs, coroutines, coroutine_trait, rustc_attrs)]
-//~^ WARN the feature `generic_const_exprs` is incomplete
-
-use std::marker::Unpin;
-use std::ops::{Coroutine, CoroutineState};
-use std::pin::Pin;
-
-enum YieldOrReturn<Y, R> {
-    Yield(Y),
-    Return(R),
-}
-
-fn finish<T, Y, R>(mut t: T) -> Vec<YieldOrReturn<Y, R>>
-where
-    T: Coroutine<(), Yield = Y, Return = R> + Unpin,
-{
-    let mut results = Vec::new();
-    loop {
-        match Pin::new(&mut t).resume(()) {
-            CoroutineState::Yielded(yielded) => results.push(YieldOrReturn::Yield(yielded)),
-            CoroutineState::Complete(returned) => {
-                results.push(YieldOrReturn::Return(returned));
-                return results;
-            }
-        }
-    }
-}
-
-// This test checks that the polymorphization analysis functions on coroutines.
-
-#[rustc_polymorphize_error]
-pub fn unused_type<T>() -> impl Coroutine<(), Yield = u32, Return = u32> + Unpin {
-    #[coroutine]
-    || {
-        //~^ ERROR item has unused generic parameters
-        yield 1;
-        2
-    }
-}
-
-#[rustc_polymorphize_error]
-pub fn used_type_in_yield<Y: Default>() -> impl Coroutine<(), Yield = Y, Return = u32> + Unpin {
-    #[coroutine]
-    || {
-        yield Y::default();
-        2
-    }
-}
-
-#[rustc_polymorphize_error]
-pub fn used_type_in_return<R: Default>() -> impl Coroutine<(), Yield = u32, Return = R> + Unpin {
-    #[coroutine]
-    || {
-        yield 3;
-        R::default()
-    }
-}
-
-#[rustc_polymorphize_error]
-pub fn unused_const<const T: u32>() -> impl Coroutine<(), Yield = u32, Return = u32> + Unpin {
-    #[coroutine]
-    || {
-        //~^ ERROR item has unused generic parameters
-        yield 1;
-        2
-    }
-}
-
-#[rustc_polymorphize_error]
-pub fn used_const_in_yield<const Y: u32>() -> impl Coroutine<(), Yield = u32, Return = u32> + Unpin
-{
-    #[coroutine]
-    || {
-        yield Y;
-        2
-    }
-}
-
-#[rustc_polymorphize_error]
-pub fn used_const_in_return<const R: u32>() -> impl Coroutine<(), Yield = u32, Return = u32> + Unpin
-{
-    #[coroutine]
-    || {
-        yield 4;
-        R
-    }
-}
-
-fn main() {
-    finish(unused_type::<u32>());
-    finish(used_type_in_yield::<u32>());
-    finish(used_type_in_return::<u32>());
-    finish(unused_const::<1u32>());
-    finish(used_const_in_yield::<1u32>());
-    finish(used_const_in_return::<1u32>());
-}
diff --git a/tests/ui/polymorphization/coroutine.stderr b/tests/ui/polymorphization/coroutine.stderr
deleted file mode 100644
index 07e29184226..00000000000
--- a/tests/ui/polymorphization/coroutine.stderr
+++ /dev/null
@@ -1,29 +0,0 @@
-warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/coroutine.rs:3:12
-   |
-LL | #![feature(generic_const_exprs, coroutines, coroutine_trait, rustc_attrs)]
-   |            ^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
-error: item has unused generic parameters
-  --> $DIR/coroutine.rs:36:5
-   |
-LL | pub fn unused_type<T>() -> impl Coroutine<(), Yield = u32, Return = u32> + Unpin {
-   |                    - generic parameter `T` is unused
-LL |     #[coroutine]
-LL |     || {
-   |     ^^
-
-error: item has unused generic parameters
-  --> $DIR/coroutine.rs:64:5
-   |
-LL | pub fn unused_const<const T: u32>() -> impl Coroutine<(), Yield = u32, Return = u32> + Unpin {
-   |                     ------------ generic parameter `T` is unused
-LL |     #[coroutine]
-LL |     || {
-   |     ^^
-
-error: aborting due to 2 previous errors; 1 warning emitted
-
diff --git a/tests/ui/polymorphization/drop_shims/simple.rs b/tests/ui/polymorphization/drop_shims/simple.rs
deleted file mode 100644
index e51765bf432..00000000000
--- a/tests/ui/polymorphization/drop_shims/simple.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-//@ check-pass
-//@ compile-flags:-Zpolymorphize=on
-
-pub struct OnDrop<F: Fn()>(pub F);
-
-impl<F: Fn()> Drop for OnDrop<F> {
-    fn drop(&mut self) { }
-}
-
-fn foo<R, S: FnOnce()>(
-    _: R,
-    _: S,
-) {
-    let bar = || {
-        let _ = OnDrop(|| ());
-    };
-    bar();
-}
-
-fn main() {
-    foo(3u32, || {});
-}
diff --git a/tests/ui/polymorphization/drop_shims/transitive.rs b/tests/ui/polymorphization/drop_shims/transitive.rs
deleted file mode 100644
index 331451e1a15..00000000000
--- a/tests/ui/polymorphization/drop_shims/transitive.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-//@ check-pass
-//@ compile-flags:-Zpolymorphize=on
-
-pub struct OnDrop<F: Fn()>(pub F);
-
-impl<F: Fn()> Drop for OnDrop<F> {
-    fn drop(&mut self) { }
-}
-
-fn bar<F: FnOnce()>(f: F) {
-    let _ = OnDrop(|| ());
-    f()
-}
-
-fn foo<R, S: FnOnce()>(
-    _: R,
-    _: S,
-) {
-    let bar = || {
-        bar(|| {})
-    };
-    bar();
-}
-
-fn main() {
-    foo(3u32, || {});
-}
diff --git a/tests/ui/polymorphization/ice-poly-with-mir-opts-90192.rs b/tests/ui/polymorphization/ice-poly-with-mir-opts-90192.rs
deleted file mode 100644
index 4557c7e517c..00000000000
--- a/tests/ui/polymorphization/ice-poly-with-mir-opts-90192.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// issue: rust-lang/rust#90192
-// ICE assertion failed: matches!(ty.kind(), ty :: Param(_))
-//@ compile-flags:-Zpolymorphize=on -Zmir-opt-level=3
-//@ build-pass
-
-fn test<T>() {
-    std::mem::size_of::<T>();
-}
-
-pub fn foo<T>(_: T) -> &'static fn() {
-    &(test::<T> as fn())
-}
-
-fn outer<T>() {
-    foo(|| ());
-}
-
-fn main() {
-    outer::<u8>();
-}
diff --git a/tests/ui/polymorphization/inline-incorrect-early-bound.rs b/tests/ui/polymorphization/inline-incorrect-early-bound.rs
deleted file mode 100644
index e69e4a4faa0..00000000000
--- a/tests/ui/polymorphization/inline-incorrect-early-bound.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// This test demonstrates an ICE that may occur when we try to resolve the instance
-// of a impl that has different generics than the trait it's implementing. This ensures
-// we first check that the args are compatible before resolving the body, just like
-// we do in projection before substituting a GAT.
-//
-// When polymorphization is enabled, we check the optimized MIR for unused parameters.
-// This will invoke the inliner, leading to this ICE.
-
-//@ compile-flags: -Zpolymorphize=on -Zinline-mir=yes
-
-trait Trait {
-    fn foo<'a, K: 'a>(self, _: K);
-}
-
-impl Trait for () {
-    #[inline]
-    fn foo<K>(self, _: K) {
-        //~^ ERROR lifetime parameters or bounds on method `foo` do not match the trait declaration
-        todo!();
-    }
-}
-
-pub fn qux<T>() {
-    ().foo(());
-}
-
-fn main() {}
diff --git a/tests/ui/polymorphization/inline-incorrect-early-bound.stderr b/tests/ui/polymorphization/inline-incorrect-early-bound.stderr
deleted file mode 100644
index 3a1d05e8a36..00000000000
--- a/tests/ui/polymorphization/inline-incorrect-early-bound.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0195]: lifetime parameters or bounds on method `foo` do not match the trait declaration
-  --> $DIR/inline-incorrect-early-bound.rs:17:11
-   |
-LL |     fn foo<'a, K: 'a>(self, _: K);
-   |           -----------
-   |           |       |
-   |           |       this bound might be missing in the impl
-   |           lifetimes in impl do not match this method in trait
-...
-LL |     fn foo<K>(self, _: K) {
-   |           ^^^ lifetimes do not match method in trait
-
-error: aborting due to 1 previous error
-
-For more information about this error, try `rustc --explain E0195`.
diff --git a/tests/ui/polymorphization/inline-tainted-body.rs b/tests/ui/polymorphization/inline-tainted-body.rs
deleted file mode 100644
index 13aec97e22b..00000000000
--- a/tests/ui/polymorphization/inline-tainted-body.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-//@ compile-flags: -Zvalidate-mir -Zinline-mir=yes
-
-#![feature(unboxed_closures)]
-
-use std::sync::Arc;
-
-pub struct WeakOnce<T>();
-//~^ ERROR type parameter `T` is never used
-
-impl<T> WeakOnce<T> {
-    extern "rust-call" fn try_get(&self) -> Option<Arc<T>> {}
-    //~^ ERROR functions with the "rust-call" ABI must take a single non-self tuple argument
-    //~| ERROR mismatched types
-
-    pub fn get(&self) -> Arc<T> {
-        self.try_get()
-            .unwrap_or_else(|| panic!("Singleton {} not available", std::any::type_name::<T>()))
-    }
-}
-
-fn main() {}
diff --git a/tests/ui/polymorphization/inline-tainted-body.stderr b/tests/ui/polymorphization/inline-tainted-body.stderr
deleted file mode 100644
index 5c3bd70adae..00000000000
--- a/tests/ui/polymorphization/inline-tainted-body.stderr
+++ /dev/null
@@ -1,30 +0,0 @@
-error[E0392]: type parameter `T` is never used
-  --> $DIR/inline-tainted-body.rs:7:21
-   |
-LL | pub struct WeakOnce<T>();
-   |                     ^ unused type parameter
-   |
-   = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData`
-   = help: if you intended `T` to be a const parameter, use `const T: /* Type */` instead
-
-error: functions with the "rust-call" ABI must take a single non-self tuple argument
-  --> $DIR/inline-tainted-body.rs:11:35
-   |
-LL |     extern "rust-call" fn try_get(&self) -> Option<Arc<T>> {}
-   |                                   ^^^^^
-
-error[E0308]: mismatched types
-  --> $DIR/inline-tainted-body.rs:11:45
-   |
-LL |     extern "rust-call" fn try_get(&self) -> Option<Arc<T>> {}
-   |                           -------           ^^^^^^^^^^^^^^ expected `Option<Arc<T>>`, found `()`
-   |                           |
-   |                           implicitly returns `()` as its body has no tail or `return` expression
-   |
-   = note:   expected enum `Option<Arc<T>>`
-           found unit type `()`
-
-error: aborting due to 3 previous errors
-
-Some errors have detailed explanations: E0308, E0392.
-For more information about an error, try `rustc --explain E0308`.
diff --git a/tests/ui/polymorphization/issue-74614.rs b/tests/ui/polymorphization/issue-74614.rs
deleted file mode 100644
index 3ed030b5778..00000000000
--- a/tests/ui/polymorphization/issue-74614.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-//@ compile-flags:-Zpolymorphize=on
-//@ build-pass
-
-fn test<T>() {
-    std::mem::size_of::<T>();
-}
-
-pub fn foo<T>(_: T) -> &'static fn() {
-    &(test::<T> as fn())
-}
-
-fn outer<T>() {
-    foo(|| ());
-}
-
-fn main() {
-    outer::<u8>();
-}
diff --git a/tests/ui/polymorphization/issue-74636.rs b/tests/ui/polymorphization/issue-74636.rs
deleted file mode 100644
index b06b5fdb004..00000000000
--- a/tests/ui/polymorphization/issue-74636.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-//@ compile-flags:-Zpolymorphize=on
-//@ build-pass
-
-use std::any::TypeId;
-
-pub fn foo<T: 'static>(_: T) -> TypeId {
-    TypeId::of::<T>()
-}
-
-fn outer<T: 'static>() {
-    foo(|| ());
-}
-
-fn main() {
-    outer::<u8>();
-}
diff --git a/tests/ui/polymorphization/lifetimes.rs b/tests/ui/polymorphization/lifetimes.rs
deleted file mode 100644
index 5f8aa13d61d..00000000000
--- a/tests/ui/polymorphization/lifetimes.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-//@ build-fail
-//@ compile-flags:-Zpolymorphize=on
-#![feature(rustc_attrs)]
-
-// This test checks that the polymorphization analysis doesn't break when the
-// function/closure doesn't just have generic parameters.
-
-// Function has an unused generic parameter.
-#[rustc_polymorphize_error]
-pub fn unused<'a, T>(_: &'a u32) {
-    //~^ ERROR item has unused generic parameters
-}
-
-#[rustc_polymorphize_error]
-pub fn used<'a, T: Default>(_: &'a u32) -> u32 {
-    let _: T = Default::default();
-    let add_one = |x: u32| x + 1;
-    //~^ ERROR item has unused generic parameters
-    add_one(3)
-}
-
-fn main() {
-    unused::<u32>(&3);
-    used::<u32>(&3);
-}
diff --git a/tests/ui/polymorphization/lifetimes.stderr b/tests/ui/polymorphization/lifetimes.stderr
deleted file mode 100644
index 4773dd4fa2e..00000000000
--- a/tests/ui/polymorphization/lifetimes.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-error: item has unused generic parameters
-  --> $DIR/lifetimes.rs:10:8
-   |
-LL | pub fn unused<'a, T>(_: &'a u32) {
-   |        ^^^^^^     - generic parameter `T` is unused
-
-error: item has unused generic parameters
-  --> $DIR/lifetimes.rs:17:19
-   |
-LL | pub fn used<'a, T: Default>(_: &'a u32) -> u32 {
-   |                 - generic parameter `T` is unused
-LL |     let _: T = Default::default();
-LL |     let add_one = |x: u32| x + 1;
-   |                   ^^^^^^^^
-
-error: aborting due to 2 previous errors
-
diff --git a/tests/ui/polymorphization/normalized_sig_types.rs b/tests/ui/polymorphization/normalized_sig_types.rs
deleted file mode 100644
index c8a5b3e9295..00000000000
--- a/tests/ui/polymorphization/normalized_sig_types.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-//@ build-pass
-//@ compile-flags:-Zpolymorphize=on
-
-pub trait ParallelIterator: Sized {
-    fn drive<C: Consumer<()>>(_: C) {
-        C::into_folder();
-    }
-}
-
-pub trait Consumer<T>: Sized {
-    type Result;
-    fn into_folder() -> Self::Result;
-}
-
-impl ParallelIterator for () {}
-
-impl<F: Fn(), T> Consumer<T> for F {
-    type Result = ();
-    fn into_folder() -> Self::Result {
-        unimplemented!()
-    }
-}
-
-fn main() {
-    <()>::drive(|| ());
-}
diff --git a/tests/ui/polymorphization/predicates.rs b/tests/ui/polymorphization/predicates.rs
deleted file mode 100644
index 1ba68f2698e..00000000000
--- a/tests/ui/polymorphization/predicates.rs
+++ /dev/null
@@ -1,95 +0,0 @@
-//@ build-fail
-//@ compile-flags: -Copt-level=0 -Zpolymorphize=on
-
-#![feature(rustc_attrs)]
-
-// This test checks that `T` is considered used in `foo`, because it is used in a predicate for
-// `I`, which is used.
-
-#[rustc_polymorphize_error]
-fn bar<I>() {
-    //~^ ERROR item has unused generic parameters
-}
-
-#[rustc_polymorphize_error]
-fn foo<I, T>(_: I)
-//~^ ERROR item has unused generic parameters
-where
-    I: Iterator<Item = T>,
-{
-    bar::<I>()
-}
-
-#[rustc_polymorphize_error]
-fn baz<I, T>(_: I)
-//~^ ERROR item has unused generic parameters
-where
-    std::iter::Repeat<I>: Iterator<Item = T>,
-{
-    bar::<I>()
-}
-
-// In addition, check that `I` is considered used in `next::{{closure}}`, because `T` is used and
-// `T` is really just `I::Item`. `E` is used due to the fixed-point marking of predicates.
-
-pub(crate) struct Foo<'a, I, E>(I, &'a E);
-
-impl<'a, I, T: 'a, E> Iterator for Foo<'a, I, E>
-where
-    I: Iterator<Item = &'a (T, E)>,
-{
-    type Item = T;
-
-    #[rustc_polymorphize_error]
-    fn next(&mut self) -> Option<Self::Item> {
-        self.find(|_| true)
-        //~^ ERROR item has unused generic parameters
-    }
-}
-
-// Furthermore, check that `B` is considered used because `C` is used, and that `A` is considered
-// used because `B` is now used.
-
-trait Baz<Z> {}
-
-impl Baz<u16> for u8 {}
-impl Baz<u32> for u16 {}
-
-#[rustc_polymorphize_error]
-fn quux<A, B, C: Default>() -> usize
-//~^ ERROR item has unused generic parameters
-where
-    A: Baz<B>,
-    B: Baz<C>,
-{
-    std::mem::size_of::<C>()
-}
-
-// Finally, check that `F` is considered used because `G` is used when neither are in the self-ty
-// of the predicate.
-
-trait Foobar<F, G> {}
-
-impl Foobar<u32, u32> for () {}
-
-#[rustc_polymorphize_error]
-fn foobar<F, G>() -> usize
-//~^ ERROR item has unused generic parameters
-where
-    (): Foobar<F, G>,
-{
-    std::mem::size_of::<G>()
-}
-
-fn main() {
-    let x = &[2u32];
-    foo(x.iter());
-    baz(x.iter());
-
-    let mut a = Foo([(1u32, 1u16)].iter(), &1u16);
-    let _ = a.next();
-
-    let _ = quux::<u8, u16, u32>();
-
-    let _ = foobar::<u32, u32>();
-}
diff --git a/tests/ui/polymorphization/predicates.stderr b/tests/ui/polymorphization/predicates.stderr
deleted file mode 100644
index a3b2f75b12d..00000000000
--- a/tests/ui/polymorphization/predicates.stderr
+++ /dev/null
@@ -1,45 +0,0 @@
-error: item has unused generic parameters
-  --> $DIR/predicates.rs:10:4
-   |
-LL | fn bar<I>() {
-   |    ^^^ - generic parameter `I` is unused
-
-error: item has unused generic parameters
-  --> $DIR/predicates.rs:15:4
-   |
-LL | fn foo<I, T>(_: I)
-   |    ^^^    - generic parameter `T` is unused
-
-error: item has unused generic parameters
-  --> $DIR/predicates.rs:24:4
-   |
-LL | fn baz<I, T>(_: I)
-   |    ^^^    - generic parameter `T` is unused
-
-error: item has unused generic parameters
-  --> $DIR/predicates.rs:45:19
-   |
-LL | impl<'a, I, T: 'a, E> Iterator for Foo<'a, I, E>
-   |          -         - generic parameter `E` is unused
-   |          |
-   |          generic parameter `I` is unused
-...
-LL |         self.find(|_| true)
-   |                   ^^^
-
-error: item has unused generic parameters
-  --> $DIR/predicates.rs:59:4
-   |
-LL | fn quux<A, B, C: Default>() -> usize
-   |    ^^^^ -  - generic parameter `B` is unused
-   |         |
-   |         generic parameter `A` is unused
-
-error: item has unused generic parameters
-  --> $DIR/predicates.rs:76:4
-   |
-LL | fn foobar<F, G>() -> usize
-   |    ^^^^^^ - generic parameter `F` is unused
-
-error: aborting due to 6 previous errors
-
diff --git a/tests/ui/polymorphization/promoted-function-1.rs b/tests/ui/polymorphization/promoted-function-1.rs
deleted file mode 100644
index 8c2ed621249..00000000000
--- a/tests/ui/polymorphization/promoted-function-1.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-//@ build-fail
-//@ compile-flags: -Zpolymorphize=on
-#![crate_type = "lib"]
-#![feature(rustc_attrs)]
-
-fn foo<'a>(_: &'a ()) {}
-
-#[rustc_polymorphize_error]
-pub fn test<T>() {
-    //~^ ERROR item has unused generic parameters
-    foo(&());
-}
diff --git a/tests/ui/polymorphization/promoted-function-1.stderr b/tests/ui/polymorphization/promoted-function-1.stderr
deleted file mode 100644
index 8ab0320aafe..00000000000
--- a/tests/ui/polymorphization/promoted-function-1.stderr
+++ /dev/null
@@ -1,8 +0,0 @@
-error: item has unused generic parameters
-  --> $DIR/promoted-function-1.rs:9:8
-   |
-LL | pub fn test<T>() {
-   |        ^^^^ - generic parameter `T` is unused
-
-error: aborting due to 1 previous error
-
diff --git a/tests/ui/polymorphization/promoted-function-2.rs b/tests/ui/polymorphization/promoted-function-2.rs
deleted file mode 100644
index aaae7064f37..00000000000
--- a/tests/ui/polymorphization/promoted-function-2.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-//@ build-fail
-//@ compile-flags:-Zpolymorphize=on
-#![crate_type = "lib"]
-#![feature(generic_const_exprs, rustc_attrs)]
-//~^ WARN the feature `generic_const_exprs` is incomplete
-
-#[rustc_polymorphize_error]
-fn test<T>() {
-    //~^ ERROR item has unused generic parameters
-    let x = [0; 3 + 4];
-}
-
-pub fn caller() {
-    test::<String>();
-    test::<Vec<String>>();
-}
diff --git a/tests/ui/polymorphization/promoted-function-2.stderr b/tests/ui/polymorphization/promoted-function-2.stderr
deleted file mode 100644
index a5d3bee11d9..00000000000
--- a/tests/ui/polymorphization/promoted-function-2.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
-  --> $DIR/promoted-function-2.rs:4:12
-   |
-LL | #![feature(generic_const_exprs, rustc_attrs)]
-   |            ^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information
-   = note: `#[warn(incomplete_features)]` on by default
-
-error: item has unused generic parameters
-  --> $DIR/promoted-function-2.rs:8:4
-   |
-LL | fn test<T>() {
-   |    ^^^^ - generic parameter `T` is unused
-
-error: aborting due to 1 previous error; 1 warning emitted
-
diff --git a/tests/ui/polymorphization/promoted-function-3.rs b/tests/ui/polymorphization/promoted-function-3.rs
deleted file mode 100644
index 2ac06d5a139..00000000000
--- a/tests/ui/polymorphization/promoted-function-3.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-//@ run-pass
-//@ compile-flags: -Zpolymorphize=on -Zmir-opt-level=4
-
-fn caller<T, U>() -> &'static usize {
-    callee::<U>()
-}
-
-fn callee<T>() -> &'static usize {
-    &std::mem::size_of::<T>()
-}
-
-fn main() {
-    assert_eq!(caller::<(), ()>(), &0);
-}
diff --git a/tests/ui/polymorphization/promoted-function.rs b/tests/ui/polymorphization/promoted-function.rs
deleted file mode 100644
index 057daf4e757..00000000000
--- a/tests/ui/polymorphization/promoted-function.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-//@ run-pass
-//@ compile-flags:-Zpolymorphize=on
-
-fn fop<T>() {}
-
-fn bar<T>() -> &'static fn() {
-    &(fop::<T> as fn())
-}
-pub const FN: &'static fn() = &(fop::<i32> as fn());
-
-fn main() {
-    bar::<u32>();
-    bar::<i32>();
-    (FN)();
-}
diff --git a/tests/ui/polymorphization/symbol-ambiguity.rs b/tests/ui/polymorphization/symbol-ambiguity.rs
deleted file mode 100644
index 183837f9961..00000000000
--- a/tests/ui/polymorphization/symbol-ambiguity.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-//@ build-pass
-//@ compile-flags: -Zpolymorphize=on -Csymbol-mangling-version=v0
-
-pub(crate) struct Foo<'a, I, E>(I, &'a E);
-
-impl<'a, I, T: 'a, E> Iterator for Foo<'a, I, E>
-where
-    I: Iterator<Item = &'a (T, E)>,
-{
-    type Item = T;
-
-    fn next(&mut self) -> Option<Self::Item> {
-        self.find(|_| true)
-    }
-}
-
-fn main() {
-    let mut a = Foo([(1u32, 1u16)].iter(), &1u16);
-    let mut b = Foo([(1u16, 1u32)].iter(), &1u32);
-    let _ = a.next();
-    let _ = b.next();
-}
diff --git a/tests/ui/polymorphization/too-many-generic-params.rs b/tests/ui/polymorphization/too-many-generic-params.rs
deleted file mode 100644
index db160c336e0..00000000000
--- a/tests/ui/polymorphization/too-many-generic-params.rs
+++ /dev/null
@@ -1,85 +0,0 @@
-//@ build-pass
-#![feature(rustc_attrs)]
-
-// This test checks that the analysis doesn't panic when there are >64 generic parameters, but
-// instead considers those parameters used.
-
-#[rustc_polymorphize_error]
-fn bar<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA,
-       AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW,
-       AX, AY, AZ, BA, BB, BC, BD, BE, BF, BG, BH, BI, BJ, BK, BL, BM>()
-{
-    let _: Option<A> = None;
-    let _: Option<B> = None;
-    let _: Option<C> = None;
-    let _: Option<D> = None;
-    let _: Option<E> = None;
-    let _: Option<F> = None;
-    let _: Option<G> = None;
-    let _: Option<H> = None;
-    let _: Option<I> = None;
-    let _: Option<J> = None;
-    let _: Option<K> = None;
-    let _: Option<L> = None;
-    let _: Option<M> = None;
-    let _: Option<N> = None;
-    let _: Option<O> = None;
-    let _: Option<P> = None;
-    let _: Option<Q> = None;
-    let _: Option<R> = None;
-    let _: Option<S> = None;
-    let _: Option<T> = None;
-    let _: Option<U> = None;
-    let _: Option<V> = None;
-    let _: Option<W> = None;
-    let _: Option<X> = None;
-    let _: Option<Y> = None;
-    let _: Option<Z> = None;
-    let _: Option<AA> = None;
-    let _: Option<AB> = None;
-    let _: Option<AC> = None;
-    let _: Option<AD> = None;
-    let _: Option<AE> = None;
-    let _: Option<AF> = None;
-    let _: Option<AG> = None;
-    let _: Option<AH> = None;
-    let _: Option<AI> = None;
-    let _: Option<AJ> = None;
-    let _: Option<AK> = None;
-    let _: Option<AL> = None;
-    let _: Option<AM> = None;
-    let _: Option<AN> = None;
-    let _: Option<AO> = None;
-    let _: Option<AP> = None;
-    let _: Option<AQ> = None;
-    let _: Option<AR> = None;
-    let _: Option<AS> = None;
-    let _: Option<AT> = None;
-    let _: Option<AU> = None;
-    let _: Option<AV> = None;
-    let _: Option<AW> = None;
-    let _: Option<AX> = None;
-    let _: Option<AY> = None;
-    let _: Option<AZ> = None;
-    let _: Option<BA> = None;
-    let _: Option<BB> = None;
-    let _: Option<BC> = None;
-    let _: Option<BD> = None;
-    let _: Option<BE> = None;
-    let _: Option<BF> = None;
-    let _: Option<BG> = None;
-    let _: Option<BH> = None;
-    let _: Option<BI> = None;
-    let _: Option<BJ> = None;
-    let _: Option<BK> = None;
-    let _: Option<BL> = None;
-    let _: Option<BM> = None;
-}
-
-fn main() {
-    bar::<u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32,
-          u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32,
-          u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32,
-          u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32, u32,
-          u32>();
-}
diff --git a/tests/ui/polymorphization/type_parameters/closures.rs b/tests/ui/polymorphization/type_parameters/closures.rs
deleted file mode 100644
index 552c5cb8980..00000000000
--- a/tests/ui/polymorphization/type_parameters/closures.rs
+++ /dev/null
@@ -1,161 +0,0 @@
-//@ build-fail
-//@ compile-flags:-Zpolymorphize=on
-#![feature(stmt_expr_attributes, rustc_attrs)]
-
-// This test checks that the polymorphization analysis correctly detects unused type
-// parameters in closures.
-
-// Function doesn't have any generic parameters to be unused.
-#[rustc_polymorphize_error]
-pub fn no_parameters() {
-    let _ = || {};
-}
-
-// Function has an unused generic parameter in parent and closure.
-#[rustc_polymorphize_error]
-pub fn unused<T>() -> u32 {
-    //~^ ERROR item has unused generic parameters
-
-    let add_one = |x: u32| x + 1;
-    //~^ ERROR item has unused generic parameters
-    add_one(3)
-}
-
-// Function has an unused generic parameter in closure, but not in parent.
-#[rustc_polymorphize_error]
-pub fn used_parent<T: Default>() -> u32 {
-    let _: T = Default::default();
-    let add_one = |x: u32| x + 1;
-    //~^ ERROR item has unused generic parameters
-    add_one(3)
-}
-
-// Function uses generic parameter in value of a binding in closure.
-#[rustc_polymorphize_error]
-pub fn used_binding_value<T: Default>() -> T {
-    let x = || {
-        let y: T = Default::default();
-        y
-    };
-
-    x()
-}
-
-// Function uses generic parameter in generic of a binding in closure.
-#[rustc_polymorphize_error]
-pub fn used_binding_generic<T>() -> Option<T> {
-    let x = || {
-        let y: Option<T> = None;
-        y
-    };
-
-    x()
-}
-
-// Function and closure uses generic parameter in argument.
-#[rustc_polymorphize_error]
-pub fn used_argument<T>(t: T) -> u32 {
-    let x = |_: T| 3;
-    x(t)
-}
-
-// Closure uses generic parameter in argument.
-#[rustc_polymorphize_error]
-pub fn used_argument_closure<T: Default>() -> u32 {
-    let t: T = Default::default();
-
-    let x = |_: T| 3;
-    x(t)
-}
-
-// Closure uses generic parameter as upvar.
-#[rustc_polymorphize_error]
-pub fn used_upvar<T: Default>() -> T {
-    let x: T = Default::default();
-
-    let y = || x;
-    y()
-}
-
-// Closure uses generic parameter in substitutions to another function.
-#[rustc_polymorphize_error]
-pub fn used_substs<T>() -> u32 {
-    let x = || unused::<T>();
-    x()
-}
-
-struct Foo<F>(F);
-
-impl<F: Default> Foo<F> {
-    // Function has an unused generic parameter from impl and fn.
-    #[rustc_polymorphize_error]
-    pub fn unused_all<G: Default>() -> u32 {
-        //~^ ERROR item has unused generic parameters
-        let add_one = |x: u32| x + 1;
-        //~^ ERROR item has unused generic parameters
-        add_one(3)
-    }
-
-    // Function uses generic parameter from impl and fn in closure.
-    #[rustc_polymorphize_error]
-    pub fn used_both<G: Default>() -> u32 {
-        let add_one = |x: u32| {
-            let _: F = Default::default();
-            let _: G = Default::default();
-            x + 1
-        };
-
-        add_one(3)
-    }
-
-    // Function uses generic parameter from fn in closure.
-    #[rustc_polymorphize_error]
-    pub fn used_fn<G: Default>() -> u32 {
-        //~^ ERROR item has unused generic parameters
-        let add_one = |x: u32| {
-            //~^ ERROR item has unused generic parameters
-            let _: G = Default::default();
-            x + 1
-        };
-
-        add_one(3)
-    }
-
-    // Function uses generic parameter from impl in closure.
-    #[rustc_polymorphize_error]
-    pub fn used_impl<G: Default>() -> u32 {
-        //~^ ERROR item has unused generic parameters
-        let add_one = |x: u32| {
-            //~^ ERROR item has unused generic parameters
-            let _: F = Default::default();
-            x + 1
-        };
-
-        add_one(3)
-    }
-
-    // Closure uses generic parameter in substitutions to another function.
-    #[rustc_polymorphize_error]
-    pub fn used_substs() -> u32 {
-        let x = || unused::<F>();
-        x()
-    }
-}
-
-fn main() {
-    no_parameters();
-    let _ = unused::<u32>();
-    let _ = used_parent::<u32>();
-    let _ = used_binding_value::<u32>();
-    let _ = used_binding_generic::<u32>();
-    let _ = used_argument(3u32);
-    let _ = used_argument_closure::<u32>();
-    let _ = used_upvar::<u32>();
-    let _ = used_substs::<u32>();
-
-    let _ = Foo::<u32>::unused_all::<u32>();
-    let _ = Foo::<u32>::used_both::<u32>();
-    let _ = Foo::<u32>::used_impl::<u32>();
-    let _ = Foo::<u32>::used_fn::<u32>();
-    let _ = Foo::<u32>::used_substs();
-}
diff --git a/tests/ui/polymorphization/type_parameters/closures.stderr b/tests/ui/polymorphization/type_parameters/closures.stderr
deleted file mode 100644
index 5c3b46c6041..00000000000
--- a/tests/ui/polymorphization/type_parameters/closures.stderr
+++ /dev/null
@@ -1,80 +0,0 @@
-error: item has unused generic parameters
-  --> $DIR/closures.rs:19:19
-   |
-LL | pub fn unused<T>() -> u32 {
-   |               - generic parameter `T` is unused
-...
-LL |     let add_one = |x: u32| x + 1;
-   |                   ^^^^^^^^
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:16:8
-   |
-LL | pub fn unused<T>() -> u32 {
-   |        ^^^^^^ - generic parameter `T` is unused
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:28:19
-   |
-LL | pub fn used_parent<T: Default>() -> u32 {
-   |                    - generic parameter `T` is unused
-LL |     let _: T = Default::default();
-LL |     let add_one = |x: u32| x + 1;
-   |                   ^^^^^^^^
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:94:23
-   |
-LL | impl<F: Default> Foo<F> {
-   |      - generic parameter `F` is unused
-...
-LL |     pub fn unused_all<G: Default>() -> u32 {
-   |                       - generic parameter `G` is unused
-LL |
-LL |         let add_one = |x: u32| x + 1;
-   |                       ^^^^^^^^
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:92:12
-   |
-LL | impl<F: Default> Foo<F> {
-   |      - generic parameter `F` is unused
-...
-LL |     pub fn unused_all<G: Default>() -> u32 {
-   |            ^^^^^^^^^^ - generic parameter `G` is unused
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:115:23
-   |
-LL | impl<F: Default> Foo<F> {
-   |      - generic parameter `F` is unused
-...
-LL |         let add_one = |x: u32| {
-   |                       ^^^^^^^^
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:113:12
-   |
-LL | impl<F: Default> Foo<F> {
-   |      - generic parameter `F` is unused
-...
-LL |     pub fn used_fn<G: Default>() -> u32 {
-   |            ^^^^^^^
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:128:23
-   |
-LL |     pub fn used_impl<G: Default>() -> u32 {
-   |                      - generic parameter `G` is unused
-LL |
-LL |         let add_one = |x: u32| {
-   |                       ^^^^^^^^
-
-error: item has unused generic parameters
-  --> $DIR/closures.rs:126:12
-   |
-LL |     pub fn used_impl<G: Default>() -> u32 {
-   |            ^^^^^^^^^ - generic parameter `G` is unused
-
-error: aborting due to 9 previous errors
-
diff --git a/tests/ui/polymorphization/type_parameters/functions.rs b/tests/ui/polymorphization/type_parameters/functions.rs
deleted file mode 100644
index 548993fbca9..00000000000
--- a/tests/ui/polymorphization/type_parameters/functions.rs
+++ /dev/null
@@ -1,96 +0,0 @@
-//@ build-fail
-//@ compile-flags:-Zpolymorphize=on
-#![feature(rustc_attrs)]
-
-// This test checks that the polymorphization analysis correctly detects unused type
-// parameters in functions.
-
-// Function doesn't have any generic parameters to be unused.
-#[rustc_polymorphize_error]
-pub fn no_parameters() {}
-
-// Function has an unused generic parameter.
-#[rustc_polymorphize_error]
-pub fn unused<T>() {
-    //~^ ERROR item has unused generic parameters
-}
-
-// Function uses generic parameter in value of a binding.
-#[rustc_polymorphize_error]
-pub fn used_binding_value<T: Default>() {
-    let _: T = Default::default();
-}
-
-// Function uses generic parameter in generic of a binding.
-#[rustc_polymorphize_error]
-pub fn used_binding_generic<T>() {
-    let _: Option<T> = None;
-}
-
-// Function uses generic parameter in argument.
-#[rustc_polymorphize_error]
-pub fn used_argument<T>(_: T) {}
-
-// Function uses generic parameter in substitutions to another function.
-#[rustc_polymorphize_error]
-pub fn used_substs<T>() {
-    unused::<T>()
-}
-
-struct Foo<F>(F);
-
-impl<F: Default> Foo<F> {
-    // Function has an unused generic parameter from impl.
-    #[rustc_polymorphize_error]
-    pub fn unused_impl() {
-        //~^ ERROR item has unused generic parameters
-    }
-
-    // Function has an unused generic parameter from impl and fn.
-    #[rustc_polymorphize_error]
-    pub fn unused_both<G: Default>() {
-        //~^ ERROR item has unused generic parameters
-    }
-
-    // Function uses generic parameter from impl.
-    #[rustc_polymorphize_error]
-    pub fn used_impl() {
-        let _: F = Default::default();
-    }
-
-    // Function uses generic parameter from impl.
-    #[rustc_polymorphize_error]
-    pub fn used_fn<G: Default>() {
-        //~^ ERROR item has unused generic parameters
-        let _: G = Default::default();
-    }
-
-    // Function uses generic parameter from impl.
-    #[rustc_polymorphize_error]
-    pub fn used_both<G: Default>() {
-        let _: F = Default::default();
-        let _: G = Default::default();
-    }
-
-    // Function uses generic parameter in substitutions to another function.
-    #[rustc_polymorphize_error]
-    pub fn used_substs() {
-        unused::<F>()
-    }
-}
-
-fn main() {
-    no_parameters();
-    unused::<u32>();
-    used_binding_value::<u32>();
-    used_binding_generic::<u32>();
-    used_argument(3u32);
-    used_substs::<u32>();
-
-    Foo::<u32>::unused_impl();
-    Foo::<u32>::unused_both::<u32>();
-    Foo::<u32>::used_impl();
-    Foo::<u32>::used_fn::<u32>();
-    Foo::<u32>::used_both::<u32>();
-    Foo::<u32>::used_substs();
-}
diff --git a/tests/ui/polymorphization/type_parameters/functions.stderr b/tests/ui/polymorphization/type_parameters/functions.stderr
deleted file mode 100644
index d629ff7bb4d..00000000000
--- a/tests/ui/polymorphization/type_parameters/functions.stderr
+++ /dev/null
@@ -1,35 +0,0 @@
-error: item has unused generic parameters
-  --> $DIR/functions.rs:14:8
-   |
-LL | pub fn unused<T>() {
-   |        ^^^^^^ - generic parameter `T` is unused
-
-error: item has unused generic parameters
-  --> $DIR/functions.rs:45:12
-   |
-LL | impl<F: Default> Foo<F> {
-   |      - generic parameter `F` is unused
-...
-LL |     pub fn unused_impl() {
-   |            ^^^^^^^^^^^
-
-error: item has unused generic parameters
-  --> $DIR/functions.rs:51:12
-   |
-LL | impl<F: Default> Foo<F> {
-   |      - generic parameter `F` is unused
-...
-LL |     pub fn unused_both<G: Default>() {
-   |            ^^^^^^^^^^^ - generic parameter `G` is unused
-
-error: item has unused generic parameters
-  --> $DIR/functions.rs:63:12
-   |
-LL | impl<F: Default> Foo<F> {
-   |      - generic parameter `F` is unused
-...
-LL |     pub fn used_fn<G: Default>() {
-   |            ^^^^^^^
-
-error: aborting due to 4 previous errors
-
diff --git a/tests/ui/polymorphization/unsized_cast.rs b/tests/ui/polymorphization/unsized_cast.rs
deleted file mode 100644
index 749e21f4e5b..00000000000
--- a/tests/ui/polymorphization/unsized_cast.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-//@ build-fail
-//@ compile-flags:-Zpolymorphize=on
-#![feature(fn_traits, rustc_attrs, unboxed_closures)]
-
-// This test checks that the polymorphization analysis considers a closure
-// as using all generic parameters if it does an unsizing cast.
-
-#[rustc_polymorphize_error]
-fn foo<T: Default>() {
-    let _: T = Default::default();
-    (|| Box::new(|| {}) as Box<dyn Fn()>)();
-    //~^ ERROR item has unused generic parameters
-    //~^^ ERROR item has unused generic parameters
-}
-
-#[rustc_polymorphize_error]
-fn foo2<T: Default>() {
-    let _: T = Default::default();
-    (|| {
-        //~^ ERROR item has unused generic parameters
-        let call: extern "rust-call" fn(_, _) = Fn::call;
-        call(&|| {}, ());
-        //~^ ERROR item has unused generic parameters
-    })();
-}
-
-fn main() {
-    foo::<u32>();
-    foo2::<u32>();
-}
diff --git a/tests/ui/polymorphization/unsized_cast.stderr b/tests/ui/polymorphization/unsized_cast.stderr
deleted file mode 100644
index 27f88d28174..00000000000
--- a/tests/ui/polymorphization/unsized_cast.stderr
+++ /dev/null
@@ -1,38 +0,0 @@
-error: item has unused generic parameters
-  --> $DIR/unsized_cast.rs:11:18
-   |
-LL | fn foo<T: Default>() {
-   |        - generic parameter `T` is unused
-LL |     let _: T = Default::default();
-LL |     (|| Box::new(|| {}) as Box<dyn Fn()>)();
-   |                  ^^
-
-error: item has unused generic parameters
-  --> $DIR/unsized_cast.rs:11:6
-   |
-LL | fn foo<T: Default>() {
-   |        - generic parameter `T` is unused
-LL |     let _: T = Default::default();
-LL |     (|| Box::new(|| {}) as Box<dyn Fn()>)();
-   |      ^^
-
-error: item has unused generic parameters
-  --> $DIR/unsized_cast.rs:22:15
-   |
-LL | fn foo2<T: Default>() {
-   |         - generic parameter `T` is unused
-...
-LL |         call(&|| {}, ());
-   |               ^^
-
-error: item has unused generic parameters
-  --> $DIR/unsized_cast.rs:19:6
-   |
-LL | fn foo2<T: Default>() {
-   |         - generic parameter `T` is unused
-LL |     let _: T = Default::default();
-LL |     (|| {
-   |      ^^
-
-error: aborting due to 4 previous errors
-
diff --git a/tests/ui/recursion/issue-38591-non-regular-dropck-recursion.rs b/tests/ui/recursion/issue-38591-non-regular-dropck-recursion.rs
index 5c6eef46103..7b7b1a9580b 100644
--- a/tests/ui/recursion/issue-38591-non-regular-dropck-recursion.rs
+++ b/tests/ui/recursion/issue-38591-non-regular-dropck-recursion.rs
@@ -1,5 +1,5 @@
 // `S` is infinitely recursing so it's not possible to generate a finite
-// drop impl (ignoring polymorphization).
+// drop impl.
 //
 // Dropck should therefore detect that this is the case and eagerly error.
 
diff --git a/tests/ui/unsized/issue-115809.rs b/tests/ui/unsized/issue-115809.rs
index 1b1d5234c12..d06b26061f8 100644
--- a/tests/ui/unsized/issue-115809.rs
+++ b/tests/ui/unsized/issue-115809.rs
@@ -1,4 +1,4 @@
-//@ compile-flags: --emit=link -Zmir-opt-level=2 -Zpolymorphize=on
+//@ compile-flags: --emit=link -Zmir-opt-level=2 -Zvalidate-mir
 
 fn foo<T>() {
     let a: [i32; 0] = [];