X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=gcc%2Fdoc%2Fstandards.texi;h=f39d8b378f1cdecc33ec11c6d1096e679e353a4b;hb=8d9254fc8aa32619f640efb01cfe87cc6cdc9ce1;hp=b7c5e4e355808bac32d5a83257ec9f6a863ce461;hpb=54aecc5ad92c9f73b011f74d82068b9c6f4194d6;p=thirdparty%2Fgcc.git diff --git a/gcc/doc/standards.texi b/gcc/doc/standards.texi index b7c5e4e35580..f39d8b378f1c 100644 --- a/gcc/doc/standards.texi +++ b/gcc/doc/standards.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 2000-2016 Free Software Foundation, Inc. +@c Copyright (C) 2000-2020 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. @@ -36,6 +36,10 @@ with some exceptions, and possibly with some extensions. @cindex C11 @cindex ISO C1X @cindex C1X +@cindex ISO C17 +@cindex C17 +@cindex ISO C2X +@cindex C2X @cindex Technical Corrigenda @cindex TC1 @cindex Technical Corrigendum 1 @@ -100,7 +104,16 @@ in 2011 as ISO/IEC 9899:2011. (While in development, drafts of this standard version were referred to as @dfn{C1X}.) GCC has substantially complete support for this standard, enabled with @option{-std=c11} or -@option{-std=iso9899:2011}. +@option{-std=iso9899:2011}. A version with corrections integrated was +prepared in 2017 and published in 2018 as ISO/IEC 9899:2018; it is +known as @dfn{C17} and is supported with @option{-std=c17} or +@option{-std=iso9899:2017}; the corrections are also applied with +@option{-std=c11}, and the only difference between the options is the +value of @code{__STDC_VERSION__}. + +A further version of the C standard, known as @dfn{C2X}, is under +development; experimental and incomplete support for this is enabled +with @option{-std=c2x}. By default, GCC provides some extensions to the C language that, on rare occasions conflict with the C standard. @xref{C @@ -196,24 +209,22 @@ A revised ISO C++ standard was published in 2011 as ISO/IEC 14882:2011, and is referred to as C++11; before its publication it was commonly referred to as C++0x. C++11 contains several changes to the C++ language, all of which have been implemented in GCC@. For details -see @uref{https://gcc.gnu.org/projects/@/cxx0x.html}. +see @uref{https://gcc.gnu.org/projects/@/cxx-status.html#cxx11}. To select this standard in GCC, use the option @option{-std=c++11}. Another revised ISO C++ standard was published in 2014 as ISO/IEC 14882:2014, and is referred to as C++14; before its publication it was sometimes referred to as C++1y. C++14 contains several further changes to the C++ language, all of which have been implemented in GCC@. -For details see @uref{https://gcc.gnu.org/projects/@/cxx1y.html}. +For details see @uref{https://gcc.gnu.org/projects/@/cxx-status.html#cxx14}. To select this standard in GCC, use the option @option{-std=c++14}. -GCC also supports the C++ Concepts Technical Specification, -ISO/IEC TS 19217:2015, which allows constraints to be defined for templates, -allowing template arguments to be checked and for templates to be -overloaded or specialized based on the constraints. Support for C++ Concepts -is included in an experimental C++1z mode that corresponds to the next -revision of the ISO C++ standard, expected to be published in 2017. To enable -C++1z support in GCC, use the option @option{-std=c++17} or -@option{-std=c++1z}. +The C++ language was further revised in 2017 and ISO/IEC 14882:2017 was +published. This is referred to as C++17, and before publication was +often referred to as C++1z. GCC supports all the changes in the new +specification. For further details see +@uref{https://gcc.gnu.org/projects/@/cxx-status.html#cxx1z}. Use the option +@option{-std=c++17} to select this variant of C++. More information about the C++ standards is available on the ISO C++ committee's web site at @uref{http://www.open-std.org/@/jtc1/@/sc22/@/wg21/}. @@ -232,7 +243,7 @@ select an extended version of the C++ language explicitly with @option{-std=gnu++98} (for C++98 with GNU extensions), or @option{-std=gnu++11} (for C++11 with GNU extensions), or @option{-std=gnu++14} (for C++14 with GNU extensions), or -@option{-std=gnu++1z} (for C++1z with GNU extensions). +@option{-std=gnu++17} (for C++17 with GNU extensions). The default, if no C++ language dialect options are given, is @option{-std=gnu++14}. @@ -290,7 +301,7 @@ GCC has currently no support for non-fragile instance variables. The authoritative manual on Objective-C 2.0 is available from Apple: @itemize @item -@uref{https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html} +@uref{https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html} @end itemize For more information concerning the history of Objective-C that is @@ -299,7 +310,21 @@ available online, see @uref{http://gcc.gnu.org/readings.html} @section Go Language As of the GCC 4.7.1 release, GCC supports the Go 1 language standard, -described at @uref{http://golang.org/doc/go1.html}. +described at @uref{https://golang.org/doc/go1}. + +@section HSA Intermediate Language (HSAIL) + +GCC can compile the binary representation (BRIG) of the HSAIL text format as +described in HSA Programmer's Reference Manual version 1.0.1. This +capability is typically utilized to implement the HSA runtime API's HSAIL +finalization extension for a gcc supported processor. HSA standards are +freely available at @uref{http://www.hsafoundation.com/standards/}. + +@section D language + +GCC supports the D 2.0 programming language. The D language itself is +currently defined by its reference implementation and supporting language +specification, described at @uref{https://dlang.org/spec/spec.html}. @section References for Other Languages