]> git.lizzy.rs Git - rust.git/commitdiff
Configure saved panic locations based on location-detail flag
authorHudson Ayers <hayers@stanford.edu>
Thu, 14 Oct 2021 16:20:32 +0000 (09:20 -0700)
committerHudson Ayers <hayers@stanford.edu>
Thu, 21 Oct 2021 17:41:19 +0000 (10:41 -0700)
compiler/rustc_const_eval/src/interpret/intrinsics/caller_location.rs

index d4cbba18029311bff2079acb73220ddb4d42bf62..b5e97ec8fe0f466e94fbd39520bda32633831dda 100644 (file)
@@ -80,10 +80,17 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
         line: u32,
         col: u32,
     ) -> MPlaceTy<'tcx, M::PointerTag> {
-        let file =
-            self.allocate_str(&filename.as_str(), MemoryKind::CallerLocation, Mutability::Not);
-        let line = Scalar::from_u32(line);
-        let col = Scalar::from_u32(col);
+        let loc_details = &self.tcx.sess.opts.debugging_opts.location_detail;
+        let file = if loc_details.file {
+            self.allocate_str(&filename.as_str(), MemoryKind::CallerLocation, Mutability::Not)
+        } else {
+            // FIXME: This creates a new allocation each time. It might be preferable to
+            // perform this allocation only once, and re-use the `MPlaceTy`.
+            // See https://github.com/rust-lang/rust/pull/89920#discussion_r730012398
+            self.allocate_str("<redacted>", MemoryKind::CallerLocation, Mutability::Not)
+        };
+        let line = if loc_details.line { Scalar::from_u32(line) } else { Scalar::from_u32(0) };
+        let col = if loc_details.column { Scalar::from_u32(col) } else { Scalar::from_u32(0) };
 
         // Allocate memory for `CallerLocation` struct.
         let loc_ty = self