Skip to content

Commit 05cbd6c

Browse files
committed
Swap order of extern/static and pg_nodiscard
When pg_nodiscard was first added, the C standard draft had it as a function specifier, and so the code comment about placement was written with that in mind. The final C23 standard has it as an attribute and the placement rules are a bit different for that. Specifically, it needs to be before extern or static. (Or at least both current clang and gcc require that.) So just swap these. (To be clear: The current implementation with gcc attributes doesn't care. This change is just for maximum forward compatibility for non-gcc compilers.) This also keeps the order consistent with the previously introduced pg_noreturn. Also update the code comment to reflect the mentioned developments since its introduction. Reviewed-by: Dagfinn Ilmari Mannsåker <[email protected]> Reviewed-by: Andres Freund <[email protected]> Discussion: https://www.postgresql.org/message-id/flat/pxr5b3z7jmkpenssra5zroxi7qzzp6eswuggokw64axmdixpnk@zbwxuq7gbbcw
1 parent 01261fb commit 05cbd6c

File tree

6 files changed

+45
-45
lines changed

6 files changed

+45
-45
lines changed

src/include/c.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@
135135

136136
/*
137137
* pg_nodiscard means the compiler should warn if the result of a function
138-
* call is ignored. The name "nodiscard" is chosen in alignment with
139-
* (possibly future) C and C++ standards. For maximum compatibility, use it
140-
* as a function declaration specifier, so it goes before the return type.
138+
* call is ignored. The name "nodiscard" is chosen in alignment with the C23
139+
* standard attribute with the same name. For maximum forward compatibility,
140+
* place it before the declaration.
141141
*/
142142
#ifdef __GNUC__
143143
#define pg_nodiscard __attribute__((warn_unused_result))

src/include/common/base64.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
#define BASE64_H
1212

1313
/* base 64 */
14-
extern pg_nodiscard int pg_b64_encode(const char *src, int len, char *dst, int dstlen);
15-
extern pg_nodiscard int pg_b64_decode(const char *src, int len, char *dst, int dstlen);
14+
pg_nodiscard extern int pg_b64_encode(const char *src, int len, char *dst, int dstlen);
15+
pg_nodiscard extern int pg_b64_decode(const char *src, int len, char *dst, int dstlen);
1616
extern int pg_b64_enc_len(int srclen);
1717
extern int pg_b64_dec_len(int srclen);
1818

src/include/nodes/pg_list.h

+34-34
Original file line numberDiff line numberDiff line change
@@ -608,39 +608,39 @@ extern List *list_make5_impl(NodeTag t, ListCell datum1, ListCell datum2,
608608
ListCell datum3, ListCell datum4,
609609
ListCell datum5);
610610

611-
extern pg_nodiscard List *lappend(List *list, void *datum);
612-
extern pg_nodiscard List *lappend_int(List *list, int datum);
613-
extern pg_nodiscard List *lappend_oid(List *list, Oid datum);
614-
extern pg_nodiscard List *lappend_xid(List *list, TransactionId datum);
611+
pg_nodiscard extern List *lappend(List *list, void *datum);
612+
pg_nodiscard extern List *lappend_int(List *list, int datum);
613+
pg_nodiscard extern List *lappend_oid(List *list, Oid datum);
614+
pg_nodiscard extern List *lappend_xid(List *list, TransactionId datum);
615615

616-
extern pg_nodiscard List *list_insert_nth(List *list, int pos, void *datum);
617-
extern pg_nodiscard List *list_insert_nth_int(List *list, int pos, int datum);
618-
extern pg_nodiscard List *list_insert_nth_oid(List *list, int pos, Oid datum);
616+
pg_nodiscard extern List *list_insert_nth(List *list, int pos, void *datum);
617+
pg_nodiscard extern List *list_insert_nth_int(List *list, int pos, int datum);
618+
pg_nodiscard extern List *list_insert_nth_oid(List *list, int pos, Oid datum);
619619

620-
extern pg_nodiscard List *lcons(void *datum, List *list);
621-
extern pg_nodiscard List *lcons_int(int datum, List *list);
622-
extern pg_nodiscard List *lcons_oid(Oid datum, List *list);
620+
pg_nodiscard extern List *lcons(void *datum, List *list);
621+
pg_nodiscard extern List *lcons_int(int datum, List *list);
622+
pg_nodiscard extern List *lcons_oid(Oid datum, List *list);
623623

624-
extern pg_nodiscard List *list_concat(List *list1, const List *list2);
625-
extern pg_nodiscard List *list_concat_copy(const List *list1, const List *list2);
624+
pg_nodiscard extern List *list_concat(List *list1, const List *list2);
625+
pg_nodiscard extern List *list_concat_copy(const List *list1, const List *list2);
626626

627-
extern pg_nodiscard List *list_truncate(List *list, int new_size);
627+
pg_nodiscard extern List *list_truncate(List *list, int new_size);
628628

629629
extern bool list_member(const List *list, const void *datum);
630630
extern bool list_member_ptr(const List *list, const void *datum);
631631
extern bool list_member_int(const List *list, int datum);
632632
extern bool list_member_oid(const List *list, Oid datum);
633633
extern bool list_member_xid(const List *list, TransactionId datum);
634634

635-
extern pg_nodiscard List *list_delete(List *list, void *datum);
636-
extern pg_nodiscard List *list_delete_ptr(List *list, void *datum);
637-
extern pg_nodiscard List *list_delete_int(List *list, int datum);
638-
extern pg_nodiscard List *list_delete_oid(List *list, Oid datum);
639-
extern pg_nodiscard List *list_delete_first(List *list);
640-
extern pg_nodiscard List *list_delete_last(List *list);
641-
extern pg_nodiscard List *list_delete_first_n(List *list, int n);
642-
extern pg_nodiscard List *list_delete_nth_cell(List *list, int n);
643-
extern pg_nodiscard List *list_delete_cell(List *list, ListCell *cell);
635+
pg_nodiscard extern List *list_delete(List *list, void *datum);
636+
pg_nodiscard extern List *list_delete_ptr(List *list, void *datum);
637+
pg_nodiscard extern List *list_delete_int(List *list, int datum);
638+
pg_nodiscard extern List *list_delete_oid(List *list, Oid datum);
639+
pg_nodiscard extern List *list_delete_first(List *list);
640+
pg_nodiscard extern List *list_delete_last(List *list);
641+
pg_nodiscard extern List *list_delete_first_n(List *list, int n);
642+
pg_nodiscard extern List *list_delete_nth_cell(List *list, int n);
643+
pg_nodiscard extern List *list_delete_cell(List *list, ListCell *cell);
644644

645645
extern List *list_union(const List *list1, const List *list2);
646646
extern List *list_union_ptr(const List *list1, const List *list2);
@@ -657,25 +657,25 @@ extern List *list_difference_ptr(const List *list1, const List *list2);
657657
extern List *list_difference_int(const List *list1, const List *list2);
658658
extern List *list_difference_oid(const List *list1, const List *list2);
659659

660-
extern pg_nodiscard List *list_append_unique(List *list, void *datum);
661-
extern pg_nodiscard List *list_append_unique_ptr(List *list, void *datum);
662-
extern pg_nodiscard List *list_append_unique_int(List *list, int datum);
663-
extern pg_nodiscard List *list_append_unique_oid(List *list, Oid datum);
660+
pg_nodiscard extern List *list_append_unique(List *list, void *datum);
661+
pg_nodiscard extern List *list_append_unique_ptr(List *list, void *datum);
662+
pg_nodiscard extern List *list_append_unique_int(List *list, int datum);
663+
pg_nodiscard extern List *list_append_unique_oid(List *list, Oid datum);
664664

665-
extern pg_nodiscard List *list_concat_unique(List *list1, const List *list2);
666-
extern pg_nodiscard List *list_concat_unique_ptr(List *list1, const List *list2);
667-
extern pg_nodiscard List *list_concat_unique_int(List *list1, const List *list2);
668-
extern pg_nodiscard List *list_concat_unique_oid(List *list1, const List *list2);
665+
pg_nodiscard extern List *list_concat_unique(List *list1, const List *list2);
666+
pg_nodiscard extern List *list_concat_unique_ptr(List *list1, const List *list2);
667+
pg_nodiscard extern List *list_concat_unique_int(List *list1, const List *list2);
668+
pg_nodiscard extern List *list_concat_unique_oid(List *list1, const List *list2);
669669

670670
extern void list_deduplicate_oid(List *list);
671671

672672
extern void list_free(List *list);
673673
extern void list_free_deep(List *list);
674674

675-
extern pg_nodiscard List *list_copy(const List *oldlist);
676-
extern pg_nodiscard List *list_copy_head(const List *oldlist, int len);
677-
extern pg_nodiscard List *list_copy_tail(const List *oldlist, int nskip);
678-
extern pg_nodiscard List *list_copy_deep(const List *oldlist);
675+
pg_nodiscard extern List *list_copy(const List *oldlist);
676+
pg_nodiscard extern List *list_copy_head(const List *oldlist, int len);
677+
pg_nodiscard extern List *list_copy_tail(const List *oldlist, int nskip);
678+
pg_nodiscard extern List *list_copy_deep(const List *oldlist);
679679

680680
typedef int (*list_sort_comparator) (const ListCell *a, const ListCell *b);
681681
extern void list_sort(List *list, list_sort_comparator cmp);

src/include/storage/buffile.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ typedef struct BufFile BufFile;
3838

3939
extern BufFile *BufFileCreateTemp(bool interXact);
4040
extern void BufFileClose(BufFile *file);
41-
extern pg_nodiscard size_t BufFileRead(BufFile *file, void *ptr, size_t size);
41+
pg_nodiscard extern size_t BufFileRead(BufFile *file, void *ptr, size_t size);
4242
extern void BufFileReadExact(BufFile *file, void *ptr, size_t size);
4343
extern size_t BufFileReadMaybeEOF(BufFile *file, void *ptr, size_t size, bool eofOK);
4444
extern void BufFileWrite(BufFile *file, const void *ptr, size_t size);

src/include/utils/guc.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ extern ArrayType *GUCArrayDelete(ArrayType *array, const char *name);
444444
extern ArrayType *GUCArrayReset(ArrayType *array);
445445

446446
extern void *guc_malloc(int elevel, size_t size);
447-
extern pg_nodiscard void *guc_realloc(int elevel, void *old, size_t size);
447+
pg_nodiscard extern void *guc_realloc(int elevel, void *old, size_t size);
448448
extern char *guc_strdup(int elevel, const char *src);
449449
extern void guc_free(void *ptr);
450450

src/include/utils/palloc.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ extern void *palloc(Size size);
7979
extern void *palloc0(Size size);
8080
extern void *palloc_extended(Size size, int flags);
8181
extern void *palloc_aligned(Size size, Size alignto, int flags);
82-
extern pg_nodiscard void *repalloc(void *pointer, Size size);
83-
extern pg_nodiscard void *repalloc_extended(void *pointer,
82+
pg_nodiscard extern void *repalloc(void *pointer, Size size);
83+
pg_nodiscard extern void *repalloc_extended(void *pointer,
8484
Size size, int flags);
85-
extern pg_nodiscard void *repalloc0(void *pointer, Size oldsize, Size size);
85+
pg_nodiscard extern void *repalloc0(void *pointer, Size oldsize, Size size);
8686
extern void pfree(void *pointer);
8787

8888
/*
@@ -110,7 +110,7 @@ extern void pfree(void *pointer);
110110

111111
/* Higher-limit allocators. */
112112
extern void *MemoryContextAllocHuge(MemoryContext context, Size size);
113-
extern pg_nodiscard void *repalloc_huge(void *pointer, Size size);
113+
pg_nodiscard extern void *repalloc_huge(void *pointer, Size size);
114114

115115
/*
116116
* Although this header file is nominally backend-only, certain frontend

0 commit comments

Comments
 (0)