-=====================================
-Clang 3.7 (In-Progress) Release Notes
-=====================================
+=======================
+Clang 3.7 Release Notes
+=======================
.. contents::
:local:
Site <http://clang.llvm.org>`_ or the `LLVM Web
Site <http://llvm.org>`_.
-Note that if you are reading this file from a Subversion checkout or the
-main Clang web page, this document applies to the *next* release, not
-the current one. To see the release notes for a specific release, please
-see the `releases page <http://llvm.org/releases/>`_.
-
What's New in Clang 3.7?
========================
Improvements to Clang's diagnostics
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+-----------------------------------
Clang's diagnostics are constantly being improved to catch more issues,
explain them more clearly, and provide more accurate source information
isn't yet widely deployed, so the user must supply an extra flag to get the
extra functionality.
-The option ....
-
-
-New Pragmas in Clang
------------------------
-
-Clang now supports the ...
-
-Windows Support
----------------
-
-Clang's support for building native Windows programs ...
-
-
-C Language Changes in Clang
----------------------------
-
-...
-
-C11 Feature Support
-^^^^^^^^^^^^^^^^^^^
-
-...
-
-C++ Language Changes in Clang
------------------------------
-
-- ...
-
-C++11 Feature Support
-^^^^^^^^^^^^^^^^^^^^^
-
-...
Objective-C Language Changes in Clang
-------------------------------------
- ``objc_boxable`` attribute was added. Structs and unions marked with this attribute can be
used with boxed expressions (``@(...)``) to create ``NSValue``.
-...
-
-OpenCL C Language Changes in Clang
-----------------------------------
-
-...
-
Profile Guided Optimization
---------------------------
OpenMP Support
--------------
OpenMP 3.1 is fully supported, but disabled by default. To enable it, please use
-``-fopenmp=libomp`` command line option. Your feedback (positive or negative) on
+the ``-fopenmp=libomp`` command line option. Your feedback (positive or negative) on
using OpenMP-enabled clang would be much appreciated; please share it either on
`cfe-dev <http://lists.llvm.org/mailman/listinfo/cfe-dev>`_ or `openmp-dev
<http://lists.llvm.org/mailman/listinfo/openmp-dev>`_ mailing lists.
-In addition to OpenMP 3.1, several important elements of 4.0 version of the
+In addition to OpenMP 3.1, several important elements of the 4.0 version of the
standard are supported as well:
+
- ``omp simd``, ``omp for simd`` and ``omp parallel for simd`` pragmas
- atomic constructs
- ``proc_bind`` clause of ``omp parallel`` pragma
- ``depend`` clause of ``omp task`` pragma (except for array sections)
- ``omp cancel`` and ``omp cancellation point`` pragmas
- ``omp taskgroup`` pragma
-...
Internal API Changes
--------------------
Clang. If upgrading an external codebase that uses Clang as a library,
this section should help get you past the largest hurdles of upgrading.
-- Some of the `PPCallbacks` interface now deals in `MacroDefinition`
- objects instead of `MacroDirective` objects. This allows preserving
+- Some of the ``PPCallbacks`` interface now deals in ``MacroDefinition``
+ objects instead of ``MacroDirective`` objects. This allows preserving
full information on macros imported from modules.
-- `clang-c/Index.h` no longer `#include`\s `clang-c/Documentation.h`.
- You now need to explicitly `#include "clang-c/Documentation.h"` if
+- ``clang-c/Index.h`` no longer ``#include``\s ``clang-c/Documentation.h``.
+ You now need to explicitly ``#include "clang-c/Documentation.h"`` if
you use the libclang documentation API.
-libclang
---------
-
-...
-
Static Analyzer
---------------
----------
Added new checks:
- * google-global-names-in-headers: flag global namespace pollution in header
- files.
-
- * misc-assert-side-effect: detects `assert()` conditions with side effects
- which can cause different behavior in debug / release builds.
-
- * misc-assign-operator-signature: finds declarations of assign operators with
- the wrong return and/or argument types.
-
- * misc-inaccurate-erase: warns when some elements of a container are not
- removed due to using the `erase()` algorithm incorrectly.
-
- * misc-inefficient-algorithm: warns on inefficient use of STL algorithms on
- associative containers.
-
- * misc-macro-parentheses: finds macros that can have unexpected behavior due
- to missing parentheses.
-
- * misc-macro-repeated-side-effects: checks for repeated argument with side
- effects in macros.
-
- * misc-noexcept-move-constructor: flags user-defined move constructors and
- assignment operators not marked with `noexcept` or marked with
- `noexcept(expr)` where `expr` evaluates to `false` (but is not a `false`
- literal itself).
-
- * misc-static-assert: replaces `assert()` with `static_assert()` if the
- condition is evaluatable at compile time.
+* google-global-names-in-headers: flag global namespace pollution in header
+ files.
- * readability-container-size-empty: checks whether a call to the `size()`
- method can be replaced with a call to `empty()`.
+* misc-assert-side-effect: detects ``assert()`` conditions with side effects
+ which can cause different behavior in debug / release builds.
- * readability-else-after-return: flags conditional statements having the
- `else` branch, when the `true` branch has a `return` as the last statement.
+* misc-assign-operator-signature: finds declarations of assign operators with
+ the wrong return and/or argument types.
- * readability-redundant-string-cstr: finds unnecessary calls to
- `std::string::c_str()`.
+* misc-inaccurate-erase: warns when some elements of a container are not
+ removed due to using the ``erase()`` algorithm incorrectly.
- * readability-shrink-to-fit: replaces copy and swap tricks on shrinkable
- containers with the `shrink_to_fit()` method call.
+* misc-inefficient-algorithm: warns on inefficient use of STL algorithms on
+ associative containers.
- * readability-simplify-boolean-expr: looks for boolean expressions involving
- boolean constants and simplifies them to use the appropriate boolean
- expression directly (`if (x == true) ... -> if (x)`, etc.)
+* misc-macro-parentheses: finds macros that can have unexpected behavior due
+ to missing parentheses.
+* misc-macro-repeated-side-effects: checks for repeated argument with side
+ effects in macros.
-Core Analysis Improvements
-==========================
+* misc-noexcept-move-constructor: flags user-defined move constructors and
+ assignment operators not marked with ``noexcept`` or marked with
+ ``noexcept(expr)`` where ``expr`` evaluates to ``false`` (but is not a
+ ``false`` literal itself).
-- ...
+* misc-static-assert: replaces ``assert()`` with ``static_assert()`` if the
+ condition is evaluable at compile time.
-New Issues Found
-================
+* readability-container-size-empty: checks whether a call to the ``size()``
+ method can be replaced with a call to ``empty()``.
-- ...
+* readability-else-after-return: flags conditional statements having the
+ ``else`` branch, when the ``true`` branch has a ``return`` as the last statement.
-Python Binding Changes
-----------------------
+* readability-redundant-string-cstr: finds unnecessary calls to
+ ``std::string::c_str()``.
-The following methods have been added:
+* readability-shrink-to-fit: replaces copy and swap tricks on shrinkable
+ containers with the ``shrink_to_fit()`` method call.
-- ...
+* readability-simplify-boolean-expr: looks for boolean expressions involving
+ boolean constants and simplifies them to use the appropriate boolean
+ expression directly (``if (x == true) ... -> if (x)``, etc.)
-Significant Known Problems
-==========================
Additional Information
======================