diff options
| author | Matthew Maurer <mmaurer@google.com> | 2024-04-08 16:37:06 +0000 |
|---|---|---|
| committer | Matthew Maurer <mmaurer@google.com> | 2024-04-08 17:00:18 +0000 |
| commit | 284da5d6b44ffaf22db50f4c30f5d941a471b26c (patch) | |
| tree | 6b59ac6373ea37d239a232b4ad58f8debb86f508 /tests/ui/sanitizer | |
| parent | ab3dba92db355b8d97db915a2dca161a117e959c (diff) | |
| download | rust-284da5d6b44ffaf22db50f4c30f5d941a471b26c.tar.gz rust-284da5d6b44ffaf22db50f4c30f5d941a471b26c.zip | |
CFI: Fix ICE in KCFI non-associated function pointers
We oddly weren't testing the more usual case of casting non-methods to function pointers. The KCFI shim insertion logic would ICE on these due to asking for an irrefutable associated item if we cast a function to a function pointer without needing a traditional shim.
Diffstat (limited to 'tests/ui/sanitizer')
| -rw-r--r-- | tests/ui/sanitizer/cfi-fn-ptr.rs (renamed from tests/ui/sanitizer/cfi-method-fn-ptr-cast.rs) | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/tests/ui/sanitizer/cfi-method-fn-ptr-cast.rs b/tests/ui/sanitizer/cfi-fn-ptr.rs index 8f79de11748..505b4b8e7f0 100644 --- a/tests/ui/sanitizer/cfi-method-fn-ptr-cast.rs +++ b/tests/ui/sanitizer/cfi-fn-ptr.rs @@ -1,4 +1,4 @@ -// Verifies that casting a method to a function pointer works. +// Verifies that casting to a function pointer works. //@ revisions: cfi kcfi // FIXME(#122848) Remove only-linux once OSX CFI binaries work @@ -46,6 +46,8 @@ impl Trait1 for Type1 { fn foo(&self) {} } +fn foo<T>(_: &T) {} + fn main() { let type1 = Type1 {}; let f = <Type1 as Trait1>::foo; @@ -53,5 +55,7 @@ fn main() { // Check again with different optimization barriers S2 { f: <S as Foo>::foo }.foo(&S); // Check mismatched #[track_caller] - S2 { f: <S as Foo>::bar }.foo(&S) + S2 { f: <S as Foo>::bar }.foo(&S); + // Check non-method functions + S2 { f: foo }.foo(&S) } |
