round pointer to alignment without going via int
This commit is contained in:
parent
1bc901e0ca
commit
002751155d
1 changed files with 6 additions and 3 deletions
|
|
@ -28,9 +28,12 @@ fn round_pointer_up_to_alignment<'ll>(
|
|||
align: Align,
|
||||
ptr_ty: &'ll Type,
|
||||
) -> &'ll Value {
|
||||
let mut ptr_as_int = bx.ptrtoint(addr, bx.cx().type_isize());
|
||||
ptr_as_int = round_up_to_alignment(bx, ptr_as_int, align);
|
||||
bx.inttoptr(ptr_as_int, ptr_ty)
|
||||
let ptr = bx.inbounds_ptradd(addr, bx.const_i32(align.bytes() as i32 - 1));
|
||||
bx.call_intrinsic(
|
||||
"llvm.ptrmask",
|
||||
&[ptr_ty, bx.type_i32()],
|
||||
&[ptr, bx.const_int(bx.isize_ty, -(align.bytes() as isize) as i64)],
|
||||
)
|
||||
}
|
||||
|
||||
fn emit_direct_ptr_va_arg<'ll, 'tcx>(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue