about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbjorn3 <17426603+bjorn3@users.noreply.github.com>2024-06-26 09:11:55 +0000
committerbjorn3 <17426603+bjorn3@users.noreply.github.com>2024-06-26 09:11:55 +0000
commit8d119395890df789c72002a083fbe051ec05766c (patch)
treef6478f414bd1f77e94bed793458d1d4beac38f1f
parentaa5d7a0d8ae4654c8739db1d7ac75dc0e6e24434 (diff)
parentf1052eb253580ce2adbcc7a24b15e291e4f0c760 (diff)
downloadrust-8d119395890df789c72002a083fbe051ec05766c.tar.gz
rust-8d119395890df789c72002a083fbe051ec05766c.zip
Sync from rust fda509e817abeeecb5b76bc1de844f355675c81e
-rw-r--r--src/base.rs21
-rw-r--r--src/concurrency_limiter.rs3
-rw-r--r--src/lib.rs6
3 files changed, 16 insertions, 14 deletions
diff --git a/src/base.rs b/src/base.rs
index 9ccd92b51d8..6c7f75f41d5 100644
--- a/src/base.rs
+++ b/src/base.rs
@@ -677,22 +677,23 @@ fn codegen_stmt<'tcx>(
                     CastKind::PointerCoercion(PointerCoercion::UnsafeFnPointer),
                     ref operand,
                     to_ty,
-                )
-                | Rvalue::Cast(
-                    CastKind::PointerCoercion(PointerCoercion::MutToConstPointer),
-                    ref operand,
-                    to_ty,
-                )
-                | Rvalue::Cast(
-                    CastKind::PointerCoercion(PointerCoercion::ArrayToPointer),
-                    ref operand,
-                    to_ty,
                 ) => {
                     let to_layout = fx.layout_of(fx.monomorphize(to_ty));
                     let operand = codegen_operand(fx, operand);
                     lval.write_cvalue(fx, operand.cast_pointer_to(to_layout));
                 }
                 Rvalue::Cast(
+                    CastKind::PointerCoercion(
+                        PointerCoercion::MutToConstPointer | PointerCoercion::ArrayToPointer,
+                    ),
+                    ..,
+                ) => {
+                    bug!(
+                        "{:?} is for borrowck, and should never appear in codegen",
+                        to_place_and_rval.1
+                    );
+                }
+                Rvalue::Cast(
                     CastKind::IntToInt
                     | CastKind::FloatToFloat
                     | CastKind::FloatToInt
diff --git a/src/concurrency_limiter.rs b/src/concurrency_limiter.rs
index a73860cf18b..2093b49ff31 100644
--- a/src/concurrency_limiter.rs
+++ b/src/concurrency_limiter.rs
@@ -1,6 +1,7 @@
 use std::sync::{Arc, Condvar, Mutex};
 
 use jobserver::HelperThread;
+use rustc_errors::DiagCtxtHandle;
 use rustc_session::Session;
 
 // FIXME don't panic when a worker thread panics
@@ -46,7 +47,7 @@ impl ConcurrencyLimiter {
         }
     }
 
-    pub(super) fn acquire(&self, dcx: &rustc_errors::DiagCtxt) -> ConcurrencyLimiterToken {
+    pub(super) fn acquire(&self, dcx: DiagCtxtHandle<'_>) -> ConcurrencyLimiterToken {
         let mut state = self.state.lock().unwrap();
         loop {
             state.assert_invariants();
diff --git a/src/lib.rs b/src/lib.rs
index 73764216c03..22c723e1a79 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -276,9 +276,9 @@ fn build_isa(sess: &Session, backend_config: &BackendConfig) -> Arc<dyn TargetIs
     flags_builder.set("enable_verifier", enable_verifier).unwrap();
     flags_builder.set("regalloc_checker", enable_verifier).unwrap();
 
-    let preserve_frame_pointer = sess.target.options.frame_pointer
-        != rustc_target::spec::FramePointer::MayOmit
-        || matches!(sess.opts.cg.force_frame_pointers, Some(true));
+    let mut frame_ptr = sess.target.options.frame_pointer.clone();
+    frame_ptr.ratchet(sess.opts.cg.force_frame_pointers);
+    let preserve_frame_pointer = frame_ptr != rustc_target::spec::FramePointer::MayOmit;
     flags_builder
         .set("preserve_frame_pointers", if preserve_frame_pointer { "true" } else { "false" })
         .unwrap();