]>
git.proxmox.com Git - rustc.git/blob - compiler/rustc_codegen_ssa/src/traits/consts.rs
1 use super::BackendTypes
;
2 use crate::mir
::place
::PlaceRef
;
3 use rustc_middle
::mir
::interpret
::{Allocation, Scalar}
;
4 use rustc_middle
::ty
::layout
::TyAndLayout
;
5 use rustc_span
::Symbol
;
6 use rustc_target
::abi
::{self, Size}
;
8 pub trait ConstMethods
<'tcx
>: BackendTypes
{
9 // Constant constructors
10 fn const_null(&self, t
: Self::Type
) -> Self::Value
;
11 fn const_undef(&self, t
: Self::Type
) -> Self::Value
;
12 fn const_int(&self, t
: Self::Type
, i
: i64) -> Self::Value
;
13 fn const_uint(&self, t
: Self::Type
, i
: u64) -> Self::Value
;
14 fn const_uint_big(&self, t
: Self::Type
, u
: u128
) -> Self::Value
;
15 fn const_bool(&self, val
: bool
) -> Self::Value
;
16 fn const_i32(&self, i
: i32) -> Self::Value
;
17 fn const_u32(&self, i
: u32) -> Self::Value
;
18 fn const_u64(&self, i
: u64) -> Self::Value
;
19 fn const_usize(&self, i
: u64) -> Self::Value
;
20 fn const_u8(&self, i
: u8) -> Self::Value
;
21 fn const_real(&self, t
: Self::Type
, val
: f64) -> Self::Value
;
23 fn const_str(&self, s
: Symbol
) -> (Self::Value
, Self::Value
);
24 fn const_struct(&self, elts
: &[Self::Value
], packed
: bool
) -> Self::Value
;
26 fn const_to_opt_uint(&self, v
: Self::Value
) -> Option
<u64>;
27 fn const_to_opt_u128(&self, v
: Self::Value
, sign_ext
: bool
) -> Option
<u128
>;
29 fn const_data_from_alloc(&self, alloc
: &Allocation
) -> Self::Value
;
31 fn scalar_to_backend(&self, cv
: Scalar
, layout
: &abi
::Scalar
, llty
: Self::Type
) -> Self::Value
;
34 layout
: TyAndLayout
<'tcx
>,
37 ) -> PlaceRef
<'tcx
, Self::Value
>;
39 fn const_ptrcast(&self, val
: Self::Value
, ty
: Self::Type
) -> Self::Value
;