Vendor import of clang RELEASE_360/final tag r230434 (effectively, 3.6.0 release):
https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_360/final@230434
This commit is contained in:
parent
bda3d40718
commit
624e91b063
@ -52,63 +52,112 @@ Clang's diagnostics are constantly being improved to catch more issues,
|
||||
explain them more clearly, and provide more accurate source information
|
||||
about them. The improvements since the 3.5 release include:
|
||||
|
||||
- ...
|
||||
- Smarter typo correction. Clang now tries a bit harder to give a usable
|
||||
suggestion in more cases, and can now successfully recover in more
|
||||
situations where the suggestion changes how an expression is parsed.
|
||||
|
||||
|
||||
New Compiler Flags
|
||||
------------------
|
||||
|
||||
The option ....
|
||||
The ``-fpic`` option now uses small pic on PowerPC.
|
||||
|
||||
|
||||
The __EXCEPTIONS macro
|
||||
----------------------
|
||||
``__EXCEPTIONS`` is now defined when landing pads are emitted, not when c++ exceptions are enabled. The two can be different in Objective-C files: If C++ exceptions are disabled but Objective-C exceptions are enabled, landing pads will be emitted. Clang 3.6 is switching the behavior of ``__EXCEPTIONS``. Clang 3.5 confusingly changed the behavior of ``has_feature(cxx_exceptions)``, which used to be set if landing pads were emitted, but is now set if C++ exceptions are enabled. So there are 3 cases:
|
||||
``__EXCEPTIONS`` is now defined when landing pads are emitted, not when
|
||||
C++ exceptions are enabled. The two can be different in Objective-C files:
|
||||
If C++ exceptions are disabled but Objective-C exceptions are enabled,
|
||||
landing pads will be emitted. Clang 3.6 is switching the behavior of
|
||||
``__EXCEPTIONS``. Clang 3.5 confusingly changed the behavior of
|
||||
``has_feature(cxx_exceptions)``, which used to be set if landing pads were
|
||||
emitted, but is now set if C++ exceptions are enabled. So there are 3 cases:
|
||||
|
||||
Clang before 3.5:
|
||||
``__EXCEPTIONS`` is set if C++ exceptions are enabled, ``cxx_exceptions`` enabled if C++ or ObjC exceptions are enabled
|
||||
``__EXCEPTIONS`` is set if C++ exceptions are enabled, ``cxx_exceptions``
|
||||
enabled if C++ or ObjC exceptions are enabled
|
||||
|
||||
Clang 3.5:
|
||||
``__EXCEPTIONS`` is set if C++ exceptions are enabled, ``cxx_exceptions`` enabled if C++ exceptions are enabled
|
||||
``__EXCEPTIONS`` is set if C++ exceptions are enabled, ``cxx_exceptions``
|
||||
enabled if C++ exceptions are enabled
|
||||
|
||||
Clang 3.6:
|
||||
``__EXCEPTIONS`` is set if C++ or ObjC exceptions are enabled, ``cxx_exceptions`` enabled if C++ exceptions are enabled
|
||||
``__EXCEPTIONS`` is set if C++ or ObjC exceptions are enabled,
|
||||
``cxx_exceptions`` enabled if C++ exceptions are enabled
|
||||
|
||||
To reliably test if C++ exceptions are enabled, use ``__EXCEPTIONS && __has_feature(cxx_exceptions)``, else things won't work in all versions of clang in Objective-C++ files.
|
||||
To reliably test if C++ exceptions are enabled, use
|
||||
``__EXCEPTIONS && __has_feature(cxx_exceptions)``, else things won't work in
|
||||
all versions of Clang in Objective-C++ files.
|
||||
|
||||
|
||||
New Pragmas in Clang
|
||||
-----------------------
|
||||
|
||||
Clang now supports the ...
|
||||
Clang now supports the `#pragma unroll` and `#pragma nounroll` directives to
|
||||
specify loop unrolling optimization hints. Placed just prior to the desired
|
||||
loop, `#pragma unroll` directs the loop unroller to attempt to fully unroll the
|
||||
loop. The pragma may also be specified with a positive integer parameter
|
||||
indicating the desired unroll count: `#pragma unroll _value_`. The unroll count
|
||||
parameter can be optionally enclosed in parentheses. The directive `#pragma
|
||||
nounroll` indicates that the loop should not be unrolled. These unrolling hints
|
||||
may also be expressed using the `#pragma clang loop` directive. See the Clang
|
||||
`language extensions
|
||||
<http://clang.llvm.org/docs/LanguageExtensions.html#extensions-for-loop-hint-optimizations>`_
|
||||
for details.
|
||||
|
||||
Windows Support
|
||||
---------------
|
||||
|
||||
- Many, many bug fixes
|
||||
- Many, many bug fixes.
|
||||
|
||||
- Basic support for DWARF debug information in COFF files
|
||||
- Clang can now self-host using the ``msvc`` environment on x86 and x64
|
||||
Windows. This means that Microsoft C++ ABI is more or less feature-complete,
|
||||
minus exception support.
|
||||
|
||||
- Support for Visual C++ '__super' keyword
|
||||
- Added more MSVC compatibility hacks, such as allowing more lookup into
|
||||
dependent bases of class templates when there is a known template pattern.
|
||||
As a result, applications using Active Template Library (ATL) or Windows
|
||||
Runtime Library (WRL) headers should compile correctly.
|
||||
|
||||
- Added support for the Visual C++ ``__super`` keyword.
|
||||
|
||||
- Added support for MSVC's ``__vectorcall`` calling convention, which is used
|
||||
in the upcoming Visual Studio 2015 STL.
|
||||
|
||||
- Added basic support for DWARF debug information in COFF files.
|
||||
|
||||
|
||||
C Language Changes in Clang
|
||||
---------------------------
|
||||
|
||||
...
|
||||
- The default language mode for C compilations with Clang has been changed from
|
||||
C99 with GNU extensions to C11 with GNU extensions. C11 is largely
|
||||
backwards-compatible with C99, but if you want to restore the former behavior
|
||||
you can do so with the `-std=gnu99` flag.
|
||||
|
||||
C11 Feature Support
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
...
|
||||
- Clang now provides an implementation of the standard C11 header `<stdatomic.h>`.
|
||||
|
||||
C++ Language Changes in Clang
|
||||
-----------------------------
|
||||
|
||||
- An `upcoming change to C++ <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3922.html>_`
|
||||
changes the semantics of certain deductions of `auto` from a braced initializer
|
||||
list. Following the intent of the C++ committee, this change will be applied to
|
||||
our C++11 and C++14 modes as well as our experimental C++17 mode. Clang 3.6
|
||||
does not yet implement this change, but to provide a transition period, it
|
||||
warns on constructs whose meaning will change. The fix in all cases is to
|
||||
add an `=` prior to the left brace.
|
||||
|
||||
- Clang now supports putting identical constructors and destructors in
|
||||
the C5/D5 comdat, reducing code duplication.
|
||||
|
||||
- Clang will put individual ``.init_array/.ctors`` sections in
|
||||
comdats, reducing code duplication and speeding up startup.
|
||||
|
||||
|
||||
C++17 Feature Support
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -139,20 +188,10 @@ For more details on C++ feature support, see
|
||||
`the C++ status page <http://clang.llvm.org/cxx_status.html>`_.
|
||||
|
||||
|
||||
Objective-C Language Changes in Clang
|
||||
-------------------------------------
|
||||
|
||||
...
|
||||
|
||||
OpenCL C Language Changes in Clang
|
||||
----------------------------------
|
||||
|
||||
...
|
||||
|
||||
OpenMP Language Changes in Clang
|
||||
--------------------------------
|
||||
|
||||
Clang 3.6 contains codegen for many individual OpenMP pragmas, but combinations are not completed as yet.
|
||||
Clang 3.6 contains codegen for many individual OpenMP pragmas, but combinations are not completed yet.
|
||||
We plan to continue codegen code drop aiming for completion in 3.7. Please see this link for up-to-date
|
||||
`status <https://github.com/clang-omp/clang/wiki/Status-of-supported-OpenMP-constructs>_`.
|
||||
LLVM's OpenMP runtime library, originally developed by Intel, has been modified to work on ARM, PowerPC,
|
||||
@ -162,44 +201,6 @@ Support for ppc64le architecture is now available and automatically detected whe
|
||||
Using makefile the new "ppc64le" arch type is available.
|
||||
Contributors to this work include AMD, Argonne National Lab., IBM, Intel, Texas Instruments, University of Houston and many others.
|
||||
|
||||
Internal API Changes
|
||||
--------------------
|
||||
|
||||
These are major API changes that have happened since the 3.5 release of
|
||||
Clang. If upgrading an external codebase that uses Clang as a library,
|
||||
this section should help get you past the largest hurdles of upgrading.
|
||||
|
||||
...
|
||||
|
||||
libclang
|
||||
--------
|
||||
|
||||
...
|
||||
|
||||
Static Analyzer
|
||||
---------------
|
||||
|
||||
...
|
||||
|
||||
Core Analysis Improvements
|
||||
==========================
|
||||
|
||||
- ...
|
||||
|
||||
New Issues Found
|
||||
================
|
||||
|
||||
- ...
|
||||
|
||||
Python Binding Changes
|
||||
----------------------
|
||||
|
||||
The following methods have been added:
|
||||
|
||||
- ...
|
||||
|
||||
Significant Known Problems
|
||||
==========================
|
||||
|
||||
Additional Information
|
||||
======================
|
||||
|
@ -36,7 +36,7 @@ std::string getClangRepositoryPath() {
|
||||
|
||||
// If the SVN_REPOSITORY is empty, try to use the SVN keyword. This helps us
|
||||
// pick up a tag in an SVN export, for example.
|
||||
StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_360/rc1/lib/Basic/Version.cpp $");
|
||||
StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_360/final/lib/Basic/Version.cpp $");
|
||||
if (URL.empty()) {
|
||||
URL = SVNRepository.slice(SVNRepository.find(':'),
|
||||
SVNRepository.find("/lib/Basic"));
|
||||
|
Loading…
Reference in New Issue
Block a user