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