Thread: Paint some PG_USED_FOR_ASSERTS_ONLY in inline functions of ilist.h and bufpage.h
Paint some PG_USED_FOR_ASSERTS_ONLY in inline functions of ilist.h and bufpage.h
From
Michael Paquier
Date:
Hi all, The following functions in ilist.h and bufpage.h use some arguments only in assertions: - dlist_next_node - dlist_prev_node - slist_has_next - slist_next_node - PageValidateSpecialPointer Without PG_USED_FOR_ASSERTS_ONLY, this can lead to compilation warnings when not using assertions, and one example of that is plpgsql_check. We don't have examples on HEAD where PG_USED_FOR_ASSERTS_ONLY is used on arguments, but that looks to work properly with gcc. Thoughts? -- Michael
Attachment
Re: Paint some PG_USED_FOR_ASSERTS_ONLY in inline functions of ilist.h and bufpage.h
From
Julien Rouhaud
Date:
On Tue, Jan 19, 2021 at 9:53 AM Michael Paquier <michael@paquier.xyz> wrote: > > Hi all, > > The following functions in ilist.h and bufpage.h use some arguments > only in assertions: > - dlist_next_node > - dlist_prev_node > - slist_has_next > - slist_next_node > - PageValidateSpecialPointer > > Without PG_USED_FOR_ASSERTS_ONLY, this can lead to compilation > warnings when not using assertions, and one example of that is > plpgsql_check. For the record, that's due to that extra flags in the Makefile: override CFLAGS += -I$(top_builddir)/src/pl/plpgsql/src -Wall I think that we're still far from being able to get a clean output using -Wall on postgres itself, so I don't know how much we can promise to external code, but fixing those may be a good step. > We don't have examples on HEAD where > PG_USED_FOR_ASSERTS_ONLY is used on arguments, but that looks to work > properly with gcc. Yeah I don't see any explicit mention on that on gcc manual. For the record it also work as expected using clang, and the attached patch remove all warnings when compiling plpgsql_check.
Re: Paint some PG_USED_FOR_ASSERTS_ONLY in inline functions of ilist.h and bufpage.h
From
Michael Paquier
Date:
On Tue, Jan 19, 2021 at 04:27:43PM +0800, Julien Rouhaud wrote: > Yeah I don't see any explicit mention on that on gcc manual. For the > record it also work as expected using clang, and the attached patch > remove all warnings when compiling plpgsql_check. FWIW, the part of the GCC docs that I looked at is here: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#Common-Variable-Attributes And what I have done does not seem completely legal either for function arguments, even if I am not getting any complaints when compiling that. -- Michael