about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbjorn3 <17426603+bjorn3@users.noreply.github.com>2024-10-17 17:57:34 +0200
committerbjorn3 <17426603+bjorn3@users.noreply.github.com>2024-10-17 17:57:34 +0200
commit16067fdea148adb7ad6c1414f0c253dc0592d809 (patch)
tree3a5113fd96a60df687ff62f7d7609dfe38e9ae8e
parent47a7e994f2b7d8663b0559bc9327190fefe9e4ef (diff)
downloadrust-16067fdea148adb7ad6c1414f0c253dc0592d809.tar.gz
rust-16067fdea148adb7ad6c1414f0c253dc0592d809.zip
Mark blocks as cold in a couple more places
-rw-r--r--src/base.rs4
-rw-r--r--src/intrinsics/mod.rs1
2 files changed, 4 insertions, 1 deletions
diff --git a/src/base.rs b/src/base.rs
index f3361989472..5d860bf6e0e 100644
--- a/src/base.rs
+++ b/src/base.rs
@@ -379,7 +379,6 @@ fn codegen_fn_body(fx: &mut FunctionCx<'_, '_, '_>, start_block: Block) {
 
                 let target = fx.get_block(*target);
                 let failure = fx.bcx.create_block();
-                fx.bcx.set_cold_block(failure);
 
                 if *expected {
                     fx.bcx.ins().brif(cond, target, &[], failure, &[]);
@@ -544,6 +543,7 @@ fn codegen_fn_body(fx: &mut FunctionCx<'_, '_, '_>, start_block: Block) {
                 fx.bcx.ins().trap(TrapCode::UnreachableCodeReached);
             }
             TerminatorKind::Unreachable => {
+                fx.bcx.set_cold_block(block);
                 fx.bcx.ins().trap(TrapCode::UnreachableCodeReached);
             }
             TerminatorKind::Yield { .. }
@@ -1075,6 +1075,8 @@ fn codegen_panic_inner<'tcx>(
     args: &[Value],
     span: Option<Span>,
 ) {
+    fx.bcx.set_cold_block(fx.bcx.current_block().unwrap());
+
     let def_id = fx.tcx.require_lang_item(lang_item, span);
 
     let instance = Instance::mono(fx.tcx, def_id).polymorphize(fx.tcx);
diff --git a/src/intrinsics/mod.rs b/src/intrinsics/mod.rs
index 35f0ccff3f9..e96ab1e90a2 100644
--- a/src/intrinsics/mod.rs
+++ b/src/intrinsics/mod.rs
@@ -449,6 +449,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
 
     match intrinsic {
         sym::abort => {
+            fx.bcx.set_cold_block(fx.bcx.current_block().unwrap());
             fx.bcx.ins().trap(TrapCode::User(0));
             return Ok(());
         }