https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93010
--- Comment #2 from Alexander Cherepanov <ch3root at openwall dot com> --- But gcc seems to be better than clang in arranging compound literals in memory so here is a gcc-only testcase with them: ---------------------------------------------------------------------- #include <stdio.h> int main() { unsigned long u, v; { u = (unsigned long)&(int){0}; } { v = (unsigned long)&(int){0}; } printf("diff = %lu\n", u - v); printf("eq = %d\n", u == v); } ---------------------------------------------------------------------- $ gcc -std=c11 -pedantic -Wall -Wextra -O3 test.c && ./a.out diff = 0 eq = 0 ---------------------------------------------------------------------- gcc x86-64 version: gcc (GCC) 10.0.0 20191230 (experimental) ----------------------------------------------------------------------