https://bugs.kde.org/show_bug.cgi?id=486093
Bug ID: 486093 Summary: -Wstrict-aliasing in tests Classification: Developer tools Product: valgrind Version: 3.22 GIT Platform: Other OS: Other Status: REPORTED Severity: normal Priority: NOR Component: general Assignee: jsew...@acm.org Reporter: s...@gentoo.org Target Milestone: --- THere's a lot of -Wstrict-aliasing instances in the testsuite. In Gentoo, we try to recommend people to use -Werror=strict-aliasing -Werror=lto-type-mismatch -Werror=some-other-bits when using LTO to help find likely runtime problems (Valgrind isn't LTO-compaitble for other reasons but that's neither here nor there for this). When building Valgrind with such, we get: ``` x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I../../.. -I../../.. -I../../../include -I../../../coregrind -I../../../include -I../../../VEX/pub -I../../../VEX/pub -DVGA_amd64=1 -DVGO_l inux=1 -DVGP_amd64_linux=1 -DVGPV_amd64_linux_vanilla=1 -DVGA_SEC_x86=1 -DVGP_SEC_amd64_linux=1 -Winline -Wall -Wshadow -Wno-long-long -g -fno-stack-protector -m64 -O -ffast-math - mfpmath=387 -mfancy-math-387 -O3 -march=native -mtls-dialect=gnu2 -fno-semantic-interposition -pipe -fcf-protection=none -fdiagnostics-color=always -fdiagnostics-urls=never -frecord-gcc -switches -Wa,-O2 -Wa,-mtune=znver2 -Wstrict-aliasing -Wfree-nonheap-object -Werror=lto-type-mismatch -Werror=strict-aliasing -Werror=odr -Wstrict-aliasing -Wfree-nonheap-object -Werror =lto-type-mismatch -Werror=strict-aliasing -Werror=odr -Wbuiltin-declaration-mismatch -ggdb3 -Wformat -Wformat-security -Waddress -Warray-bounds -Wfree-nonheap-object -Wint-to-pointer-c ast -Wmain -Wnonnull -Wodr -Wreturn-type -Wsizeof-pointer-memaccess -Wstrict-aliasing -Wstring-compare -Wuninitialized -Wvarargs -fno-stack-protector -fno-harden-control-flow-redundancy -c -o more_x87_fp-more_x87_fp.o `test -f 'more_x87_fp.c' || echo './'`more_x87_fp.c make[5]: 'shr_edx' is up to date. more_x87_fp.c: In function ‘test_fcvt’: more_x87_fp.c:108:28: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] 108 | printf("a=%016llx\n", *(long long *)&a); | ^~~~~~~~~~~~~~~ more_x87_fp.c:109:34: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] 109 | printf("la=%016llx %04x\n", *(long long *)&la, | ^~~~~~~~~~~~~~~~ more_x87_fp.c:110:12: warning: ‘la’ is used uninitialized [-Wuninitialized] 110 | *(unsigned short *)((char *)(&la) + 8)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ more_x87_fp.c:96:17: note: ‘la’ declared here 96 | long double la; | ^~ cc1: some warnings being treated as errors x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I../../.. -I../../.. -I../../../include -I../../../coregrind -I../../../include -I../../../VEX/pub -I../../../VEX/pub -DVGA_amd64=1 -DVGO_l inux=1 -DVGP_amd64_linux=1 -DVGPV_amd64_linux_vanilla=1 -DVGA_SEC_x86=1 -DVGP_SEC_amd64_linux=1 -Winline -Wall -Wshadow -Wno-long-long -g -fno-stack-protector -m32 -mmmx -msse -O3 - march=native -mtls-dialect=gnu2 -fno-semantic-interposition -pipe -fcf-protection=none -fdiagnostics-color=always -fdiagnostics-urls=never -frecord-gcc-switches -Wa,-O2 -Wa,-mtune=znver 2 -Wstrict-aliasing -Wfree-nonheap-object -Werror=lto-type-mismatch -Werror=strict-aliasing -Werror=odr -Wstrict-aliasing -Wfree-nonheap-object -Werror=lto-type-mismatch -Werror=strict- aliasing -Werror=odr -Wbuiltin-declaration-mismatch -ggdb3 -Wformat -Wformat-security -Waddress -Warray-bounds -Wfree-nonheap-object -Wint-to-pointer-cast -Wmain -Wnonnull -Wodr -Wretur n-type -Wsizeof-pointer-memaccess -Wstrict-aliasing -Wstring-compare -Wuninitialized -Wvarargs -fno-stack-protector -fno-harden-control-flow-redundancy -c -o more_x86_fp.o more_x86_fp.c more_x86_fp.c: In function ‘test_fcvt’: more_x86_fp.c:98:28: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] 98 | printf("a=%016llx\n", *(long long *)&a); | ^~~~~~~~~~~~~~~ more_x86_fp.c:99:34: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing] 99 | printf("la=%016llx %04x\n", *(long long *)&la, | ^~~~~~~~~~~~~~~~ more_x86_fp.c:100:12: warning: ‘la’ is used uninitialized [-Wuninitialized] 100 | *(unsigned short *)((char *)(&la) + 8)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ more_x86_fp.c:86:17: note: ‘la’ declared here 86 | long double la; | ^~ cc1: some warnings being treated as errors ``` This is with `gcc version 14.0.1 20240423 (experimental) 0c8e99e5c32be9f2604f3c330814993f29818037 (Gentoo Hardened 14.0.9999 p, commit 257336021ebdc63cdd390487506f23d83f04ab91)` but I've been seeing this for a while and just slacked on reporting it. -- You are receiving this mail because: You are watching all bug changes.