diff options
Diffstat (limited to 'tests/codegen/error-provide.rs')
| -rw-r--r-- | tests/codegen/error-provide.rs | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/tests/codegen/error-provide.rs b/tests/codegen/error-provide.rs deleted file mode 100644 index 7f091e34359..00000000000 --- a/tests/codegen/error-provide.rs +++ /dev/null @@ -1,50 +0,0 @@ -// Codegen test for #126242 - -//@ compile-flags: -Copt-level=3 -#![crate_type = "lib"] -#![feature(error_generic_member_access)] -use std::error::Request; -use std::fmt; - -#[derive(Debug)] -struct MyBacktrace1 {} - -#[derive(Debug)] -struct MyBacktrace2 {} - -#[derive(Debug)] -struct MyBacktrace3 {} - -#[derive(Debug)] -struct MyError { - backtrace1: MyBacktrace1, - backtrace2: MyBacktrace2, - backtrace3: MyBacktrace3, - other: MyBacktrace3, -} - -impl fmt::Display for MyError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "Example Error") - } -} - -impl std::error::Error for MyError { - // CHECK-LABEL: @provide - #[no_mangle] - fn provide<'a>(&'a self, request: &mut Request<'a>) { - // LLVM should be able to optimize multiple .provide_* calls into a switch table - // and eliminate redundant ones, rather than compare one-by-one. - - // CHECK-NEXT: start: - // CHECK-NEXT: %[[SCRUTINEE:[^ ]+]] = load i128, ptr - // CHECK-NEXT: switch i128 %[[SCRUTINEE]], label %{{.*}} [ - // CHECK-COUNT-3: i128 {{.*}}, label %{{.*}} - // CHECK-NEXT: ] - request - .provide_ref::<MyBacktrace1>(&self.backtrace1) - .provide_ref::<MyBacktrace3>(&self.other) - .provide_ref::<MyBacktrace2>(&self.backtrace2) - .provide_ref::<MyBacktrace3>(&self.backtrace3); - } -} |
