1===================================== 2Clang 3.5 (In-Progress) Release Notes 3===================================== 4 5.. contents:: 6 :local: 7 :depth: 2 8 9Written by the `LLVM Team <http://llvm.org/>`_ 10 11.. warning:: 12 13 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>`_. 16 17Introduction 18============ 19 20This document contains the release notes for the Clang C/C++/Objective-C 21frontend, part of the LLVM Compiler Infrastructure, release 3.5. Here we 22describe 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 39What's New in Clang 3.5? 40======================== 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 50- Clang uses the new MingW ABI 51 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. 53 54- 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. 58 59 60Improvements 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 65about them. The improvements since the 3.4 release include: 66 67- ... 68 69New Compiler Flags 70------------------ 71 72The integrated assembler is now turned on by default on ARM (and Thumb), 73so the use of the option `-fintegrated-as` is now redundant on those 74architectures. This is an important move to both *eat our own dog food* 75and to ease cross-compilation tremendously. 76 77We are aware of the problems that this may cause for code bases that 78rely on specific GNU syntax or extensions, and we're working towards 79getting them all fixed. Please, report bugs or feature requests if 80you find anything. In the meantime, use `-fno-integrated-as` to revert 81back the call to GNU assembler. 82 83In order to provide better diagnostics, the integrated assembler validates 84inline assembly when the integrated assembler is enabled. Because this is 85considered a feature of the compiler, it is controlled via the `fintegrated-as` 86and `fno-integrated-as` flags which enable and disable the integrated assembler 87respectively. `-integrated-as` and `-no-integrated-as` are now considered 88legacy flags (but are available as an alias to prevent breaking existing users), 89and users are encouraged to switch to the equivalent new feature flag. 90 91Deprecated flags `-faddress-sanitizer`, `-fthread-sanitizer`, 92`-fcatch-undefined-behavior` and `-fbounds-checking` were removed in favor of 93`-fsanitize=` family of flags. 94 95It is now possible to get optimization reports from the major transformation 96passes via three new flags: `-Rpass`, `-Rpass-missed` and `-Rpass-analysis`. 97These flags take a POSIX regular expression which indicates the name 98of the pass (or passes) that should emit optimization remarks. 99 100New Pragmas in Clang 101----------------------- 102 103Loop optimization hints can be specified using the new `#pragma clang loop` 104directive just prior to the desired loop. The directive allows vectorization, 105interleaving, and unrolling to be enabled or disabled. Vector width as well 106as interleave and unrolling count can be manually specified. See language 107extensions for details. 108 109C Language Changes in Clang 110--------------------------- 111 112... 113 114C11 Feature Support 115^^^^^^^^^^^^^^^^^^^ 116 117... 118 119C++ Language Changes in Clang 120----------------------------- 121 122- ... 123 124C++11 Feature Support 125^^^^^^^^^^^^^^^^^^^^^ 126 127... 128 129Objective-C Language Changes in Clang 130------------------------------------- 131 132... 133 134OpenCL C Language Changes in Clang 135---------------------------------- 136 137... 138 139Internal API Changes 140-------------------- 141 142These are major API changes that have happened since the 3.4 release of 143Clang. If upgrading an external codebase that uses Clang as a library, 144this section should help get you past the largest hurdles of upgrading. 145 146... 147 148libclang 149-------- 150 151... 152 153Static Analyzer 154--------------- 155 156The `-analyzer-config` options are now passed from scan-build through to 157ccc-analyzer and then to Clang. 158 159With the option `-analyzer-config stable-report-filename=true`, 160instead of `report-XXXXXX.html`, scan-build/clang analyzer generate 161`report-<filename>-<function, method name>-<function position>-<id>.html`. 162(id = i++ for several issues found in the same function/method). 163 164List the function/method name in the index page of scan-build. 165 166... 167 168Core Analysis Improvements 169========================== 170 171- ... 172 173New Issues Found 174================ 175 176- ... 177 178Python Binding Changes 179---------------------- 180 181The following methods have been added: 182 183- ... 184 185Significant Known Problems 186========================== 187 188Additional Information 189====================== 190 191A wide variety of additional information is available on the `Clang web 192page <http://clang.llvm.org/>`_. The web page contains versions of the 193API documentation which are up-to-date with the Subversion version of 194the source code. You can access versions of these documents specific to 195this release by going into the "``clang/docs/``" directory in the Clang 196tree. 197 198If you have any questions or comments about Clang, please feel free to 199contact us via the `mailing 200list <http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev>`_. 201