diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -120,6 +120,11 @@ C++ Language Changes in Clang ----------------------------- +* Clang's default C++ dialect is now ``gnu++17`` instead of ``gnu++14``. This + means Clang will by default accept code using features from C++17 and + conforming GNU extensions. Projects incompatible with C++17 can add + ``-std=gnu++14`` to their build settings to restore the previous behaviour. + C++20 Feature Support ^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/lib/Basic/LangStandards.cpp b/clang/lib/Basic/LangStandards.cpp --- a/clang/lib/Basic/LangStandards.cpp +++ b/clang/lib/Basic/LangStandards.cpp @@ -78,7 +78,7 @@ if (T.isDriverKit()) return LangStandard::lang_gnucxx17; else - return LangStandard::lang_gnucxx14; + return LangStandard::lang_gnucxx17; case Language::RenderScript: return LangStandard::lang_c99; case Language::HIP: diff --git a/clang/test/Preprocessor/lang-std.cpp b/clang/test/Preprocessor/lang-std.cpp new file mode 100644 --- /dev/null +++ b/clang/test/Preprocessor/lang-std.cpp @@ -0,0 +1,11 @@ +/// Test default dialects. +// RUN: %clang_cc1 -dM -E %s | FileCheck --check-prefix=CXX17 %s +// RUN: %clang_cc1 -dM -E -x cuda %s | FileCheck --check-prefix=CXX14 %s +// RUN: %clang_cc1 -dM -E -x hip %s | FileCheck --check-prefix=CXX14 %s + +// RUN: %clang_cc1 -dM -E -x cuda -std=c++14 %s | FileCheck --check-prefix=CXX14 %s +// RUN: %clang_cc1 -dM -E -x hip -std=c++98 %s | FileCheck --check-prefix=CXX98 %s + +// CXX98: #define __cplusplus 199711L +// CXX14: #define __cplusplus 201402L +// CXX17: #define __cplusplus 201703L diff --git a/clang/test/Preprocessor/lang-std.cu b/clang/test/Preprocessor/lang-std.cu deleted file mode 100644 --- a/clang/test/Preprocessor/lang-std.cu +++ /dev/null @@ -1,7 +0,0 @@ -// RUN: %clang_cc1 -dM -E -x hip %s | FileCheck -check-prefix=CXX14 %s -// RUN: %clang_cc1 -dM -E %s | FileCheck -check-prefix=CXX14 %s -// RUN: %clang_cc1 -dM -E -std=c++98 -x hip %s | FileCheck -check-prefix=CXX98 %s -// RUN: %clang_cc1 -dM -E -std=c++98 %s | FileCheck -check-prefix=CXX98 %s - -// CXX98: #define __cplusplus 199711L -// CXX14: #define __cplusplus 201402L