https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71946
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Works for me on aarch64-linux-gnu with: GNU C++14 (GCC) version 7.0.0 20160717 (experimental) (aarch64-unknown-linux-gnu) Maybe provide a preprocessed source which fails. For me it expands to: # 6 "t.c" 3 4 do { unsigned int __i; fd_set *__arr = ( # 6 "t.c" &set # 6 "t.c" 3 4 ); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) ((__arr)->fds_bits)[__i] = 0; } while (0) # 6 "t.c" ;