Add CFI tests for return types and never type#159950
Open
Darksonn wants to merge 1 commit into
Open
Conversation
Verifies that LLVM emits correct CFI type metadata identifiers for functions returning `()`, `!`, `*mut c_void`, `*const c_void`, `*mut ()`, `*mut u8`, and `*mut i8`: - `_ZTSFvvE` (`fn()`) - `_ZTSFu5nevervE` (`fn() -> !`) - `_ZTSFPvS_E` (`fn(*mut c_void) -> *mut c_void` and `fn(*mut ()) -> *mut ()`) - `_ZTSFPKvS0_E` (`fn(*const c_void) -> *const c_void`) - `_ZTSFPu2u8S0_E` (`fn(*mut u8) -> *mut u8`) - `_ZTSFPu2i8S0_E` (`fn(*mut i8) -> *mut i8`)
Collaborator
|
Some changes occurred in tests/codegen-llvm/sanitizer cc @rcvalle |
Collaborator
|
r? @mejrs rustbot has assigned @mejrs. Use Why was this reviewer chosen?The reviewer was selected based on:
|
Contributor
|
I'm not familiar with this... r? @folkertdev perhaps? |
Contributor
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Jul 26, 2026
…rtdev Add CFI tests for return types and never type In a few different conversations, the CFI types of various functions has come up. First, the CFI type of returning `!` came up in rust-lang#159446 (comment), where we found that it doesn't have the same CFI type as returning `()`, which it probably should. Then in rust-lang#159935, I wanted to make sure that this does not change the CFI type of functions when `*mut c_void` appears as an argument. Luckily it does not since it's a lang item, but there's no test for this case. Thus, add tests for all of these cases and a few others. AI assistance was involved with writing the test.
rust-bors Bot
pushed a commit
that referenced
this pull request
Jul 26, 2026
…uwer Rollup of 28 pull requests Successful merges: - #159638 (bootstrap: Split the `Step` trait into multiple traits) - #159774 (rustc_trait_selection: fix trait solver hang caused by degenerate obligations) - #159837 (line-tables-only test: check that the line number matches the function name) - #159946 (Update Enzyme submodule to imporve llvm-cov) - #159962 (miri subtree update) - #156570 (tests: extend remap-path-prefix-std to all stdlib rlibs) - #159617 (Fix up `#[linkage]` target checking) - #159633 (Improve workings of attribute suggestions) - #159733 (std: Switch implementations of `thread_local!` for WASI) - #159783 (Check unsafe impls on safe EIIs) - #159810 (Add tuple never coercion collection regression test) - #159826 (Remove redundant `#[rustc_paren_sugar]` feature gate) - #159846 (Implement `str::copy_from_str`) - #159849 (rustc_parse: Stop returning `Option` from statement parsing) - #159853 (Updated expect messages for `CString` struct and method documentation) - #159875 (More cleanup in `rustc_attr_parsing`) - #159882 (Update expect messages in library/alloc/boxed.rs and library/alloc/string.rs to follow the style guide) - #159891 (Split multiline derives into std/rustc macros) - #159893 (Fix `find_attr` hygiene and `rustc_hir` cleanups) - #159895 (rustc-dev-guide subtree update) - #159902 (Clarify that the expected runtime symbols signature is for the current target only) - #159914 (Fix error in diagnostic on_unmatched_args) - #159917 (spare capacity mut constification) - #159918 (rename abort_unwind → abort_on_unwind) - #159927 (Remove sve2 from the ImpliedFeatures of AArch64 v9a.) - #159936 (Minor `rustc_ast::ast` doc cleanups) - #159945 (Update expect messages in library/core/src/ptr/non_null.rs) - #159950 (Add CFI tests for return types and never type)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In a few different conversations, the CFI types of various functions has come up. First, the CFI type of returning
!came up in #159446 (comment), where we found that it doesn't have the same CFI type as returning(), which it probably should.Then in #159935, I wanted to make sure that this does not change the CFI type of functions when
*mut c_voidappears as an argument. Luckily it does not since it's a lang item, but there's no test for this case.Thus, add tests for all of these cases and a few others.
AI assistance was involved with writing the test.