This caught my eye while building with V=1:

/bin/sh ../libtool  --tag=CC   --mode=link gcc -std=gnu11 -Wall
-Wmissing-prototypes -Wdeclaration-after-statement -Wpointer-arith
-Wswitch-enum -fno-strict-aliasing -fwrapv -m64 -march=native
-export-dynamic -no-undefined -module -m64 -Wl,-rpath,/usr/local/lib64
-L/usr/local/lib64 -Wl,--enable-new-dtags -o guile-readline.la -rpath
/usr/local/lib64/guile/2.2/extensions readline.lo -L/usr/local/lib64
-lreadline -R/usr/local/lib64 -lncurses  ../libguile/libguile-2.2.la
../lib/libgnu.la -lcrypt -ldl -lpthread -lm

-fwrapv is used by illegal programs to try to get them to run. Also
see Ian Lance Taylor's blog at https://www.airs.com/blog/archives/120.
It would probably be a good idea to remove the undefined behavior
rather than compiling with -fwrapv.

If its not clear where the undefined behavior is, then
-fsanitize=undefined can usually pinpoint them (or most of them).
Autotool projects can be kind of tricky.
CFLAGS=CXXFLAGS="-fsanitize=undefined" and LDFLAGS="-lubsan" usually
works (it looks like it works Guile). Then, run the self tests and
generate the findings.

-fno-strict-aliasing is another flag that's usually indicates code
with room for improvement.

Jeff

Reply via email to