On Sun, Jan 05, 2025 at 08:06:38PM +0900, Akira Yokosawa wrote: > While testing commit f2596972845b ("CodeSamples: Fix liburcu-signal > support deprecation"), I observed build errors under Ubuntu 22.04. > > Which prompted me to test various combinations of cc and optimization > levels in building under CodeSamples/. > > This patch set is a collection of fixes/adjustments to make such various > choices happy. > > Patch 1/6 is a preliminary change for ease of experimenting alternative > GCC_ARGS such as "-g -Wall -O0", "-g -Wall -O1", and so on, under > CodeSamples/. > > Patch 2/6 fixes an issue around forward declaration of struct in .h file > failing to satisfy compiler's assumption of accessing them from inline > functions. Looks like this matters with some of gcc versions in low > level optimization, but gcc of Ubuntu 22.04 hits this even at -O3. > Actual declaration of a struct seems to be needed in front of inline > functions who access such a struct. > > Patch 3/6 adjusts indirection level of pointer arguments in xchg(). > > Patch 4/6 adds "static" to __inline__ functions. > > Patch 5/6 fixes errors of duplicate symbols due to api.h being included > in multiple .c files linked together. As a workaround, "#ifndef SUBOBJ" > is added in api-pthreads.h and a flag of -DSUBOBJ is added in Makefiles > to recipes of .c --> _sub.o. > > Patch 6/6 removes variables whose final values are never used. > Recent clang is pretty strict on set-but-unused variables. > > To test against clang, you need to redirect cc --> clang by, for example, > symlinking $HOME/bin/cc --> /usr/bin/clang or similar. Queued and pushed, thank you very much! And happy perfect-square new year! Thanx, Paul > Thanks, Akira > -- > Akira Yokosawa (6): > CodeSamples: Put $(GCC_ARGS) in cc argument list > CodeSamples/datastruct: Move struct declaration from .c to .h > CodeSamples/advsync: Add explicit type cast in xchg() > CodeSamples/count: Add static to __inline__ function declarations > CodeSamples: Add #ifndef SUBOBJ to api-pthreads.h > CodeSamples/datastruct/Issaquah: Remove unused variables > > CodeSamples/advsync/q.c | 2 +- > CodeSamples/advsync/wfenqueue.c | 2 +- > CodeSamples/api-pthreads/api-pthreads.h | 14 ++++++++++++++ > CodeSamples/count/count_end.c | 4 ++-- > CodeSamples/count/count_end_rcu.c | 4 ++-- > CodeSamples/count/count_stack.c | 6 +++--- > CodeSamples/count/count_stat_atomic.c | 6 +++--- > CodeSamples/datastruct/Issaquah/Makefile | 14 ++++++++++---- > CodeSamples/datastruct/Issaquah/existence.c | 6 ------ > CodeSamples/datastruct/Issaquah/existence.h | 7 ++++++- > CodeSamples/datastruct/Issaquah/existence_test.c | 3 --- > CodeSamples/datastruct/Issaquah/tree.c | 6 ------ > CodeSamples/datastruct/hash/Makefile | 7 +++++-- > CodeSamples/defer/Makefile | 7 +++++-- > CodeSamples/defer/hazptr.h | 6 +++++- > CodeSamples/intro/Makefile | 12 ++++++------ > CodeSamples/locking/Makefile | 6 +++--- > 17 files changed, 66 insertions(+), 46 deletions(-) > > > base-commit: 41e6a800d630336b1d8e614b3d11281e42e880c7 > -- > 2.34.1 >