diff options
| author | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2023-10-05 00:00:00 +0000 |
|---|---|---|
| committer | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2023-10-05 23:45:59 +0200 |
| commit | 4357482bfd9a3cda2fc41e986306fa50d014757d (patch) | |
| tree | a6ba2c893cbb1e1db6e452327ed36220b4c1c306 /compiler/rustc_middle/src | |
| parent | 6c348b77fe24c0834cc2612f62f4ab86faba0651 (diff) | |
Move DefLocation from rustc_codegen_ssa to rustc_middle
Diffstat (limited to 'compiler/rustc_middle/src')
| -rw-r--r-- | compiler/rustc_middle/src/mir/mod.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/compiler/rustc_middle/src/mir/mod.rs b/compiler/rustc_middle/src/mir/mod.rs index 7534c9c0a68..97e6ccf3976 100644 --- a/compiler/rustc_middle/src/mir/mod.rs +++ b/compiler/rustc_middle/src/mir/mod.rs @@ -1590,6 +1590,23 @@ impl Location { } } +/// `DefLocation` represents the location of a definition - either an argument or an assignment +/// within MIR body. +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum DefLocation { + Argument, + Body(Location), +} + +impl DefLocation { + pub fn dominates(self, location: Location, dominators: &Dominators<BasicBlock>) -> bool { + match self { + DefLocation::Argument => true, + DefLocation::Body(def) => def.successor_within_block().dominates(location, dominators), + } + } +} + // Some nodes are used a lot. Make sure they don't unintentionally get bigger. #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] mod size_asserts { |
