diff options
| author | Celina G. Val <celinval@amazon.com> | 2023-12-18 19:52:25 +0000 |
|---|---|---|
| committer | Celina G. Val <celinval@amazon.com> | 2023-12-18 19:58:48 +0000 |
| commit | 1a83c5b55bdad84baca69d121d9c3e6f357e8570 (patch) | |
| tree | e070748c4fa6c3c4f82d29a889d33a23886c0f67 /compiler/stable_mir/src/compiler_interface.rs | |
| parent | 2a7634047a978207aa1c527ed484ae4ada9bba96 (diff) | |
| download | rust-1a83c5b55bdad84baca69d121d9c3e6f357e8570.tar.gz rust-1a83c5b55bdad84baca69d121d9c3e6f357e8570.zip | |
Add function ABI and type layout to StableMIR
This change introduces a new module to StableMIR named `abi` with information from `rustc_target::abi` and `rustc_abi`, that allow users to retrieve more low level information required to perform bit-precise analysis. The layout of a type can be retrieved via `Ty::layout`, and the instance ABI can be retrieved via `Instance::fn_abi()`. To properly handle errors while retrieve layout information, we had to implement a few layout related traits.
Diffstat (limited to 'compiler/stable_mir/src/compiler_interface.rs')
| -rw-r--r-- | compiler/stable_mir/src/compiler_interface.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/stable_mir/src/compiler_interface.rs b/compiler/stable_mir/src/compiler_interface.rs index 57c60b70d8a..98b1d484c03 100644 --- a/compiler/stable_mir/src/compiler_interface.rs +++ b/compiler/stable_mir/src/compiler_interface.rs @@ -5,6 +5,7 @@ use std::cell::Cell; +use crate::abi::{FnAbi, Layout, LayoutShape}; use crate::mir::alloc::{AllocId, GlobalAlloc}; use crate::mir::mono::{Instance, InstanceDef, StaticDef}; use crate::mir::Body; @@ -173,6 +174,15 @@ pub trait Context { /// Return information about the target machine. fn target_info(&self) -> MachineInfo; + + /// Get an instance ABI. + fn instance_abi(&self, def: InstanceDef) -> Result<FnAbi, Error>; + + /// Get the layout of a type. + fn ty_layout(&self, ty: Ty) -> Result<Layout, Error>; + + /// Get the layout shape. + fn layout_shape(&self, id: Layout) -> LayoutShape; } // A thread local variable that stores a pointer to the tables mapping between TyCtxt |
