https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113763
Bug ID: 113763 Summary: [14 Regression] build fails with clang++ host compiler because aarch64.cc uses C++14 constexpr. Product: gcc Version: 14.0 Status: UNCONFIRMED Keywords: build Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: iains at gcc dot gnu.org CC: rsandifo at gcc dot gnu.org Target Milestone: --- Target: aarch64 On aarch64, can no longer bootstrap GCC using clang because: /src-local/gcc-master-patched/gcc/config/aarch64/aarch64.cc:13654:50: error: constexpr variable 'tiles' must be initialized by a constant expression static constexpr std::pair<unsigned int, char> tiles[] = { ^ ~ /src-local/gcc-master-patched/gcc/config/aarch64/aarch64.cc:13655:5: note: non-constexpr constructor 'pair<int, char, nullptr>' cannot be used in a constant expression { 0xff, 'b' }, ^ /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/__utility/pair.h:194:5: note: declared here pair(_U1&& __u1, _U2&& __u2) ^ It seems that GCC accepts this back to at least gcc-4.7 for std=c++11 but, at least cppreference says that form is only constexpr from c++14 and clang++ does not accept it. https://en.cppreference.com/w/cpp/utility/pair/pair trivial reproducer: static constexpr std::pair<unsigned int, char> tiles[] = { { 0xff, 'b' }, { 0x55, 'h' }, { 0x11, 's' }, { 0x01, 'd' } }; int main(){}