about summary refs log tree commit diff
path: root/compiler/rustc_middle/src
diff options
context:
space:
mode:
authordianqk <dianqk@dianqk.net>2025-07-10 21:20:54 +0800
committerdianqk <dianqk@dianqk.net>2025-10-02 14:55:50 +0800
commitcc93132ae4f5477297ecddb0c07d2e8c74075f0c (patch)
tree7ae08a515e4ff846cdcbaa67b557a40fb169500c /compiler/rustc_middle/src
parent571412f8190089c36758031fe09fc0ece59be6b7 (diff)
downloadrust-cc93132ae4f5477297ecddb0c07d2e8c74075f0c.tar.gz
rust-cc93132ae4f5477297ecddb0c07d2e8c74075f0c.zip
simplifycfg: Preserve debuginfos when merging bbs
Diffstat (limited to 'compiler/rustc_middle/src')
-rw-r--r--compiler/rustc_middle/src/mir/terminator.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/rustc_middle/src/mir/terminator.rs b/compiler/rustc_middle/src/mir/terminator.rs
index 4034a3a06e9..4249914346c 100644
--- a/compiler/rustc_middle/src/mir/terminator.rs
+++ b/compiler/rustc_middle/src/mir/terminator.rs
@@ -444,6 +444,14 @@ impl<'tcx> Terminator<'tcx> {
         self.kind.successors()
     }
 
+    /// Return `Some` if all successors are identical.
+    #[inline]
+    pub fn identical_successor(&self) -> Option<BasicBlock> {
+        let mut successors = self.successors();
+        let first_succ = successors.next()?;
+        if successors.all(|succ| first_succ == succ) { Some(first_succ) } else { None }
+    }
+
     #[inline]
     pub fn successors_mut<'a>(&'a mut self, f: impl FnMut(&'a mut BasicBlock)) {
         self.kind.successors_mut(f)