diff mbox series

[1/4] mergesort.c: LLP64 compatibility, upcast unity for left shift

Message ID 20211126113614.709-2-philipoakley@iee.email (mailing list archive)
State Superseded
Headers show
Series Fix LLP64 `(size_t)1` compatibility VS C4334 warnings | expand

Commit Message

Philip Oakley Nov. 26, 2021, 11:36 a.m. UTC
Visual Studio reports C4334 "was 64-bit shift intended" size mismatch
warning because of size miss-match.

Promote unity to the matching type to fit with the `&` operator.

Signed-off-by: Philip Oakley <philipoakley@iee.email>

---
This is the same fix that René Scharfe provided in 42c456ff81
(mergesort: avoid left shift overflow, 2021-11-16)

Use size_t to match n when building the bitmask for checking whether a
rank is occupied, instead of the default signed int.
---
 mergesort.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

René Scharfe Nov. 27, 2021, 7:32 a.m. UTC | #1
Am 26.11.21 um 12:36 schrieb Philip Oakley:
> Visual Studio reports C4334 "was 64-bit shift intended" size mismatch
> warning because of size miss-match.
>
> Promote unity to the matching type to fit with the `&` operator.
>
> Signed-off-by: Philip Oakley <philipoakley@iee.email>
>
> ---
> This is the same fix that René Scharfe provided in 42c456ff81
> (mergesort: avoid left shift overflow, 2021-11-16)
>
> Use size_t to match n when building the bitmask for checking whether a
> rank is occupied, instead of the default signed int.

Fine with me -- it's just nicer to take the whole set.

René

> ---
>  mergesort.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mergesort.c b/mergesort.c
> index 6216835566..bd9c6ef8ee 100644
> --- a/mergesort.c
> +++ b/mergesort.c
> @@ -63,7 +63,7 @@ void *llist_mergesort(void *list,
>  		void *next = get_next_fn(list);
>  		if (next)
>  			set_next_fn(list, NULL);
> -		for (i = 0; n & (1 << i); i++)
> +		for (i = 0; n & ((size_t)1 << i); i++)
>  			list = llist_merge(ranks[i], list, get_next_fn,
>  					   set_next_fn, compare_fn);
>  		n++;
>
Philip Oakley Nov. 29, 2021, 11:49 p.m. UTC | #2
On 27/11/2021 07:32, René Scharfe wrote:
> Am 26.11.21 um 12:36 schrieb Philip Oakley:
>> Visual Studio reports C4334 "was 64-bit shift intended" size mismatch
>> warning because of size miss-match.
>>
>> Promote unity to the matching type to fit with the `&` operator.
>>
>> Signed-off-by: Philip Oakley <philipoakley@iee.email>
>>
>> ---
>> This is the same fix that René Scharfe provided in 42c456ff81
>> (mergesort: avoid left shift overflow, 2021-11-16)
>>
>> Use size_t to match n when building the bitmask for checking whether a
>> rank is occupied, instead of the default signed int.
> Fine with me -- it's just nicer to take the whole set.
>
> René

Thanks, I'm happy either way if others feels it belongs better with your
mergesort series.
>
>> ---
>>  mergesort.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mergesort.c b/mergesort.c
>> index 6216835566..bd9c6ef8ee 100644
>> --- a/mergesort.c
>> +++ b/mergesort.c
>> @@ -63,7 +63,7 @@ void *llist_mergesort(void *list,
>>  		void *next = get_next_fn(list);
>>  		if (next)
>>  			set_next_fn(list, NULL);
>> -		for (i = 0; n & (1 << i); i++)
>> +		for (i = 0; n & ((size_t)1 << i); i++)
>>  			list = llist_merge(ranks[i], list, get_next_fn,
>>  					   set_next_fn, compare_fn);
>>  		n++;
>>
Philip
diff mbox series

Patch

diff --git a/mergesort.c b/mergesort.c
index 6216835566..bd9c6ef8ee 100644
--- a/mergesort.c
+++ b/mergesort.c
@@ -63,7 +63,7 @@  void *llist_mergesort(void *list,
 		void *next = get_next_fn(list);
 		if (next)
 			set_next_fn(list, NULL);
-		for (i = 0; n & (1 << i); i++)
+		for (i = 0; n & ((size_t)1 << i); i++)
 			list = llist_merge(ranks[i], list, get_next_fn,
 					   set_next_fn, compare_fn);
 		n++;