Pointers should be first casted to intptr_t/uintptr_t before casting
them to another integral type to avoid warnings.
Furthermore, the function has code like
else if (upper <= UINT_MAX)
something;
else
something_else;
so it seems using unsigned type for upper where upper <= UINT_MAX is always
true is not intended.
2022-11-12 Jakub Jelinek <jakub@redhat.com>
PR libgomp/107641
* env.c (parse_unsigned_long): Cast params[2] to uintptr_t rather than
unsigned long. Change type of upper from unsigned to unsigned long.
(cherry picked from commit
2a193e9df82917eaf440a20f99a3febe91dcb5fe)
+2022-11-14 Tobias Burnus <tobias@codesourcery.com>
+
+ Backport from mainline:
+ 2022-11-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR libgomp/107641
+ * env.c (parse_unsigned_long): Cast params[2] to uintptr_t rather than
+ unsigned long. Change type of upper from unsigned to unsigned long.
+
2022-11-04 Tobias Burnus <tobias@codesourcery.com>
* testsuite/libgomp.fortran/target-13.f90: Remove strides to match
static bool
parse_unsigned_long (const char *env, const char *val, void *const params[])
{
- unsigned upper = (unsigned long) params[2];
+ unsigned long upper = (uintptr_t) params[2];
unsigned long pvalue = 0;
bool ret = parse_unsigned_long_1 (env, val, &pvalue, (bool) params[1]);
if (!ret)