I wrote: > Andres Freund <and...@anarazel.de> writes: >> On 2022-03-26 12:13:12 -0400, Tom Lane wrote: >>> This code is old, but mylodon wasn't doing that a week ago, so >>> Andres must've updated the compiler and/or changed its options.
>> Yep, updated it to clang 13. It's a warning present in 13, but not in 12. > OK, that answers that. ... Actually, after looking closer, I misread what our code is doing. These call sites are trying to set the relptr value to "null" (zero), and AFAICS it should be allowed: freepage.c:188:2: warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction] relptr_store(base, fpm->btree_root, (FreePageBtree *) NULL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../../src/include/utils/relptr.h:63:59: note: expanded from macro 'relptr_store' (rp).relptr_off = ((val) == NULL ? 0 : ((char *) (val)) - (base))) ~~~~~~~~~~~~~~~~ ^ clang is complaining about the subtraction despite it being inside a conditional arm that cannot be reached when val is null. It's hard to see how that isn't a flat-out compiler bug. However, granting that it isn't going to get fixed right away, we could replace these call sites with "relptr_store_null()", and maybe get rid of the conditional in relptr_store(). regards, tom lane