https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89055
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|wrong location with |wrong location with macros |predefined macros | --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- In this case it is just the macro in general, not really the predefined one that makes a difference: #define S_MAX (18446744073709551615UL) char a[~0LU << 1]; char b0[S_MAX << 1]; char b[__SIZE_MAX__ << 1]; ---- CUT ---- <source>:2:13: error: size '18446744073709551614' of array 'a' exceeds maximum object size '9223372036854775807' 2 | char a[~0LU << 1]; | ~~~~~^~~~ <source>:3:15: error: size '18446744073709551614' of array 'b0' exceeds maximum object size '9223372036854775807' 3 | char b0[S_MAX << 1]; | ^ <source>:4:21: error: size '18446744073709551614' of array 'b' exceeds maximum object size '9223372036854775807' 4 | char b[__SIZE_MAX__ << 1]; | ^