blob: f17a1a4b161517ac584916fb97710ba33b3f7736 [file] [log] [blame]
Sean Silvab0455142013-01-02 22:05:33 +00001=====================================
Bill Wendling0a794a4b2013-11-20 10:13:37 +00002Clang 3.5 (In-Progress) Release Notes
Sean Silvab0455142013-01-02 22:05:33 +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
Bill Wendling0a794a4b2013-11-20 10:13:37 +000013 These are in-progress notes for the upcoming Clang 3.5 release. You may
14 prefer the `Clang 3.4 Release Notes
15 <http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.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
Bill Wendling0a794a4b2013-11-20 10:13:37 +000021frontend, part of the LLVM Compiler Infrastructure, release 3.5. 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
Bill Wendling0a794a4b2013-11-20 10:13:37 +000039What's New in Clang 3.5?
Sean Silvafe251442012-12-23 01:19:35 +000040========================
41
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
Rafael Espindola34970692013-12-12 16:07:11 +000050- Clang uses the new MingW ABI
Aaron Ballman5afdd1d2014-02-23 16:27:21 +000051 GCC 4.7 changed the mingw ABI. Clang 3.4 and older use the GCC 4.6
52 ABI. Clang 3.5 and newer use the GCC 4.7 abi.
Rafael Espindola34970692013-12-12 16:07:11 +000053
Sylvestre Ledru06aebc42014-06-14 09:28:27 +000054- The __has_attribute feature test is now target-aware. Older versions of Clang
55 would return true when the attribute spelling was known, regardless of whether
56 the attribute was available to the specific target. Clang now returns true
57 only when the attribute pertains to the current compilation target.
Aaron Ballmana4bb4b92014-01-09 23:11:13 +000058
Rafael Espindola34970692013-12-12 16:07:11 +000059
Sean Silvafe251442012-12-23 01:19:35 +000060Improvements to Clang's diagnostics
61^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
62
63Clang's diagnostics are constantly being improved to catch more issues,
64explain them more clearly, and provide more accurate source information
Bill Wendling0a794a4b2013-11-20 10:13:37 +000065about them. The improvements since the 3.4 release include:
Sean Silvafe251442012-12-23 01:19:35 +000066
Sylvestre Ledru5e43f742014-07-14 18:30:23 +000067- GCC compatibility: Clang displays a warning on unsupported gcc
68 optimization flags instead of an error.
69
Sean Silvafe251442012-12-23 01:19:35 +000070- ...
71
Sean Silvafe251442012-12-23 01:19:35 +000072New Compiler Flags
73------------------
74
Renato Golin1588cda2013-12-11 09:35:10 +000075The integrated assembler is now turned on by default on ARM (and Thumb),
Saleem Abdulrasool3aa840e2014-02-23 02:08:45 +000076so the use of the option `-fintegrated-as` is now redundant on those
Renato Golin1588cda2013-12-11 09:35:10 +000077architectures. This is an important move to both *eat our own dog food*
78and to ease cross-compilation tremendously.
79
80We are aware of the problems that this may cause for code bases that
81rely on specific GNU syntax or extensions, and we're working towards
82getting them all fixed. Please, report bugs or feature requests if
Saleem Abdulrasool3aa840e2014-02-23 02:08:45 +000083you find anything. In the meantime, use `-fno-integrated-as` to revert
Renato Golin1588cda2013-12-11 09:35:10 +000084back the call to GNU assembler.
Michael Gottesman930ecdb2013-06-20 23:28:10 +000085
Saleem Abdulrasool3aa840e2014-02-23 02:08:45 +000086In order to provide better diagnostics, the integrated assembler validates
87inline assembly when the integrated assembler is enabled. Because this is
88considered a feature of the compiler, it is controlled via the `fintegrated-as`
89and `fno-integrated-as` flags which enable and disable the integrated assembler
90respectively. `-integrated-as` and `-no-integrated-as` are now considered
91legacy flags (but are available as an alias to prevent breaking existing users),
92and users are encouraged to switch to the equivalent new feature flag.
93
Alexey Samsonov997a9232014-03-21 07:25:01 +000094Deprecated flags `-faddress-sanitizer`, `-fthread-sanitizer`,
95`-fcatch-undefined-behavior` and `-fbounds-checking` were removed in favor of
96`-fsanitize=` family of flags.
97
Diego Novillo263ce212014-05-29 20:13:27 +000098It is now possible to get optimization reports from the major transformation
99passes via three new flags: `-Rpass`, `-Rpass-missed` and `-Rpass-analysis`.
100These flags take a POSIX regular expression which indicates the name
101of the pass (or passes) that should emit optimization remarks.
102
Sylvestre Ledru0e767b12014-07-14 18:34:37 +0000103The option `-u` is forwarded to the linker on gnutools toolchains.
104
Tyler Nowickidb2668a2014-06-18 00:51:32 +0000105New Pragmas in Clang
106-----------------------
107
108Loop optimization hints can be specified using the new `#pragma clang loop`
Eli Bendersky778268d2014-06-19 18:12:44 +0000109directive just prior to the desired loop. The directive allows vectorization,
110interleaving, and unrolling to be enabled or disabled. Vector width as well
111as interleave and unrolling count can be manually specified. See language
112extensions for details.
Tyler Nowickidb2668a2014-06-18 00:51:32 +0000113
Mark Heffernanbd26f5e2014-07-21 18:08:34 +0000114Clang now supports the `#pragma unroll` directive to specify loop unrolling
115optimization hints. Placed just prior to the desired loop, `#pragma unroll`
116directs the loop unroller to attempt to fully unroll the loop. The pragma may
117also be specified with a positive integer parameter indicating the desired
118unroll count: `#pragma unroll _value_`. The unroll count parameter can be
119optionally enclosed in parentheses.
120
Renato Golinf2fcddb2013-12-13 09:27:34 +0000121C Language Changes in Clang
122---------------------------
123
124...
125
Sean Silvafe251442012-12-23 01:19:35 +0000126C11 Feature Support
127^^^^^^^^^^^^^^^^^^^
128
129...
130
131C++ Language Changes in Clang
132-----------------------------
133
Bill Wendling61f44cc2013-06-04 06:17:46 +0000134- ...
Rafael Espindola9ca6e812013-04-09 12:51:24 +0000135
Sean Silvafe251442012-12-23 01:19:35 +0000136C++11 Feature Support
137^^^^^^^^^^^^^^^^^^^^^
138
139...
140
141Objective-C Language Changes in Clang
142-------------------------------------
143
144...
145
Erik Schnetter489700d2013-11-11 06:36:33 +0000146OpenCL C Language Changes in Clang
147----------------------------------
148
Bill Wendling0a794a4b2013-11-20 10:13:37 +0000149...
Erik Schnetter489700d2013-11-11 06:36:33 +0000150
Sean Silvafe251442012-12-23 01:19:35 +0000151Internal API Changes
152--------------------
153
Bill Wendling0a794a4b2013-11-20 10:13:37 +0000154These are major API changes that have happened since the 3.4 release of
Sean Silvafe251442012-12-23 01:19:35 +0000155Clang. If upgrading an external codebase that uses Clang as a library,
156this section should help get you past the largest hurdles of upgrading.
157
Sean Silvafe251442012-12-23 01:19:35 +0000158...
159
Ted Kremenek3a2291b2013-04-24 07:33:52 +0000160libclang
161--------
162
Bill Wendling61f44cc2013-06-04 06:17:46 +0000163...
Ted Kremenek3a2291b2013-04-24 07:33:52 +0000164
Anna Zaksb6219a92013-04-25 23:14:38 +0000165Static Analyzer
Ted Kremenek004e8232013-04-26 00:01:34 +0000166---------------
Anna Zaksb6219a92013-04-25 23:14:38 +0000167
Sylvestre Ledru06aebc42014-06-14 09:28:27 +0000168The `-analyzer-config` options are now passed from scan-build through to
169ccc-analyzer and then to Clang.
170
171With the option `-analyzer-config stable-report-filename=true`,
172instead of `report-XXXXXX.html`, scan-build/clang analyzer generate
173`report-<filename>-<function, method name>-<function position>-<id>.html`.
174(id = i++ for several issues found in the same function/method).
175
176List the function/method name in the index page of scan-build.
177
Bill Wendling0a794a4b2013-11-20 10:13:37 +0000178...
Ted Kremenek004e8232013-04-26 00:01:34 +0000179
180Core Analysis Improvements
181==========================
182
Bill Wendling61f44cc2013-06-04 06:17:46 +0000183- ...
Ted Kremenek004e8232013-04-26 00:01:34 +0000184
185New Issues Found
186================
187
Bill Wendling61f44cc2013-06-04 06:17:46 +0000188- ...
Anna Zaksb6219a92013-04-25 23:14:38 +0000189
Sean Silvafe251442012-12-23 01:19:35 +0000190Python Binding Changes
191----------------------
192
193The following methods have been added:
194
195- ...
196
197Significant Known Problems
198==========================
199
200Additional Information
201======================
202
203A wide variety of additional information is available on the `Clang web
204page <http://clang.llvm.org/>`_. The web page contains versions of the
205API documentation which are up-to-date with the Subversion version of
206the source code. You can access versions of these documents specific to
207this release by going into the "``clang/docs/``" directory in the Clang
208tree.
209
210If you have any questions or comments about Clang, please feel free to
211contact us via the `mailing
212list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_.