diff options
| author | bors <bors@rust-lang.org> | 2024-08-29 02:38:32 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-08-29 02:38:32 +0000 |
| commit | 6cf068db566de080dfa7ed24a216ea3aed2b98ce (patch) | |
| tree | d51916b4cd8fdc73dd70fdaa1d3e56bb7b1e6ada /compiler/stable_mir/src/mir/visit.rs | |
| parent | acb4e8b6251f1d8da36f08e7a70fa23fc581839e (diff) | |
| parent | bd66fadd79ac0d05be85a229ba6d295e50c24ade (diff) | |
| download | rust-6cf068db566de080dfa7ed24a216ea3aed2b98ce.tar.gz rust-6cf068db566de080dfa7ed24a216ea3aed2b98ce.zip | |
Auto merge of #129721 - workingjubilee:rollup-y2o1mnp, r=workingjubilee
Rollup of 14 pull requests Successful merges: - #128192 (rustc_target: Add various aarch64 features) - #129170 (Add an ability to convert between `Span` and `visit::Location`) - #129343 (Emit specific message for time<=0.3.35) - #129378 (Clean up cfg-gating of ProcessPrng extern) - #129401 (Partially stabilize `feature(new_uninit)`) - #129467 (derive(SmartPointer): assume pointee from the single generic and better error messages) - #129494 (format code in tests/ui/threads-sendsync) - #129617 (Update books) - #129673 (Add fmt::Debug to sync::Weak<T, A>) - #129683 (copysign with sign being a NaN can have non-portable results) - #129689 (Move `'tcx` lifetime off of impl and onto methods for `CrateMetadataRef`) - #129695 (Fix path to run clippy on rustdoc) - #129712 (Correct trusty targets to be tier 3) - #129715 (Update `compiler_builtins` to `0.1.123`) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/stable_mir/src/mir/visit.rs')
| -rw-r--r-- | compiler/stable_mir/src/mir/visit.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/compiler/stable_mir/src/mir/visit.rs b/compiler/stable_mir/src/mir/visit.rs index 50d7bae21db..aeae866e9d3 100644 --- a/compiler/stable_mir/src/mir/visit.rs +++ b/compiler/stable_mir/src/mir/visit.rs @@ -465,6 +465,22 @@ impl Location { } } +/// Location of the statement at the given index for a given basic block. Assumes that `stmt_idx` +/// and `bb_idx` are valid for a given body. +pub fn statement_location(body: &Body, bb_idx: &BasicBlockIdx, stmt_idx: usize) -> Location { + let bb = &body.blocks[*bb_idx]; + let stmt = &bb.statements[stmt_idx]; + Location(stmt.span) +} + +/// Location of the terminator for a given basic block. Assumes that `bb_idx` is valid for a given +/// body. +pub fn terminator_location(body: &Body, bb_idx: &BasicBlockIdx) -> Location { + let bb = &body.blocks[*bb_idx]; + let terminator = &bb.terminator; + Location(terminator.span) +} + /// Reference to a place used to represent a partial projection. pub struct PlaceRef<'a> { pub local: Local, |
