diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -101,12 +101,10 @@ C Language Changes in Clang --------------------------- -- ... - -C11 Feature Support -^^^^^^^^^^^^^^^^^^^ +- The default C language standard used when `-std=` is not specified has been + upgraded from gnu11 to gnu17. -... +- ... C++ Language Changes in Clang ----------------------------- diff --git a/clang/docs/UsersManual.rst b/clang/docs/UsersManual.rst --- a/clang/docs/UsersManual.rst +++ b/clang/docs/UsersManual.rst @@ -80,7 +80,7 @@ Intro to how to use a C compiler for newbies. compile + link compile then link debug info enabling optimizations -picking a language to use, defaults to C11 by default. Autosenses based +picking a language to use, defaults to C17 by default. Autosenses based on extension. using a makefile Command Line Options @@ -2399,10 +2399,10 @@ Differences between various standard modes ------------------------------------------ -clang supports the -std option, which changes what language mode clang -uses. The supported modes for C are c89, gnu89, c99, gnu99, c11, gnu11, -c17, gnu17, and various aliases for those modes. If no -std option is -specified, clang defaults to gnu11 mode. Many C99 and C11 features are +clang supports the -std option, which changes what language mode clang uses. +The supported modes for C are c89, gnu89, c99, gnu99, c11, gnu11, c17, gnu17, +c2x, gnu2x, and various aliases for those modes. If no -std option is +specified, clang defaults to gnu17 mode. Many C99 and C11 features are supported in earlier modes as a conforming extension, with a warning. Use ``-pedantic-errors`` to request an error if a feature from a later standard revision is used in an earlier mode. diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -2263,7 +2263,7 @@ if (T.isPS4()) LangStd = LangStandard::lang_gnu99; else - LangStd = LangStandard::lang_gnu11; + LangStd = LangStandard::lang_gnu17; #endif break; case Language::ObjC: diff --git a/clang/test/Preprocessor/init-aarch64.c b/clang/test/Preprocessor/init-aarch64.c --- a/clang/test/Preprocessor/init-aarch64.c +++ b/clang/test/Preprocessor/init-aarch64.c @@ -236,7 +236,7 @@ // AARCH64-NEXT: #define __STDC_HOSTED__ 1 // AARCH64-NEXT: #define __STDC_UTF_16__ 1 // AARCH64-NEXT: #define __STDC_UTF_32__ 1 -// AARCH64_C: #define __STDC_VERSION__ 201112L +// AARCH64_C: #define __STDC_VERSION__ 201710L // AARCH64-NEXT: #define __STDC__ 1 // AARCH64-NEXT: #define __UINT16_C_SUFFIX__ // AARCH64-NEXT: #define __UINT16_FMTX__ "hX" @@ -646,7 +646,7 @@ // AARCH64-MSVC: #define __STDC_HOSTED__ 0 // AARCH64-MSVC: #define __STDC_UTF_16__ 1 // AARCH64-MSVC: #define __STDC_UTF_32__ 1 -// AARCH64-MSVC: #define __STDC_VERSION__ 201112L +// AARCH64-MSVC: #define __STDC_VERSION__ 201710L // AARCH64-MSVC: #define __STDC__ 1 // AARCH64-MSVC: #define __UINT16_C_SUFFIX__ // AARCH64-MSVC: #define __UINT16_MAX__ 65535 diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -117,7 +117,7 @@ // RUN: %clang_cc1 -E -dM -triple=x86_64-apple-darwin < /dev/null | FileCheck -match-full-lines -check-prefix C-DEFAULT %s // RUN: %clang_cc1 -E -dM -triple=armv7a-apple-darwin < /dev/null | FileCheck -match-full-lines -check-prefix C-DEFAULT %s // -// C-DEFAULT:#define __STDC_VERSION__ 201112L +// C-DEFAULT:#define __STDC_VERSION__ 201710L // // RUN: %clang_cc1 -ffreestanding -E -dM < /dev/null | FileCheck -match-full-lines -check-prefix FREESTANDING %s // FREESTANDING:#define __STDC_HOSTED__ 0 @@ -2098,7 +2098,7 @@ // MIPS32BE:#define __SIZE_WIDTH__ 32 // MIPS32BE-CXX:#define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 8U // MIPS32BE:#define __STDC_HOSTED__ 0 -// MIPS32BE-C:#define __STDC_VERSION__ 201112L +// MIPS32BE-C:#define __STDC_VERSION__ 201710L // MIPS32BE:#define __STDC__ 1 // MIPS32BE:#define __UINT16_C_SUFFIX__ // MIPS32BE:#define __UINT16_MAX__ 65535 @@ -2557,7 +2557,7 @@ // MIPSN32BE: #define __STDC_HOSTED__ 0 // MIPSN32BE: #define __STDC_UTF_16__ 1 // MIPSN32BE: #define __STDC_UTF_32__ 1 -// MIPSN32BE-C: #define __STDC_VERSION__ 201112L +// MIPSN32BE-C: #define __STDC_VERSION__ 201710L // MIPSN32BE: #define __STDC__ 1 // MIPSN32BE: #define __UINT16_C_SUFFIX__ // MIPSN32BE: #define __UINT16_FMTX__ "hX" @@ -2864,7 +2864,7 @@ // MIPSN32EL: #define __STDC_HOSTED__ 0 // MIPSN32EL: #define __STDC_UTF_16__ 1 // MIPSN32EL: #define __STDC_UTF_32__ 1 -// MIPSN32EL: #define __STDC_VERSION__ 201112L +// MIPSN32EL: #define __STDC_VERSION__ 201710L // MIPSN32EL: #define __STDC__ 1 // MIPSN32EL: #define __UINT16_C_SUFFIX__ // MIPSN32EL: #define __UINT16_FMTX__ "hX" @@ -5390,7 +5390,7 @@ // PPC-DARWIN:#define __SIZE_TYPE__ long unsigned int // PPC-DARWIN:#define __SIZE_WIDTH__ 32 // PPC-DARWIN:#define __STDC_HOSTED__ 0 -// PPC-DARWIN:#define __STDC_VERSION__ 201112L +// PPC-DARWIN:#define __STDC_VERSION__ 201710L // PPC-DARWIN:#define __STDC__ 1 // PPC-DARWIN:#define __UINT16_C_SUFFIX__ // PPC-DARWIN:#define __UINT16_MAX__ 65535 @@ -6602,7 +6602,7 @@ // X86_64-CLOUDABI:#define __STDC_ISO_10646__ 201206L // X86_64-CLOUDABI:#define __STDC_UTF_16__ 1 // X86_64-CLOUDABI:#define __STDC_UTF_32__ 1 -// X86_64-CLOUDABI:#define __STDC_VERSION__ 201112L +// X86_64-CLOUDABI:#define __STDC_VERSION__ 201710L // X86_64-CLOUDABI:#define __STDC__ 1 // X86_64-CLOUDABI:#define __UINT16_C_SUFFIX__ // X86_64-CLOUDABI:#define __UINT16_FMTX__ "hX" @@ -7601,7 +7601,7 @@ // WEBASSEMBLY-NOT:#define __STDC_NO_THREADS__ // WEBASSEMBLY-NEXT:#define __STDC_UTF_16__ 1 // WEBASSEMBLY-NEXT:#define __STDC_UTF_32__ 1 -// WEBASSEMBLY-NEXT:#define __STDC_VERSION__ 201112L +// WEBASSEMBLY-NEXT:#define __STDC_VERSION__ 201710L // WEBASSEMBLY-NEXT:#define __STDC__ 1 // WEBASSEMBLY-NEXT:#define __UINT16_C_SUFFIX__ // WEBASSEMBLY-NEXT:#define __UINT16_FMTX__ "hX" @@ -8166,7 +8166,7 @@ // RISCV32: #define __STDC_HOSTED__ 0 // RISCV32: #define __STDC_UTF_16__ 1 // RISCV32: #define __STDC_UTF_32__ 1 -// RISCV32: #define __STDC_VERSION__ 201112L +// RISCV32: #define __STDC_VERSION__ 201710L // RISCV32: #define __STDC__ 1 // RISCV32: #define __UINT16_C_SUFFIX__ // RISCV32: #define __UINT16_MAX__ 65535 @@ -8373,7 +8373,7 @@ // RISCV64: #define __STDC_HOSTED__ 0 // RISCV64: #define __STDC_UTF_16__ 1 // RISCV64: #define __STDC_UTF_32__ 1 -// RISCV64: #define __STDC_VERSION__ 201112L +// RISCV64: #define __STDC_VERSION__ 201710L // RISCV64: #define __STDC__ 1 // RISCV64: #define __UINT16_C_SUFFIX__ // RISCV64: #define __UINT16_MAX__ 65535 diff --git a/clang/www/compatibility.html b/clang/www/compatibility.html --- a/clang/www/compatibility.html +++ b/clang/www/compatibility.html @@ -83,7 +83,7 @@

C99 inline functions

-

By default, Clang builds C code in GNU C11 mode, so it uses standard C99 +

By default, Clang builds C code in GNU C17 mode, so it uses standard C99 semantics for the inline keyword. These semantics are different from those in GNU C89 mode, which is the default mode in versions of GCC prior to 5.0. For example, consider the following code: