Make RawPtr take Ty and Mutbl separately
This commit is contained in:
parent
678e62405f
commit
83eaede000
@ -796,16 +796,16 @@ fn gather<'a, 'gcc, 'tcx>(
|
|||||||
|
|
||||||
// This counts how many pointers
|
// This counts how many pointers
|
||||||
fn ptr_count(t: Ty<'_>) -> usize {
|
fn ptr_count(t: Ty<'_>) -> usize {
|
||||||
match t.kind() {
|
match *t.kind() {
|
||||||
ty::RawPtr(p) => 1 + ptr_count(p.ty),
|
ty::RawPtr(p_ty, _) => 1 + ptr_count(p_ty),
|
||||||
_ => 0,
|
_ => 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Non-ptr type
|
// Non-ptr type
|
||||||
fn non_ptr(t: Ty<'_>) -> Ty<'_> {
|
fn non_ptr(t: Ty<'_>) -> Ty<'_> {
|
||||||
match t.kind() {
|
match *t.kind() {
|
||||||
ty::RawPtr(p) => non_ptr(p.ty),
|
ty::RawPtr(p_ty, _) => non_ptr(p_ty),
|
||||||
_ => t,
|
_ => t,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -814,8 +814,8 @@ fn non_ptr(t: Ty<'_>) -> Ty<'_> {
|
|||||||
// to the element type of the first argument
|
// to the element type of the first argument
|
||||||
let (_, element_ty0) = arg_tys[0].simd_size_and_type(bx.tcx());
|
let (_, element_ty0) = arg_tys[0].simd_size_and_type(bx.tcx());
|
||||||
let (_, element_ty1) = arg_tys[1].simd_size_and_type(bx.tcx());
|
let (_, element_ty1) = arg_tys[1].simd_size_and_type(bx.tcx());
|
||||||
let (pointer_count, underlying_ty) = match element_ty1.kind() {
|
let (pointer_count, underlying_ty) = match *element_ty1.kind() {
|
||||||
ty::RawPtr(p) if p.ty == in_elem => (ptr_count(element_ty1), non_ptr(element_ty1)),
|
ty::RawPtr(p_ty, _) if p_ty == in_elem => (ptr_count(element_ty1), non_ptr(element_ty1)),
|
||||||
_ => {
|
_ => {
|
||||||
require!(
|
require!(
|
||||||
false,
|
false,
|
||||||
@ -910,16 +910,16 @@ fn non_ptr(t: Ty<'_>) -> Ty<'_> {
|
|||||||
|
|
||||||
// This counts how many pointers
|
// This counts how many pointers
|
||||||
fn ptr_count(t: Ty<'_>) -> usize {
|
fn ptr_count(t: Ty<'_>) -> usize {
|
||||||
match t.kind() {
|
match *t.kind() {
|
||||||
ty::RawPtr(p) => 1 + ptr_count(p.ty),
|
ty::RawPtr(p_ty, _) => 1 + ptr_count(p_ty),
|
||||||
_ => 0,
|
_ => 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Non-ptr type
|
// Non-ptr type
|
||||||
fn non_ptr(t: Ty<'_>) -> Ty<'_> {
|
fn non_ptr(t: Ty<'_>) -> Ty<'_> {
|
||||||
match t.kind() {
|
match *t.kind() {
|
||||||
ty::RawPtr(p) => non_ptr(p.ty),
|
ty::RawPtr(p_ty, _) => non_ptr(p_ty),
|
||||||
_ => t,
|
_ => t,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -929,8 +929,8 @@ fn non_ptr(t: Ty<'_>) -> Ty<'_> {
|
|||||||
let (_, element_ty0) = arg_tys[0].simd_size_and_type(bx.tcx());
|
let (_, element_ty0) = arg_tys[0].simd_size_and_type(bx.tcx());
|
||||||
let (_, element_ty1) = arg_tys[1].simd_size_and_type(bx.tcx());
|
let (_, element_ty1) = arg_tys[1].simd_size_and_type(bx.tcx());
|
||||||
let (_, element_ty2) = arg_tys[2].simd_size_and_type(bx.tcx());
|
let (_, element_ty2) = arg_tys[2].simd_size_and_type(bx.tcx());
|
||||||
let (pointer_count, underlying_ty) = match element_ty1.kind() {
|
let (pointer_count, underlying_ty) = match *element_ty1.kind() {
|
||||||
ty::RawPtr(p) if p.ty == in_elem && p.mutbl == hir::Mutability::Mut => {
|
ty::RawPtr(p_ty, mutbl) if p_ty == in_elem && mutbl == hir::Mutability::Mut => {
|
||||||
(ptr_count(element_ty1), non_ptr(element_ty1))
|
(ptr_count(element_ty1), non_ptr(element_ty1))
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
|
Loading…
Reference in New Issue
Block a user