blob: 49ed87d9a9aea44266358adfd66919c95038963b [file] [log] [blame]
Hans Wennborg60d06bf2016-07-18 18:05:19 +00001=======================================
Hans Wennborgfbb21e02017-07-19 14:14:07 +00002Clang 6.0.0 (In-Progress) Release Notes
Hans Wennborg60d06bf2016-07-18 18:05:19 +00003=======================================
Sean Silvafe251442012-12-23 01:19:35 +00004
5.. contents::
6 :local:
7 :depth: 2
8
9Written by the `LLVM Team <http://llvm.org/>`_
10
11.. warning::
12
Hans Wennborgfbb21e02017-07-19 14:14:07 +000013 These are in-progress notes for the upcoming Clang 6 release.
Hans Wennborg189f1f32017-02-09 23:26:34 +000014 Release notes for previous releases can be found on
15 `the Download Page <http://releases.llvm.org/download.html>`_.
Sean Silvafe251442012-12-23 01:19:35 +000016
17Introduction
18============
19
20This document contains the release notes for the Clang C/C++/Objective-C
Hans Wennborgfbb21e02017-07-19 14:14:07 +000021frontend, part of the LLVM Compiler Infrastructure, release 6.0.0. Here we
Sean Silvafe251442012-12-23 01:19:35 +000022describe the status of Clang in some detail, including major
23improvements from the previous release and new feature work. For the
24general LLVM release notes, see `the LLVM
25documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM
26releases may be downloaded from the `LLVM releases web
27site <http://llvm.org/releases/>`_.
28
29For more information about Clang or LLVM, including information about
30the latest release, please check out the main please see the `Clang Web
31Site <http://clang.llvm.org>`_ or the `LLVM Web
32Site <http://llvm.org>`_.
33
34Note that if you are reading this file from a Subversion checkout or the
35main Clang web page, this document applies to the *next* release, not
36the current one. To see the release notes for a specific release, please
37see the `releases page <http://llvm.org/releases/>`_.
38
Hans Wennborgfbb21e02017-07-19 14:14:07 +000039What's New in Clang 6.0.0?
Hans Wennborg60d06bf2016-07-18 18:05:19 +000040==========================
Sean Silvafe251442012-12-23 01:19:35 +000041
42Some of the major new features and improvements to Clang are listed
43here. Generic improvements to Clang as a whole or to its underlying
44infrastructure are described first, followed by language-specific
45sections with improvements to Clang's support for those languages.
46
47Major New Features
48------------------
49
Hans Wennborg60d06bf2016-07-18 18:05:19 +000050- ...
Rafael Espindola34970692013-12-12 16:07:11 +000051
Sean Silvafe251442012-12-23 01:19:35 +000052Improvements to Clang's diagnostics
53^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
54
Alex Lorenzdbbe8222017-07-31 14:22:43 +000055- ``-Wpragma-pack`` is a new warning that warns in the following cases:
56
57 - When a translation unit is missing terminating ``#pragma pack (pop)``
Alex Lorenz51748662017-07-31 14:08:41 +000058 directives.
Alex Lorenzdbbe8222017-07-31 14:22:43 +000059
Alex Lorenz51748662017-07-31 14:08:41 +000060 - When leaving an included file that changes the current alignment value,
Alex Lorenzdbbe8222017-07-31 14:22:43 +000061 i.e. when the alignment before ``#include`` is different to the alignment
62 after ``#include``.
63
64 - ``-Wpragma-pack-suspicious-include`` (disabled by default) warns on an
65 ``#include`` when the included file contains structures or unions affected by
66 a non-default alignment that has been specified using a ``#pragma pack``
67 directive prior to the ``#include``.
Sean Silvafe251442012-12-23 01:19:35 +000068
Erich Keaneb0c78092017-07-26 18:04:45 +000069Non-comprehensive list of changes in this release
70-------------------------------------------------
71
72- Bitrig OS was merged back into OpenBSD, so Bitrig support has been
73 removed from Clang/LLVM.
74
Sean Silvafe251442012-12-23 01:19:35 +000075New Compiler Flags
76------------------
77
Sylvestre Ledruf6b48972016-11-12 10:37:17 +000078The option ....
79
Joerg Sonnenbergerc9199682017-07-01 21:36:21 +000080Deprecated Compiler Flags
81-------------------------
82
83The following options are deprecated and ignored. They will be removed in
84future versions of Clang.
85
Hans Wennborgfbb21e02017-07-19 14:14:07 +000086- ...
Joerg Sonnenbergerc9199682017-07-01 21:36:21 +000087
Tyler Nowickidb2668a2014-06-18 00:51:32 +000088New Pragmas in Clang
89-----------------------
90
Rafael Espindolaaf742502014-08-22 21:59:11 +000091Clang now supports the ...
Mark Heffernanbd26f5e2014-07-21 18:08:34 +000092
Paul Robinsonf9ede1c2016-07-18 17:19:12 +000093
94Attribute Changes in Clang
95--------------------------
96
Hans Wennborgfbb21e02017-07-19 14:14:07 +000097- ...
Paul Robinsonf9ede1c2016-07-18 17:19:12 +000098
Hans Wennborg02dc0002014-08-05 00:21:23 +000099Windows Support
100---------------
101
Rafael Espindolaaf742502014-08-22 21:59:11 +0000102Clang's support for building native Windows programs ...
Hans Wennborg02dc0002014-08-05 00:21:23 +0000103
104
Renato Golinf2fcddb2013-12-13 09:27:34 +0000105C Language Changes in Clang
106---------------------------
107
Hans Wennborg60d06bf2016-07-18 18:05:19 +0000108- ...
Pirama Arumuga Nainarc85c8532016-06-21 16:09:30 +0000109
Renato Golinf2fcddb2013-12-13 09:27:34 +0000110...
111
Sean Silvafe251442012-12-23 01:19:35 +0000112C11 Feature Support
113^^^^^^^^^^^^^^^^^^^
114
115...
116
117C++ Language Changes in Clang
118-----------------------------
119
Richard Smith8eb53c82016-05-05 18:40:37 +0000120...
121
122C++1z Feature Support
Sean Silvafe251442012-12-23 01:19:35 +0000123^^^^^^^^^^^^^^^^^^^^^
124
125...
126
127Objective-C Language Changes in Clang
128-------------------------------------
129
130...
131
Erik Schnetter489700d2013-11-11 06:36:33 +0000132OpenCL C Language Changes in Clang
133----------------------------------
134
Bill Wendling0a794a4b2013-11-20 10:13:37 +0000135...
Erik Schnetter489700d2013-11-11 06:36:33 +0000136
Alexey Bataev44b67502016-05-31 11:17:08 +0000137OpenMP Support in Clang
138----------------------------------
139
Hans Wennborg60d06bf2016-07-18 18:05:19 +0000140...
Alexey Bataev44b67502016-05-31 11:17:08 +0000141
Sean Silvafe251442012-12-23 01:19:35 +0000142Internal API Changes
143--------------------
144
Hans Wennborg159d6ad2017-01-12 21:55:16 +0000145These are major API changes that have happened since the 4.0.0 release of
Sean Silvafe251442012-12-23 01:19:35 +0000146Clang. If upgrading an external codebase that uses Clang as a library,
147this section should help get you past the largest hurdles of upgrading.
148
Vedant Kumar5fb00e42016-07-27 23:01:55 +0000149- ...
Richard Smitha0334a92015-05-14 00:22:12 +0000150
Aaron Ballmancdc43af2015-09-17 13:47:22 +0000151AST Matchers
152------------
Aaron Ballmancdc43af2015-09-17 13:47:22 +0000153
Manuel Klimek696e5052017-08-02 13:04:44 +0000154The hasDeclaration matcher now works the same for Type and QualType and only
155ever looks through one level of sugaring in a limited number of cases.
Aaron Ballmancdc43af2015-09-17 13:47:22 +0000156
Manuel Klimek696e5052017-08-02 13:04:44 +0000157There are two main patterns affected by this:
158
159- qualType(hasDeclaration(recordDecl(...))): previously, we would look through
160 sugar like TypedefType to get at the underlying recordDecl; now, we need
161 to explicitly remove the sugaring:
162 qualType(hasUnqualifiedDesugaredType(hasDeclaration(recordDecl(...))))
163
164- hasType(recordDecl(...)): hasType internally uses hasDeclaration; previously,
165 this matcher used to match for example TypedefTypes of the RecordType, but
166 after the change they don't; to fix, use:
167
168::
169 hasType(hasUnqualifiedDesugaredType(
170 recordType(hasDeclaration(recordDecl(...)))))
171
172- templateSpecializationType(hasDeclaration(classTemplateDecl(...))):
173 previously, we would directly match the underlying ClassTemplateDecl;
174 now, we can explicitly match the ClassTemplateSpecializationDecl, but that
175 requires to explicitly get the ClassTemplateDecl:
176
177::
178 templateSpecializationType(hasDeclaration(
179 classTemplateSpecializationDecl(
180 hasSpecializedTemplate(classTemplateDecl(...)))))
Sylvestre Ledru72e3fa72017-03-14 09:43:55 +0000181
182clang-format
183------------
184
Hans Wennborgfbb21e02017-07-19 14:14:07 +0000185...
Sylvestre Ledru72e3fa72017-03-14 09:43:55 +0000186
Ted Kremenek3a2291b2013-04-24 07:33:52 +0000187libclang
188--------
189
Bill Wendling61f44cc2013-06-04 06:17:46 +0000190...
Ted Kremenek3a2291b2013-04-24 07:33:52 +0000191
Sylvestre Ledruea49d3a2016-08-06 20:23:54 +0000192
Anna Zaksb6219a92013-04-25 23:14:38 +0000193Static Analyzer
Ted Kremenek004e8232013-04-26 00:01:34 +0000194---------------
Anna Zaksb6219a92013-04-25 23:14:38 +0000195
Bill Wendling0a794a4b2013-11-20 10:13:37 +0000196...
Ted Kremenek004e8232013-04-26 00:01:34 +0000197
Vedant Kumar840c2c72017-06-13 02:52:31 +0000198Undefined Behavior Sanitizer (UBSan)
199------------------------------------
200
Vedant Kumarbbc953f2017-07-25 19:34:23 +0000201The C++ dynamic type check now requires run-time null checking (i.e,
202`-fsanitize=vptr` cannot be used without `-fsanitize=null`). This change does
203not impact users who rely on UBSan check groups (e.g `-fsanitize=undefined`).
Vedant Kumar840c2c72017-06-13 02:52:31 +0000204
Ted Kremenek004e8232013-04-26 00:01:34 +0000205Core Analysis Improvements
206==========================
207
Bill Wendling61f44cc2013-06-04 06:17:46 +0000208- ...
Ted Kremenek004e8232013-04-26 00:01:34 +0000209
210New Issues Found
211================
212
Bill Wendling61f44cc2013-06-04 06:17:46 +0000213- ...
Anna Zaksb6219a92013-04-25 23:14:38 +0000214
Sean Silvafe251442012-12-23 01:19:35 +0000215Python Binding Changes
216----------------------
217
218The following methods have been added:
219
220- ...
221
222Significant Known Problems
223==========================
224
225Additional Information
226======================
227
228A wide variety of additional information is available on the `Clang web
229page <http://clang.llvm.org/>`_. The web page contains versions of the
230API documentation which are up-to-date with the Subversion version of
231the source code. You can access versions of these documents specific to
232this release by going into the "``clang/docs/``" directory in the Clang
233tree.
234
235If you have any questions or comments about Clang, please feel free to
236contact us via the `mailing
Tanya Lattner4a08e932015-08-05 03:55:23 +0000237list <http://lists.llvm.org/mailman/listinfo/cfe-dev>`_.