diff options
| author | bors <bors@rust-lang.org> | 2025-06-28 10:25:00 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-06-28 10:25:00 +0000 |
| commit | b63223c152212832ce37a109e26cc5f84c577532 (patch) | |
| tree | da823acef9a59754aede4033287bdb559c27ad5d /compiler/rustc_codegen_gcc | |
| parent | d41e12f1f4e4884c356f319b881921aa37040de5 (diff) | |
| parent | 1087042e22ae3d14ff856f621a84eaa3e15cc537 (diff) | |
| download | rust-b63223c152212832ce37a109e26cc5f84c577532.tar.gz rust-b63223c152212832ce37a109e26cc5f84c577532.zip | |
Auto merge of #141759 - 1c3t3a:discriminants-query, r=saethlin
Insert checks for enum discriminants when debug assertions are enabled
Similar to the existing null-pointer and alignment checks, this checks for valid enum discriminants on creation of enums through unsafe transmutes. Essentially this sanitizes patterns like the following:
```rust
let val: MyEnum = unsafe { std::mem::transmute<u32, MyEnum>(42) };
```
An extension of this check will be done in a follow-up that explicitly sanitizes for extern enum values that come into Rust from e.g. C/C++.
This check is similar to Miri's capabilities of checking for valid construction of enum values.
This PR is inspired by saethlin@'s PR
https://github.com/rust-lang/rust/pull/104862. Thank you so much for keeping this code up and the detailed comments!
I also pair-programmed large parts of this together with vabr-g@.
r? `@saethlin`
Diffstat (limited to 'compiler/rustc_codegen_gcc')
0 files changed, 0 insertions, 0 deletions
