Thread
Commits
-
Fix compiler warning
- 32db0d68be40 10.18 landed
-
Silence assorted "variable may be used uninitialized" warnings.
- 9a725f7b5cb7 11.0 cited
-
back-port one-line gcc-10+ warning fix to REL_10_STABLE
Anton Voloshin <a.voloshin@postgrespro.ru> — 2021-06-07T07:16:18Z
Hello, hackers, Currently, REL_10_STABLE can't be compiled with gcc-10 or 11, -Werror and "./configure" without arguments. E.g. gcc-11 gives an error: objectaddress.c:1618:99: error: ‘typeoids’ may be used uninitialized [-Werror=maybe-uninitialized] 1618 | ObjectIdGetDatum(typeoids[1]), ... objectaddress.c: In function ‘get_object_address’: objectaddress.c:1578:33: note: ‘typeoids’ declared here 1578 | Oid typeoids[2]; | ^~~~~~~~ gcc-10 gives a similar error. I propose to back-port a small part of Tom Lane's commit 9a725f7b5cb7, which was somehow never back-ported to REL_10_STABLE. The fix is explicit initialization to InvalidOid for the typeoids[2] variable involved. Even if, technically, the initialization is probably not required (or so I've heard), in PostgreSQL 11+ it was deemed that explicit initialization is acceptable here to avoid compiler warning. Please note that above-mentioned commit 9a725f7b5cb7 adds initialization for a variable from the previous line, typenames[2] as well, but since gcc 10 and 11 don't warn on that, I guess there is no need to add that initialization as well. The proposed one-line patch is attached, but basically it is: diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index b0ff255a593..8cc9dc003c8 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -1591,6 +1591,7 @@ get_object_address_opf_member(ObjectType objtype, famaddr = get_object_address_opcf(OBJECT_OPFAMILY, copy, false); /* find out left/right type names and OIDs */ + typeoids[0] = typeoids[1] = InvalidOid; i = 0; foreach(cell, lsecond(object)) { I've verified that all other current branches, i.e. REL9_6_STABLE..REL_13_STABLE (excluding REL_10_STABLE) and master can compile cleanly even with bare ./configure without arguments using gcc-11. -- Anton Voloshin Postgres Professional, The Russian Postgres Company https://postgrespro.ru -
Re: back-port one-line gcc-10+ warning fix to REL_10_STABLE
Alvaro Herrera <alvherre@alvh.no-ip.org> — 2021-06-07T15:14:25Z
On 2021-Jun-07, Anton Voloshin wrote: > Hello, hackers, > > Currently, REL_10_STABLE can't be compiled with gcc-10 or 11, -Werror and > "./configure" without arguments. E.g. gcc-11 gives an error: Hi, thanks for the report. I noticed that the commit that introduced this (41306a511c01) was introduced in 9.5, so I was surprised that you report it doesn't complain in 9.6. Turns out that Peter E had fixed the issue, but only in 9.5 and 9.6; I don't really understand why no fix was applied to 10. I forward-ported that commit to 10, which should also fix the problem. Branches 11 and up already have Tom Lane's fix. -- Álvaro Herrera Valdivia, Chile "[PostgreSQL] is a great group; in my opinion it is THE best open source development communities in existence anywhere." (Lamar Owen)