diff options
| author | Oli Scherer <github333195615777966@oli-obk.de> | 2025-06-26 14:53:36 +0000 |
|---|---|---|
| committer | Oli Scherer <github333195615777966@oli-obk.de> | 2025-06-30 08:04:40 +0000 |
| commit | bd3205c02b05568087ed724de3f878c8f826c622 (patch) | |
| tree | 0e1be2be7f156d5c330ebcc7321e6b240034ffdb /compiler/rustc_codegen_ssa | |
| parent | d37a04d09da8edb0d83ee5de30f2fa8db1758a85 (diff) | |
| download | rust-bd3205c02b05568087ed724de3f878c8f826c622.tar.gz rust-bd3205c02b05568087ed724de3f878c8f826c622.zip | |
Require either wrapping nullary intrinsincs in const blocks or explicitly deciding not to
Diffstat (limited to 'compiler/rustc_codegen_ssa')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/mir/intrinsic.rs | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs index f77c8e500cc..fc95f62b4a4 100644 --- a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs +++ b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs @@ -1,7 +1,7 @@ use rustc_abi::WrappingRange; -use rustc_middle::bug; use rustc_middle::mir::SourceInfo; use rustc_middle::ty::{self, Ty, TyCtxt}; +use rustc_middle::{bug, span_bug}; use rustc_session::config::OptLevel; use rustc_span::sym; @@ -98,6 +98,27 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { discr.to_atomic_ordering() }; + if args.is_empty() { + match name { + sym::abort + | sym::unreachable + | sym::cold_path + | sym::breakpoint + | sym::assert_zero_valid + | sym::assert_mem_uninitialized_valid + | sym::assert_inhabited + | sym::ub_checks + | sym::contract_checks + | sym::atomic_fence + | sym::atomic_singlethreadfence + | sym::caller_location => {} + _ => { + span_bug!(span, "nullary intrinsic {name} must either be in a const block or explicitly opted out because it is inherently a runtime intrinsic +"); + } + } + } + let llval = match name { sym::abort => { bx.abort(); |
