https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105750
--- Comment #2 from Li Shaohua <shaohua.li at inf dot ethz.ch> --- Yea, I'm aware of that. What makes me confused is for the following code, gcc generates a larger redone for the struct variable j, i.e., 48 bytes. https://godbolt.org/z/Wv1djjrqv $cat b.c struct a { long f; }; int i; volatile struct a j[1][6] = {2}; long k() { return j[0][6].f; } int main() { return k(); } $ $