Skip to content

Commit 1acc3b4

Browse files
committed
Fix ptr_mask impl in cg gcc
1 parent 34d33f2 commit 1acc3b4

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/intrinsic/mod.rs

+11-1
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,18 @@ impl<'a, 'gcc, 'tcx> IntrinsicCallMethods<'tcx> for Builder<'a, 'gcc, 'tcx> {
309309
return;
310310
}
311311

312-
sym::ptr_mask => self.and(args[0].immediate(), args[1].immediate()),
312+
sym::ptr_mask => {
313+
let usize_type = self.context.new_type::<usize>();
314+
let void_ptr_type = self.context.new_type::<*const ()>();
313315

316+
let ptr = args[0].immediate();
317+
let mask = args[1].immediate();
318+
319+
let addr = self.bitcast(ptr, usize_type);
320+
let masked = self.and(addr, mask);
321+
self.bitcast(masked, void_ptr_type)
322+
},
323+
314324
_ if name_str.starts_with("simd_") => {
315325
match generic_simd_intrinsic(self, name, callee_ty, args, ret_ty, llret_ty, span) {
316326
Ok(llval) => llval,

0 commit comments

Comments
 (0)