libgomp: Hopefully avoid false positive warnings in env.c on solaris

> the patch also breaks bootstrap on both i386-pc-solaris2.11 and
> sparc-sun-solaris2.11:
>
> /vol/gcc/src/hg/master/local/libgomp/env.c: In function 'initialize_env':
> /vol/gcc/src/hg/master/local/libgomp/env.c:414:16: error: 'new_offload' may be used uninitialized in this function [-Werror=maybe-uninitialized]
>   414 |       *offload = new_offload;
>       |       ~~~~~~~~~^~~~~~~~~~~~~
> /vol/gcc/src/hg/master/local/libgomp/env.c:384:30: note: 'new_offload' was declared here
>   384 |   enum gomp_target_offload_t new_offload;
>       |                              ^~~~~~~~~~~

I can't reproduce that, but I fail to see why we need two separate
variables, one with actual value and one tracking if the value is valid.

So, I'm going with:

2020-10-21  Jakub Jelinek  <jakub@redhat.com>

	* env.c (parse_target_offload): Change new_offload var type to int,
	preinitialize to -1, remove found var and test new_offload != -1
	instead of found.
This commit is contained in:
Jakub Jelinek 2020-10-21 10:21:52 +02:00
parent bae73ca522
commit 121a8812c4

View File

@ -380,8 +380,7 @@ static void
parse_target_offload (const char *name, enum gomp_target_offload_t *offload)
{
const char *env;
bool found = false;
enum gomp_target_offload_t new_offload;
int new_offload = -1;
env = getenv (name);
if (env == NULL)
@ -392,24 +391,21 @@ parse_target_offload (const char *name, enum gomp_target_offload_t *offload)
if (strncasecmp (env, "default", 7) == 0)
{
env += 7;
found = true;
new_offload = GOMP_TARGET_OFFLOAD_DEFAULT;
}
else if (strncasecmp (env, "mandatory", 9) == 0)
{
env += 9;
found = true;
new_offload = GOMP_TARGET_OFFLOAD_MANDATORY;
}
else if (strncasecmp (env, "disabled", 8) == 0)
{
env += 8;
found = true;
new_offload = GOMP_TARGET_OFFLOAD_DISABLED;
}
while (isspace ((unsigned char) *env))
++env;
if (found && *env == '\0')
if (new_offload != -1 && *env == '\0')
{
*offload = new_offload;
return;