Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/external/bsd/llvm/dist/clang Import Clang r232565 post-3.6.0...
details: https://anonhg.NetBSD.org/src/rev/68baa04305c2
branches: trunk
changeset: 806914:68baa04305c2
user: joerg <joerg%NetBSD.org@localhost>
date: Wed Mar 18 17:26:33 2015 +0000
description:
Import Clang r232565 post-3.6.0. Various bugfixes, especially for ARM.
diffstat:
external/bsd/llvm/dist/clang/docs/ReleaseNotes.rst | 164 +++++----
external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticGroups.td | 3 +
external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticParseKinds.td | 4 +
external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticSemaKinds.td | 9 +
external/bsd/llvm/dist/clang/include/clang/Basic/TargetInfo.h | 6 +
external/bsd/llvm/dist/clang/include/clang/Sema/Sema.h | 1 +
external/bsd/llvm/dist/clang/lib/AST/DeclCXX.cpp | 6 +-
external/bsd/llvm/dist/clang/lib/Basic/SourceManager.cpp | 39 +-
external/bsd/llvm/dist/clang/lib/Basic/Targets.cpp | 8 +
external/bsd/llvm/dist/clang/lib/CodeGen/CGClass.cpp | 3 +-
external/bsd/llvm/dist/clang/lib/CodeGen/CGExprScalar.cpp | 3 +-
external/bsd/llvm/dist/clang/lib/CodeGen/CodeGenModule.cpp | 4 +-
external/bsd/llvm/dist/clang/lib/CodeGen/CodeGenModule.h | 2 +-
external/bsd/llvm/dist/clang/lib/CodeGen/TargetInfo.cpp | 20 +-
external/bsd/llvm/dist/clang/lib/Driver/ToolChains.cpp | 3 +-
external/bsd/llvm/dist/clang/lib/Driver/Tools.cpp | 3 +-
external/bsd/llvm/dist/clang/lib/Parse/ParseExprCXX.cpp | 11 +-
external/bsd/llvm/dist/clang/lib/Sema/SemaChecking.cpp | 21 +-
external/bsd/llvm/dist/clang/lib/Sema/SemaDecl.cpp | 8 +
external/bsd/llvm/dist/clang/lib/Sema/SemaLookup.cpp | 14 +-
external/bsd/llvm/dist/clang/lib/Serialization/ASTWriterDecl.cpp | 28 +-
external/bsd/llvm/dist/clang/test/CXX/expr/expr.prim/expr.prim.lambda/p11-1y.cpp | 4 +-
external/bsd/llvm/dist/clang/test/CodeGen/builtins.c | 3 +
external/bsd/llvm/dist/clang/test/CodeGen/invalid_global_asm.c | 5 +
external/bsd/llvm/dist/clang/test/CodeGen/x86_64-arguments.c | 22 +
external/bsd/llvm/dist/clang/test/CodeGenCUDA/llvm-used.cu | 8 +
external/bsd/llvm/dist/clang/test/CodeGenCXX/ctor-dtor-alias.cpp | 11 +
external/bsd/llvm/dist/clang/test/CodeGenCXX/debug-info-line.cpp | 27 +
external/bsd/llvm/dist/clang/test/PCH/implicitly-deleted.cpp | 18 +
external/bsd/llvm/dist/clang/test/Parser/cxx0x-lambda-expressions.cpp | 2 +-
external/bsd/llvm/dist/clang/test/Parser/objcxx0x-lambda-expressions.mm | 2 +-
external/bsd/llvm/dist/clang/test/Sema/builtin-longjmp.c | 34 ++
external/bsd/llvm/dist/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp | 1 +
external/bsd/llvm/dist/clang/test/SemaCXX/lambda-expressions.cpp | 9 +
34 files changed, 377 insertions(+), 129 deletions(-)
diffs (truncated from 989 to 300 lines):
diff -r deee07d1532e -r 68baa04305c2 external/bsd/llvm/dist/clang/docs/ReleaseNotes.rst
--- a/external/bsd/llvm/dist/clang/docs/ReleaseNotes.rst Wed Mar 18 17:23:18 2015 +0000
+++ b/external/bsd/llvm/dist/clang/docs/ReleaseNotes.rst Wed Mar 18 17:26:33 2015 +0000
@@ -1,6 +1,6 @@
-=====================================
-Clang 3.6 (In-Progress) Release Notes
-=====================================
+=======================
+Clang 3.6 Release Notes
+=======================
.. contents::
:local:
@@ -8,12 +8,6 @@
Written by the `LLVM Team <http://llvm.org/>`_
-.. warning::
-
- These are in-progress notes for the upcoming Clang 3.6 release. You may
- prefer the `Clang 3.5 Release Notes
- <http://llvm.org/releases/3.5.0/tools/clang/docs/ReleaseNotes.html>`_.
-
Introduction
============
@@ -22,8 +16,8 @@
describe the status of Clang in some detail, including major
improvements from the previous release and new feature work. For the
general LLVM release notes, see `the LLVM
-documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM
-releases may be downloaded from the `LLVM releases web
+documentation <http://llvm.org/releases/3.6.0/docs/ReleaseNotes.html>`_.
+All LLVM releases may be downloaded from the `LLVM releases web
site <http://llvm.org/releases/>`_.
For more information about Clang or LLVM, including information about
@@ -31,11 +25,6 @@
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.6?
========================
@@ -63,114 +52,155 @@
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.
+
+- 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.
-- Basic support for DWARF debug information in COFF files
+- 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++11 Feature Support
+
+C++17 Feature Support
^^^^^^^^^^^^^^^^^^^^^
-...
-
-Objective-C Language Changes in Clang
--------------------------------------
+Clang has experimental support for some proposed C++1z (tentatively, C++17)
+features. This support can be enabled using the `-std=c++1z` flag.
-...
+New in Clang 3.6 is support for:
-OpenCL C Language Changes in Clang
-----------------------------------
+- Fold expressions
-...
+- `u8` character literals
-Internal API Changes
---------------------
+- Nested namespace definitions: `namespace A::B { ... }` as a shorthand for
+ `namespace A { namespace B { ... } }`
+
+- Attributes for namespaces and enumerators
-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.
+- Constant evaluation for all non-type template arguments
-...
-
-libclang
---------
+Note that these features may be changed or removed in future Clang releases
+without notice.
-...
-
-Static Analyzer
----------------
+Support for `for (identifier : range)` as a synonym for
+`for (auto &&identifier : range)` has been removed as it is no longer currently
+considered for C++17.
-...
+For more details on C++ feature support, see
+`the C++ status page <http://clang.llvm.org/cxx_status.html>`_.
-Core Analysis Improvements
-==========================
-- ...
+OpenMP Language Changes in Clang
+--------------------------------
-New Issues Found
-================
-
-- ...
+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,
+as well as X86. The Runtime Library's compatibility with GCC 4.9 is improved
+- missed entry points added, barrier and fork/join code improved, one more type of barrier enabled.
+Support for ppc64le architecture is now available and automatically detected when using cmake system.
+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.
-Python Binding Changes
-----------------------
-
-The following methods have been added:
-
-- ...
-
-Significant Known Problems
-==========================
Additional Information
======================
diff -r deee07d1532e -r 68baa04305c2 external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticGroups.td
--- a/external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticGroups.td Wed Mar 18 17:23:18 2015 +0000
+++ b/external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticGroups.td Wed Mar 18 17:26:33 2015 +0000
@@ -749,3 +749,6 @@
// A warning group for warnings about code that clang accepts when
// compiling CUDA C/C++ but which is not compatible with the CUDA spec.
def CudaCompat : DiagGroup<"cuda-compat">;
+
+// A warning group for things that will change semantics in the future.
+def FutureCompat : DiagGroup<"future-compat">;
diff -r deee07d1532e -r 68baa04305c2 external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticParseKinds.td
--- a/external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticParseKinds.td Wed Mar 18 17:23:18 2015 +0000
+++ b/external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticParseKinds.td Wed Mar 18 17:26:33 2015 +0000
@@ -802,6 +802,10 @@
def err_lambda_missing_parens : Error<
"lambda requires '()' before %select{'mutable'|return type|"
"attribute specifier}0">;
+def warn_init_capture_direct_list_init : Warning<
+ "direct list initialization of a lambda init-capture will change meaning in "
+ "a future version of Clang; insert an '=' to avoid a change in behavior">,
+ InGroup<FutureCompat>;
// Availability attribute
def err_expected_version : Error<
diff -r deee07d1532e -r 68baa04305c2 external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticSemaKinds.td
--- a/external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticSemaKinds.td Wed Mar 18 17:23:18 2015 +0000
+++ b/external/bsd/llvm/dist/clang/include/clang/Basic/DiagnosticSemaKinds.td Wed Mar 18 17:26:33 2015 +0000
@@ -1635,6 +1635,10 @@
def err_auto_var_init_paren_braces : Error<
"cannot deduce type for variable %0 with type %1 from "
"parenthesized initializer list">;
+def warn_auto_var_direct_list_init : Warning<
+ "direct list initialization of a variable with a deduced type will change "
+ "meaning in a future version of Clang; insert an '=' to avoid a change in "
+ "behavior">, InGroup<FutureCompat>;
def err_auto_new_ctor_multiple_expressions : Error<
"new expression for type %0 contains multiple constructor arguments">;
def err_auto_missing_trailing_return : Error<
@@ -6968,6 +6972,11 @@
"vcombine_%0%1(vcreate_%0%1(), vcreate_%0%1()) to initialize from integer "
"constants">;
+def err_builtin_longjmp_unsupported : Error<
+ "__builtin_longjmp is not supported for the current target">;
Home |
Main Index |
Thread Index |
Old Index