about summary refs log tree commit diff
path: root/src/base.rs
diff options
context:
space:
mode:
authorBastian Kersting <bkersting@google.com>2024-12-17 13:00:22 +0000
committerBastian Kersting <bkersting@google.com>2025-01-31 11:13:34 +0000
commit77f3081f84f60b4ce4081dfc517b3d1fe061fef6 (patch)
treeeb27cd69bd3c53bceacb24cc86f6099af061af2a /src/base.rs
parent7b19e13d324ba932f3e887c1100d18e4e9b353dc (diff)
Insert null checks for pointer dereferences when debug assertions are enabled
Similar to how the alignment is already checked, this adds a check
for null pointer dereferences in debug mode. It is implemented similarly
to the alignment check as a MirPass.

This is related to a 2025H1 project goal for better UB checks in debug
mode: https://github.com/rust-lang/rust-project-goals/pull/177.
Diffstat (limited to 'src/base.rs')
-rw-r--r--src/base.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/base.rs b/src/base.rs
index 34066eb83fc..c7c9c6236d1 100644
--- a/src/base.rs
+++ b/src/base.rs
@@ -417,6 +417,16 @@ fn codegen_fn_body(fx: &mut FunctionCx<'_, '_, '_>, start_block: Block) {
                             Some(source_info.span),
                         );
                     }
+                    AssertKind::NullPointerDereference => {
+                        let location = fx.get_caller_location(source_info).load_scalar(fx);
+
+                        codegen_panic_inner(
+                            fx,
+                            rustc_hir::LangItem::PanicNullPointerDereference,
+                            &[location],
+                            Some(source_info.span),
+                        )
+                    }
                     _ => {
                         let location = fx.get_caller_location(source_info).load_scalar(fx);