https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78180
--- Comment #1 from Barry Revzin <barry.revzin at gmail dot com> --- Upon further investigation, all of the difference is in benchmark comes from the initialization of the raw array versus std::array. For some reason, in the two examples, the two containers are initialized differently - and this propagates down to using different registers throughout the rest of the benchmark.