Re: [PATCH 1/3] do full type check in COPY_ARRAY and MOVE_ARRAY
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 1, 2023, 12:11 UTC
- Message-ID
- <xmqqzgb2fo8g.fsf@gitster.g>
- In-Reply-To
- <bf4e6798-c687-270d-1344-37bacb403e13@web.de>
René Scharfe <l.s.r@web.de> writes:
> On second thought, what do we gain by using __builtin_types_compatible_p > here? Does it catch cases that the assignment check plus the element > size check wouldn't?
I was reacting to this part of an earlier message in the thread:
Presumably we cannot catch int *ip; unsigned *up;
(0 ? (*(ip) = *(up), 0) : 0); (0 ? (*(up) = *(ip), 0) : 0);
with the approach?
i.e. *ip and *up are of the same size. Would the assignment check trigger?
> We actually need to compare the types of the elements here, because > otherwise we'd disallow copies between arrays (int arr[7]) and pointers > (int *p), which would be unnecessarily strict.
Yup. Thanks for inferring what I meant to give, despite the two typoes (the other one is ", 0").