Do not use void pointer for ptr_mask
intrinsic
I couldn't find where exactly it's documented, but apperantly pointers to void type are invalid in llvm - void is only allowed as a return type of functions.
This commit is contained in:
parent
55ba58cadb
commit
92b05db761
2 changed files with 3 additions and 4 deletions
|
@ -644,7 +644,6 @@ impl<'ll> CodegenCx<'ll, '_> {
|
||||||
|
|
||||||
let i8p = self.type_i8p();
|
let i8p = self.type_i8p();
|
||||||
let void = self.type_void();
|
let void = self.type_void();
|
||||||
let voidp = self.type_ptr_to(void);
|
|
||||||
let i1 = self.type_i1();
|
let i1 = self.type_i1();
|
||||||
let t_i8 = self.type_i8();
|
let t_i8 = self.type_i8();
|
||||||
let t_i16 = self.type_i16();
|
let t_i16 = self.type_i16();
|
||||||
|
@ -888,7 +887,7 @@ impl<'ll> CodegenCx<'ll, '_> {
|
||||||
ifn!("llvm.dbg.value", fn(t_metadata, t_i64, t_metadata) -> void);
|
ifn!("llvm.dbg.value", fn(t_metadata, t_i64, t_metadata) -> void);
|
||||||
}
|
}
|
||||||
|
|
||||||
ifn!("llvm.ptrmask", fn(voidp, t_isize) -> voidp);
|
ifn!("llvm.ptrmask", fn(i8p, t_isize) -> i8p);
|
||||||
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
// CHECK-LABEL: @mask_ptr
|
// CHECK-LABEL: @mask_ptr
|
||||||
// CHECK-SAME: [[WORD:i[0-9]+]] %mask
|
// CHECK-SAME: [[WORD:i[0-9]+]] %mask
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub fn mask_ptr(ptr: *const u8, mask: usize) -> *const u8 {
|
pub fn mask_ptr(ptr: *const u16, mask: usize) -> *const u16 {
|
||||||
// CHECK: call
|
// CHECK: call
|
||||||
// CHECK-SAME: @llvm.ptrmask.p0isVoid.[[WORD]](
|
// CHECK-SAME: @llvm.ptrmask.p0i8.[[WORD]](
|
||||||
core::intrinsics::ptr_mask(ptr, mask)
|
core::intrinsics::ptr_mask(ptr, mask)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue