Обсуждение: Fix compilation warnings when CFLAGS -Og is specified

Поиск
Список
Период
Сортировка

Fix compilation warnings when CFLAGS -Og is specified

От
"Hayato Kuroda (Fujitsu)"
Дата:
Dear hackers,

# Background

Based on [1], I did configure and build with options:
(I used Meson build system, but it could be reproduced by Autoconf/Make)

```
$ meson setup -Dcassert=true -Ddebug=true -Dc_args=-Og  ../builder
$ cd ../builder
$ ninja
```

My gcc version is 4.8.5, and ninja is 1.10.2.

# Problem

I got warnings while compiling. I found that these were reported when -Og was specified.
All of raised said that the variable might be used without initialization.

```
[122/1910] Compiling C object src/backend/postgres_lib.a.p/libpq_be-fsstubs.c.o
../postgres/src/backend/libpq/be-fsstubs.c: In function ‘be_lo_export’:
../postgres/src/backend/libpq/be-fsstubs.c:537:24: warning: ‘fd’ may be used uninitialized in this function
[-Wmaybe-uninitialized]
  if (CloseTransientFile(fd) != 0)
                        ^
[390/1910] Compiling C object src/backend/postgres_lib.a.p/commands_trigger.c.o
In file included from ../postgres/src/backend/commands/trigger.c:14:0:
../postgres/src/backend/commands/trigger.c: In function ‘ExecCallTriggerFunc’:
../postgres/src/include/postgres.h:314:2: warning: ‘result’ may be used uninitialized in this function
[-Wmaybe-uninitialized]
  return (Pointer) X;
  ^
../postgres/src/backend/commands/trigger.c:2316:9: note: ‘result’ was declared here
  Datum  result;
         ^
[1023/1910] Compiling C object src/backend/postgres_lib.a.p/utils_adt_xml.c.o
../postgres/src/backend/utils/adt/xml.c: In function ‘xml_pstrdup_and_free’:
../postgres/src/backend/utils/adt/xml.c:1359:2: warning: ‘result’ may be used uninitialized in this function
[-Wmaybe-uninitialized]
  return result;
  ^
[1600/1910] Compiling C object contrib/pg_stat_statements/pg_stat_statements.so.p/pg_stat_statements.c.o
../postgres/contrib/pg_stat_statements/pg_stat_statements.c: In function ‘pgss_planner’:
../postgres/contrib/pg_stat_statements/pg_stat_statements.c:960:2: warning: ‘result’ may be used uninitialized in this
function[-Wmaybe-uninitialized] 
  return result;
  ^
[1651/1910] Compiling C object contrib/postgres_fdw/postgres_fdw.so.p/postgres_fdw.c.o
../postgres/contrib/postgres_fdw/postgres_fdw.c: In function ‘postgresAcquireSampleRowsFunc’:
../postgres/contrib/postgres_fdw/postgres_fdw.c:5346:14: warning: ‘reltuples’ may be used uninitialized in this
function[-Wmaybe-uninitialized] 
   *totalrows = reltuples;
              ^
[1910/1910] Linking target src/interfaces/ecpg/test/thread/alloc
```

# Solution

PSA the patch to keep the compiler quiet. IIUC my compiler considered that
substitutions in PG_TRY() might be skipped. I'm not sure it is real problem,
but the workarounds are harmless.

Or, did I miss something for ignoring above?

[1]:
https://wiki.postgresql.org/wiki/Developer_FAQ#:~:text=or%20MSVC%20tracepoints.-,What%20debugging%20features%20are%20available%3F,-Compile%2Dtime

Best Regards,
Hayato Kuroda
FUJITSU LIMITED


Вложения

Re: Fix compilation warnings when CFLAGS -Og is specified

От
Kyotaro Horiguchi
Дата:
At Tue, 1 Aug 2023 04:51:55 +0000, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com> wrote in 
> Dear hackers,
> 
> # Background
> 
> Based on [1], I did configure and build with options:
> (I used Meson build system, but it could be reproduced by Autoconf/Make)
> 
> ```
> $ meson setup -Dcassert=true -Ddebug=true -Dc_args=-Og  ../builder
> $ cd ../builder
> $ ninja
> ```
> 
> My gcc version is 4.8.5, and ninja is 1.10.2.

gcc 4.8 looks very old? 

AFAIS all of those complaints are false positives and if I did this
correclty, gcc 11.3 seems to have been fixed in this regard.

> # Solution
> 
> PSA the patch to keep the compiler quiet. IIUC my compiler considered that
> substitutions in PG_TRY() might be skipped. I'm not sure it is real problem,
> but the workarounds are harmless.
> 
> Or, did I miss something for ignoring above?
> 
> [1]:
https://wiki.postgresql.org/wiki/Developer_FAQ#:~:text=or%20MSVC%20tracepoints.-,What%20debugging%20features%20are%20available%3F,-Compile%2Dtime

I think we don't want "fix" those as far as modern compilers don't
emit the false positives.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



RE: Fix compilation warnings when CFLAGS -Og is specified

От
"Hayato Kuroda (Fujitsu)"
Дата:
Dear Horiguchi-san,

Thanks for replying!

> > My gcc version is 4.8.5, and ninja is 1.10.2.
>
> gcc 4.8 looks very old?
>
> AFAIS all of those complaints are false positives and if I did this
> correclty, gcc 11.3 seems to have been fixed in this regard.

I switched to newer gcc (8.3, still old...) and tried. As you said it did not raise
such warnings.

> > # Solution
> >
> > PSA the patch to keep the compiler quiet. IIUC my compiler considered that
> > substitutions in PG_TRY() might be skipped. I'm not sure it is real problem,
> > but the workarounds are harmless.
> >
> > Or, did I miss something for ignoring above?
> >
> > [1]:
> https://wiki.postgresql.org/wiki/Developer_FAQ#:~:text=or%20MSVC%20trace
> points.-,What%20debugging%20features%20are%20available%3F,-Compile%2Dti
> me
>
> I think we don't want "fix" those as far as modern compilers don't
> emit the false positives.

OK, I should use newer one for modern codes. Sorry for noise and thank you for confirmation.

Best Regards,
Hayato Kuroda
FUJITSU LIMITED