Add range attribute to scalar function results and arguments
This commit is contained in:
parent
9bad7ba324
commit
cfadfabfcd
12 changed files with 159 additions and 24 deletions
|
@ -8,7 +8,7 @@ use std::string::FromUtf8Error;
|
|||
use libc::c_uint;
|
||||
use rustc_data_structures::small_c_str::SmallCStr;
|
||||
use rustc_llvm::RustString;
|
||||
use rustc_target::abi::Align;
|
||||
use rustc_target::abi::{Align, Size, WrappingRange};
|
||||
|
||||
pub use self::AtomicRmwBinOp::*;
|
||||
pub use self::CallConv::*;
|
||||
|
@ -105,6 +105,21 @@ pub fn CreateAllocKindAttr(llcx: &Context, kind_arg: AllocKindFlags) -> &Attribu
|
|||
unsafe { LLVMRustCreateAllocKindAttr(llcx, kind_arg.bits()) }
|
||||
}
|
||||
|
||||
pub fn CreateRangeAttr(llcx: &Context, size: Size, range: WrappingRange) -> &Attribute {
|
||||
let lower = range.start;
|
||||
let upper = range.end.wrapping_add(1);
|
||||
let lower_words = [lower as u64, (lower >> 64) as u64];
|
||||
let upper_words = [upper as u64, (upper >> 64) as u64];
|
||||
unsafe {
|
||||
LLVMRustCreateRangeAttribute(
|
||||
llcx,
|
||||
size.bits().try_into().unwrap(),
|
||||
lower_words.as_ptr(),
|
||||
upper_words.as_ptr(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
pub enum AttributePlace {
|
||||
ReturnValue,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue