Hello, I am investigating a build warning->failure with 2.8 with --enable-gcc-warnings:
in lib/diffseq.h compareseq() the fxbest and bxbest variables seems to be uninitialized in some code paths. This is from gcc 7 through 14. Was thinking about initializing to -1 and OFFSEX_MAX... [ 35s] gcc -fstrict-flex-arrays -Wall -Warith-conversion -Wbad-function-cast -Wcast-align=strict -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Wduplicated-branches -Wduplicated-cond -Wextra -Wformat-signedness -Wflex-array-member-not-at-end -Winit-self -Winvalid-pch -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wmissing-variable-declarations -Wnested-externs -Wnull-dereference -Wold-style-definition -Wopenmp-simd -Woverlength-strings -Wpacked -Wpointer-arith -Wshadow -Wstack-protector -Wstrict-flex-arrays -Wstrict-overflow -Wstrict-prototypes -Wsuggest-attribute=cold -Wsuggest-attribute=const -Wsuggest-attribute=format -Wsuggest-attribute=malloc -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure -Wsuggest-final-methods -Wsuggest-final-types -Wsync-nand -Wtrampolines -Wuninitialized -Wunknown-pragmas -Wunsafe-loop-optimizations -Wunused-macros -Wvariadic-macros -Wvector-operation-performance -Wvla -Wwrite-strings -Warray-bounds=2 -Wattribute-alias=2 -Wbidi-chars=any,ucn -Wformat-overflow=2 -Wformat=2 -Wformat-truncation=2 -Wimplicit-fallthrough=5 -Wshift-overflow=2 -Wuse-after-free=3 -Wunused-const-variable=2 -Wvla-larger-than=4031 -Wno-sign-compare -fdiagnostics-show-option -Werror -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -flto=auto -o patch inp.o patch.o pch.o safe.o util.o version.o merge.o ../lib/libpatch.a [ 35s] In function 'diag', [ 35s] inlined from 'compareseq' at ../lib/diffseq.h:515:7: [ 35s] ../lib/diffseq.h:426:36: error: 'fxbest' may be used uninitialized [-Werror=maybe-uninitialized] [ 35s] 426 | part->ymid = fxybest - fxbest; [ 35s] | ^ [ 35s] ../lib/diffseq.h: In function 'compareseq': [ 35s] ../lib/diffseq.h:387:32: note: 'fxbest' was declared here [ 35s] 387 | OFFSET fxybest = -1, fxbest; [ 35s] | ^ [ 35s] In function 'diag', [ 35s] inlined from 'compareseq' at ../lib/diffseq.h:515:7: [ 35s] ../lib/diffseq.h:433:36: error: 'bxbest' may be used uninitialized [-Werror=maybe-uninitialized] [ 35s] 433 | part->ymid = bxybest - bxbest; [ 35s] | ^ [ 35s] ../lib/diffseq.h: In function 'compareseq': [ 35s] ../lib/diffseq.h:405:40: note: 'bxbest' was declared here [ 35s] 405 | OFFSET bxybest = OFFSET_MAX, bxbest; [ 35s] | ^ [ 35s] lto1: all warnings being treated as errors [ 35s] make[3]: *** [/tmp/ccmbP17S.mk:5: /tmp/ccLaMCeZ.ltrans1.ltrans.o] Error 1 [ 35s] make[3]: *** Waiting for unfinished jobs...
