forked from OSchip/llvm-project
parent
7b5565418f
commit
1fe469ae6c
|
@ -1,5 +1,5 @@
|
|||
===================================================
|
||||
Extra Clang Tools 8.0.0 (In-Progress) Release Notes
|
||||
Extra Clang Tools 9.0.0 (In-Progress) Release Notes
|
||||
===================================================
|
||||
|
||||
.. contents::
|
||||
|
@ -10,7 +10,7 @@ Written by the `LLVM Team <https://llvm.org/>`_
|
|||
|
||||
.. warning::
|
||||
|
||||
These are in-progress notes for the upcoming Extra Clang Tools 8 release.
|
||||
These are in-progress notes for the upcoming Extra Clang Tools 9 release.
|
||||
Release notes for previous releases can be found on
|
||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||
|
||||
|
@ -18,7 +18,7 @@ Introduction
|
|||
============
|
||||
|
||||
This document contains the release notes for the Extra Clang Tools, part of the
|
||||
Clang release 8.0.0. Here we describe the status of the Extra Clang Tools in
|
||||
Clang release 9.0.0. Here we describe the status of the Extra Clang Tools in
|
||||
some detail, including major improvements from the previous release and new
|
||||
feature work. All LLVM releases may be downloaded from the `LLVM releases web
|
||||
site <https://llvm.org/releases/>`_.
|
||||
|
@ -32,7 +32,7 @@ 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 <https://llvm.org/releases/>`_.
|
||||
|
||||
What's New in Extra Clang Tools 8.0.0?
|
||||
What's New in Extra Clang Tools 9.0.0?
|
||||
======================================
|
||||
|
||||
Some of the major new features and improvements to Extra Clang Tools are listed
|
||||
|
@ -57,47 +57,7 @@ The improvements are...
|
|||
Improvements to clang-query
|
||||
---------------------------
|
||||
|
||||
- A new command line parameter ``--preload`` was added to
|
||||
run commands from a file and then start the interactive interpreter.
|
||||
|
||||
- The command ``q`` can was added as an alias for ``quit`` to exit the
|
||||
``clang-query`` interpreter.
|
||||
|
||||
- It is now possible to bind to named values (the result of ``let``
|
||||
expressions). For example:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
let fn functionDecl()
|
||||
match fn.bind("foo")
|
||||
|
||||
- It is now possible to write comments in ``clang-query`` code. This
|
||||
is primarily useful when using script-mode. Comments are all content
|
||||
following the ``#`` character on a line:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
# This is a comment
|
||||
match fn.bind("foo") # This is a trailing comment
|
||||
|
||||
- The new ``set print-matcher true`` command now causes ``clang-query`` to
|
||||
print the evaluated matcher together with the resulting bindings.
|
||||
|
||||
- A new output mode ``detailed-ast`` was added to ``clang-query``. The
|
||||
existing ``dump`` output mode is now a deprecated alias
|
||||
for ``detailed-ast``
|
||||
|
||||
- Output modes can now be enabled or disabled non-exclusively. For example,
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
# Enable detailed-ast without disabling other output, such as diag
|
||||
enable output detailed-ast
|
||||
m functionDecl()
|
||||
|
||||
# Disable detailed-ast only
|
||||
disable output detailed-ast
|
||||
m functionDecl()
|
||||
- ...
|
||||
|
||||
Improvements to clang-rename
|
||||
----------------------------
|
||||
|
@ -107,201 +67,7 @@ The improvements are...
|
|||
Improvements to clang-tidy
|
||||
--------------------------
|
||||
|
||||
- New :doc:`abseil-duration-comparison
|
||||
<clang-tidy/checks/abseil-duration-comparison>` check.
|
||||
|
||||
Checks for comparisons which should be done in the ``absl::Duration`` domain
|
||||
instead of the float of integer domains.
|
||||
|
||||
- New :doc:`abseil-duration-division
|
||||
<clang-tidy/checks/abseil-duration-division>` check.
|
||||
|
||||
Checks for uses of ``absl::Duration`` division that is done in a
|
||||
floating-point context, and recommends the use of a function that
|
||||
returns a floating-point value.
|
||||
|
||||
- New :doc:`abseil-duration-factory-float
|
||||
<clang-tidy/checks/abseil-duration-factory-float>` check.
|
||||
|
||||
Checks for cases where the floating-point overloads of various
|
||||
``absl::Duration`` factory functions are called when the more-efficient
|
||||
integer versions could be used instead.
|
||||
|
||||
- New :doc:`abseil-duration-factory-scale
|
||||
<clang-tidy/checks/abseil-duration-factory-scale>` check.
|
||||
|
||||
Checks for cases where arguments to ``absl::Duration`` factory functions are
|
||||
scaled internally and could be changed to a different factory function.
|
||||
|
||||
- New :doc:`abseil-duration-subtraction
|
||||
<clang-tidy/checks/abseil-duration-subtraction>` check.
|
||||
|
||||
Checks for cases where subtraction should be performed in the
|
||||
``absl::Duration`` domain.
|
||||
|
||||
- New :doc:`abseil-faster-strsplit-delimiter
|
||||
<clang-tidy/checks/abseil-faster-strsplit-delimiter>` check.
|
||||
|
||||
Finds instances of ``absl::StrSplit()`` or ``absl::MaxSplits()`` where the
|
||||
delimiter is a single character string literal and replaces with a character.
|
||||
|
||||
- New :doc:`abseil-no-internal-dependencies
|
||||
<clang-tidy/checks/abseil-no-internal-dependencies>` check.
|
||||
|
||||
Gives a warning if code using Abseil depends on internal details.
|
||||
|
||||
- New :doc:`abseil-no-namespace
|
||||
<clang-tidy/checks/abseil-no-namespace>` check.
|
||||
|
||||
Ensures code does not open ``namespace absl`` as that violates Abseil's
|
||||
compatibility guidelines.
|
||||
|
||||
- New :doc:`abseil-redundant-strcat-calls
|
||||
<clang-tidy/checks/abseil-redundant-strcat-calls>` check.
|
||||
|
||||
Suggests removal of unnecessary calls to ``absl::StrCat`` when the result is
|
||||
being passed to another ``absl::StrCat`` or ``absl::StrAppend``.
|
||||
|
||||
- New :doc:`abseil-str-cat-append
|
||||
<clang-tidy/checks/abseil-str-cat-append>` check.
|
||||
|
||||
Flags uses of ``absl::StrCat()`` to append to a ``std::string``. Suggests
|
||||
``absl::StrAppend()`` should be used instead.
|
||||
|
||||
- New :doc:`abseil-upgrade-duration-conversions
|
||||
<clang-tidy/checks/abseil-upgrade-duration-conversions>` check.
|
||||
|
||||
Finds calls to ``absl::Duration`` arithmetic operators and factories whose
|
||||
argument needs an explicit cast to continue compiling after upcoming API
|
||||
changes.
|
||||
|
||||
- New :doc:`bugprone-too-small-loop-variable
|
||||
<clang-tidy/checks/bugprone-too-small-loop-variable>` check.
|
||||
|
||||
Detects those ``for`` loops that have a loop variable with a "too small" type
|
||||
which means this type can't represent all values which are part of the
|
||||
iteration range.
|
||||
|
||||
- New :doc:`cppcoreguidelines-macro-usage
|
||||
<clang-tidy/checks/cppcoreguidelines-macro-usage>` check.
|
||||
|
||||
Finds macro usage that is considered problematic because better language
|
||||
constructs exist for the task.
|
||||
|
||||
- New :doc:`google-objc-function-naming
|
||||
<clang-tidy/checks/google-objc-function-naming>` check.
|
||||
|
||||
Checks that function names in function declarations comply with the naming
|
||||
conventions described in the Google Objective-C Style Guide.
|
||||
|
||||
- New :doc:`misc-non-private-member-variables-in-classes
|
||||
<clang-tidy/checks/misc-non-private-member-variables-in-classes>` check.
|
||||
|
||||
Finds classes that not only contain the data (non-static member variables),
|
||||
but also have logic (non-static member functions), and diagnoses all member
|
||||
variables that have any other scope other than ``private``.
|
||||
|
||||
- New :doc:`modernize-avoid-c-arrays
|
||||
<clang-tidy/checks/modernize-avoid-c-arrays>` check.
|
||||
|
||||
Finds C-style array types and recommend to use ``std::array<>`` /
|
||||
``std::vector<>``.
|
||||
|
||||
- New :doc:`modernize-concat-nested-namespaces
|
||||
<clang-tidy/checks/modernize-concat-nested-namespaces>` check.
|
||||
|
||||
Checks for uses of nested namespaces in the form of
|
||||
``namespace a { namespace b { ... }}`` and offers change to
|
||||
syntax introduced in C++17 standard: ``namespace a::b { ... }``.
|
||||
|
||||
- New :doc:`modernize-deprecated-ios-base-aliases
|
||||
<clang-tidy/checks/modernize-deprecated-ios-base-aliases>` check.
|
||||
|
||||
Detects usage of the deprecated member types of ``std::ios_base`` and replaces
|
||||
those that have a non-deprecated equivalent.
|
||||
|
||||
- New :doc:`modernize-use-nodiscard
|
||||
<clang-tidy/checks/modernize-use-nodiscard>` check.
|
||||
|
||||
Adds ``[[nodiscard]]`` attributes (introduced in C++17) to member functions
|
||||
to highlight at compile time which return values should not be ignored.
|
||||
|
||||
- New :doc:`readability-isolate-decl
|
||||
<clang-tidy/checks/readability-isolate-declaration>` check.
|
||||
|
||||
Detects local variable declarations declaring more than one variable and
|
||||
tries to refactor the code to one statement per declaration.
|
||||
|
||||
- New :doc:`readability-const-return-type
|
||||
<clang-tidy/checks/readability-const-return-type>` check.
|
||||
|
||||
Checks for functions with a ``const``-qualified return type and recommends
|
||||
removal of the ``const`` keyword.
|
||||
|
||||
- New :doc:`readability-magic-numbers
|
||||
<clang-tidy/checks/readability-magic-numbers>` check.
|
||||
|
||||
Detects usage of magic numbers, numbers that are used as literals instead of
|
||||
introduced via constants or symbols.
|
||||
|
||||
- New :doc:`readability-redundant-preprocessor
|
||||
<clang-tidy/checks/readability-redundant-preprocessor>` check.
|
||||
|
||||
Finds potentially redundant preprocessor directives.
|
||||
|
||||
- New :doc:`readability-uppercase-literal-suffix
|
||||
<clang-tidy/checks/readability-uppercase-literal-suffix>` check.
|
||||
|
||||
Detects when the integral literal or floating point literal has non-uppercase
|
||||
suffix, and suggests to make the suffix uppercase. The list of destination
|
||||
suffixes can be optionally provided.
|
||||
|
||||
- New alias :doc:`cert-dcl16-c
|
||||
<clang-tidy/checks/cert-dcl16-c>` to :doc:`readability-uppercase-literal-suffix
|
||||
<clang-tidy/checks/readability-uppercase-literal-suffix>`
|
||||
added.
|
||||
|
||||
- New alias :doc:`cppcoreguidelines-avoid-c-arrays
|
||||
<clang-tidy/checks/cppcoreguidelines-avoid-c-arrays>`
|
||||
to :doc:`modernize-avoid-c-arrays
|
||||
<clang-tidy/checks/modernize-avoid-c-arrays>` added.
|
||||
|
||||
- New alias :doc:`cppcoreguidelines-non-private-member-variables-in-classes
|
||||
<clang-tidy/checks/cppcoreguidelines-non-private-member-variables-in-classes>`
|
||||
to :doc:`misc-non-private-member-variables-in-classes
|
||||
<clang-tidy/checks/misc-non-private-member-variables-in-classes>`
|
||||
added.
|
||||
|
||||
- New alias :doc:`hicpp-avoid-c-arrays
|
||||
<clang-tidy/checks/hicpp-avoid-c-arrays>`
|
||||
to :doc:`modernize-avoid-c-arrays
|
||||
<clang-tidy/checks/modernize-avoid-c-arrays>` added.
|
||||
|
||||
- New alias :doc:`hicpp-uppercase-literal-suffix
|
||||
<clang-tidy/checks/hicpp-uppercase-literal-suffix>` to
|
||||
:doc:`readability-uppercase-literal-suffix
|
||||
<clang-tidy/checks/readability-uppercase-literal-suffix>`
|
||||
added.
|
||||
|
||||
- The :doc:`cppcoreguidelines-narrowing-conversions
|
||||
<clang-tidy/checks/cppcoreguidelines-narrowing-conversions>` check now
|
||||
detects more narrowing conversions:
|
||||
- integer to narrower signed integer (this is compiler implementation defined),
|
||||
- integer - floating point narrowing conversions,
|
||||
- floating point - integer narrowing conversions,
|
||||
- constants with narrowing conversions (even in ternary operator).
|
||||
|
||||
- The :doc:`objc-property-declaration
|
||||
<clang-tidy/checks/objc-property-declaration>` check now ignores the
|
||||
`Acronyms` and `IncludeDefaultAcronyms` options.
|
||||
|
||||
- The :doc:`readability-redundant-smartptr-get
|
||||
<clang-tidy/checks/readability-redundant-smartptr-get>` check does not warn
|
||||
about calls inside macros anymore by default.
|
||||
|
||||
- The :doc:`readability-uppercase-literal-suffix
|
||||
<clang-tidy/checks/readability-uppercase-literal-suffix>` check does not warn
|
||||
about literal suffixes inside macros anymore by default.
|
||||
- ...
|
||||
|
||||
Improvements to include-fixer
|
||||
-----------------------------
|
||||
|
|
|
@ -49,9 +49,9 @@ copyright = u'2007-%d, The Clang Team' % date.today().year
|
|||
# built documents.
|
||||
#
|
||||
# The short version.
|
||||
version = '8'
|
||||
version = '9'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '8'
|
||||
release = '9'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
=======================================
|
||||
Clang 8.0.0 (In-Progress) Release Notes
|
||||
Clang 9.0.0 (In-Progress) Release Notes
|
||||
=======================================
|
||||
|
||||
.. contents::
|
||||
|
@ -10,7 +10,7 @@ Written by the `LLVM Team <https://llvm.org/>`_
|
|||
|
||||
.. warning::
|
||||
|
||||
These are in-progress notes for the upcoming Clang 8 release.
|
||||
These are in-progress notes for the upcoming Clang 9 release.
|
||||
Release notes for previous releases can be found on
|
||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||
|
||||
|
@ -18,7 +18,7 @@ Introduction
|
|||
============
|
||||
|
||||
This document contains the release notes for the Clang C/C++/Objective-C
|
||||
frontend, part of the LLVM Compiler Infrastructure, release 8.0.0. Here we
|
||||
frontend, part of the LLVM Compiler Infrastructure, release 9.0.0. Here we
|
||||
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
|
||||
|
@ -35,7 +35,7 @@ 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 <https://llvm.org/releases/>`_.
|
||||
|
||||
What's New in Clang 8.0.0?
|
||||
What's New in Clang 9.0.0?
|
||||
==========================
|
||||
|
||||
Some of the major new features and improvements to Clang are listed
|
||||
|
@ -46,96 +46,22 @@ sections with improvements to Clang's support for those languages.
|
|||
Major New Features
|
||||
------------------
|
||||
|
||||
- Clang supports use of a profile remapping file, which permits
|
||||
profile data captured for one version of a program to be applied
|
||||
when building another version where symbols have changed (for
|
||||
example, due to renaming a class or namespace).
|
||||
See the :doc:`UsersManual` for details.
|
||||
- ...
|
||||
|
||||
Improvements to Clang's diagnostics
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- ``-Wextra-semi-stmt`` is a new diagnostic that diagnoses extra semicolons,
|
||||
much like ``-Wextra-semi``. This new diagnostic diagnoses all *unnecessary*
|
||||
null statements (expression statements without an expression), unless: the
|
||||
semicolon directly follows a macro that was expanded to nothing or if the
|
||||
semicolon is within the macro itself. This applies to macros defined in system
|
||||
headers as well as user-defined macros.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
#define MACRO(x) int x;
|
||||
#define NULLMACRO(varname)
|
||||
|
||||
void test() {
|
||||
; // <- warning: ';' with no preceding expression is a null statement
|
||||
|
||||
while (true)
|
||||
; // OK, it is needed.
|
||||
|
||||
switch (my_enum) {
|
||||
case E1:
|
||||
// stuff
|
||||
break;
|
||||
case E2:
|
||||
; // OK, it is needed.
|
||||
}
|
||||
|
||||
MACRO(v0;) // Extra semicolon, but within macro, so ignored.
|
||||
|
||||
MACRO(v1); // <- warning: ';' with no preceding expression is a null statement
|
||||
|
||||
NULLMACRO(v2); // ignored, NULLMACRO expanded to nothing.
|
||||
}
|
||||
|
||||
- ``-Wempty-init-stmt`` is a new diagnostic that diagnoses empty init-statements
|
||||
of ``if``, ``switch``, ``range-based for``, unless: the semicolon directly
|
||||
follows a macro that was expanded to nothing or if the semicolon is within the
|
||||
macro itself (both macros from system headers, and normal macros). This
|
||||
diagnostic is in the ``-Wextra-semi-stmt`` group and is enabled in
|
||||
``-Wextra``.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
void test() {
|
||||
if(; // <- warning: init-statement of 'if' is a null statement
|
||||
true)
|
||||
;
|
||||
|
||||
switch (; // <- warning: init-statement of 'switch' is a null statement
|
||||
x) {
|
||||
...
|
||||
}
|
||||
|
||||
for (; // <- warning: init-statement of 'range-based for' is a null statement
|
||||
int y : S())
|
||||
;
|
||||
}
|
||||
|
||||
- ...
|
||||
|
||||
Non-comprehensive list of changes in this release
|
||||
-------------------------------------------------
|
||||
|
||||
- The experimental feature Pretokenized Headers (PTH) was removed in its
|
||||
entirely from Clang. The feature did not properly work with about 1/3 of the
|
||||
possible tokens available and was unmaintained.
|
||||
- ...
|
||||
|
||||
- The internals of libc++ include directory detection on MacOS have changed.
|
||||
Instead of running a search based on the ``-resource-dir`` flag, the search
|
||||
is now based on the path of the compiler in the filesystem. The default
|
||||
behaviour should not change. However, if you override ``-resource-dir``
|
||||
manually and rely on the old behaviour you will need to add appropriate
|
||||
compiler flags for finding the corresponding libc++ include directory.
|
||||
|
||||
New Compiler Flags
|
||||
------------------
|
||||
|
||||
- ``-fprofile-filter-files=[regexes]`` and ``-fprofile-exclude-files=[regexes]``.
|
||||
|
||||
Clang has now options to filter or exclude some files when
|
||||
instrumenting for gcov-based profiling.
|
||||
See the :doc:`UsersManual` for details.
|
||||
|
||||
- ...
|
||||
|
||||
Deprecated Compiler Flags
|
||||
|
@ -149,17 +75,12 @@ future versions of Clang.
|
|||
Modified Compiler Flags
|
||||
-----------------------
|
||||
|
||||
- As of clang 8, `alignof` and `_Alignof` return the ABI alignment of a type,
|
||||
as opposed to the preferred alignment. `__alignof` still returns the
|
||||
preferred alignment. `-fclang-abi-compat=7` (and previous) will make
|
||||
`alignof` and `_Alignof` return preferred alignment again.
|
||||
|
||||
- ...
|
||||
|
||||
New Pragmas in Clang
|
||||
--------------------
|
||||
|
||||
- Clang now supports adding multiple `#pragma clang attribute` attributes into
|
||||
a scope of pushed attributes.
|
||||
- ...
|
||||
|
||||
Attribute Changes in Clang
|
||||
--------------------------
|
||||
|
@ -169,16 +90,6 @@ Attribute Changes in Clang
|
|||
Windows Support
|
||||
---------------
|
||||
|
||||
- clang-cl now supports the use of the precompiled header options /Yc and /Yu
|
||||
without the filename argument. When these options are used without the
|
||||
filename, a `#pragma hdrstop` inside the source marks the end of the
|
||||
precompiled code.
|
||||
|
||||
- clang-cl has a new command-line option, ``/Zc:dllexportInlines-``, similar to
|
||||
``-fvisibility-inlines-hidden`` on non-Windows, that makes class-level
|
||||
`dllexport` and `dllimport` attributes not apply to inline member functions.
|
||||
This can significantly reduce compile and link times. See the `User's Manual
|
||||
<UsersManual.html#the-zc-dllexportinlines-option>`_ for more info.
|
||||
- ...
|
||||
|
||||
|
||||
|
@ -217,40 +128,12 @@ OpenCL C Language Changes in Clang
|
|||
ABI Changes in Clang
|
||||
--------------------
|
||||
|
||||
- `_Alignof` and `alignof` now return the ABI alignment of a type, as opposed
|
||||
to the preferred alignment.
|
||||
|
||||
- This is more in keeping with the language of the standards, as well as
|
||||
being compatible with gcc
|
||||
- `__alignof` and `__alignof__` still return the preferred alignment of
|
||||
a type
|
||||
- This shouldn't break any ABI except for things that explicitly ask for
|
||||
`alignas(alignof(T))`.
|
||||
- If you have interfaces that break with this change, you may wish to switch
|
||||
to `alignas(__alignof(T))`, instead of using the `-fclang-abi-compat`
|
||||
switch.
|
||||
- ...
|
||||
|
||||
OpenMP Support in Clang
|
||||
----------------------------------
|
||||
|
||||
- Support relational-op != (not-equal) as one of the canonical forms of random
|
||||
access iterator.
|
||||
|
||||
- Added support for mapping of the lambdas in target regions.
|
||||
|
||||
- Added parsing/sema analysis for OpenMP 5.0 requires directive.
|
||||
|
||||
- Various bugfixes and improvements.
|
||||
|
||||
New features supported for Cuda devices:
|
||||
|
||||
- Added support for the reductions across the teams.
|
||||
|
||||
- Extended number of constructs that can be executed in SPMD mode.
|
||||
|
||||
- Fixed support for lastprivate/reduction variables in SPMD constructs.
|
||||
|
||||
- General performance improvement.
|
||||
- ...
|
||||
|
||||
CUDA Support in Clang
|
||||
---------------------
|
||||
|
@ -259,7 +142,7 @@ CUDA Support in Clang
|
|||
Internal API Changes
|
||||
--------------------
|
||||
|
||||
These are major API changes that have happened since the 7.0.0 release of
|
||||
These are major API changes that have happened since the 8.0.0 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.
|
||||
|
||||
|
@ -294,75 +177,7 @@ Static Analyzer
|
|||
Undefined Behavior Sanitizer (UBSan)
|
||||
------------------------------------
|
||||
|
||||
* The Implicit Conversion Sanitizer (``-fsanitize=implicit-conversion``) group
|
||||
was extended. One more type of issues is caught - implicit integer sign change.
|
||||
(``-fsanitize=implicit-integer-sign-change``).
|
||||
This makes the Implicit Conversion Sanitizer feature-complete,
|
||||
with only missing piece being bitfield handling.
|
||||
While there is a ``-Wsign-conversion`` diagnostic group that catches this kind
|
||||
of issues, it is both noisy, and does not catch **all** the cases.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
bool consume(unsigned int val);
|
||||
|
||||
void test(int val) {
|
||||
(void)consume(val); // If the value was negative, it is now large positive.
|
||||
(void)consume((unsigned int)val); // OK, the conversion is explicit.
|
||||
}
|
||||
|
||||
Like some other ``-fsanitize=integer`` checks, these issues are **not**
|
||||
undefined behaviour. But they are not *always* intentional, and are somewhat
|
||||
hard to track down. This group is **not** enabled by ``-fsanitize=undefined``,
|
||||
but the ``-fsanitize=implicit-integer-sign-change`` check
|
||||
is enabled by ``-fsanitize=integer``.
|
||||
(as is ``-fsanitize=implicit-integer-truncation`` check)
|
||||
|
||||
* The Implicit Conversion Sanitizer (``-fsanitize=implicit-conversion``) has
|
||||
learned to sanitize compound assignment operators.
|
||||
|
||||
* ``alignment`` check has learned to sanitize the assume_aligned-like attributes:
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
typedef char **__attribute__((align_value(1024))) aligned_char;
|
||||
struct ac_struct {
|
||||
aligned_char a;
|
||||
};
|
||||
char **load_from_ac_struct(struct ac_struct *x) {
|
||||
return x->a; // <- check that loaded 'a' is aligned
|
||||
}
|
||||
|
||||
char **passthrough(__attribute__((align_value(1024))) char **x) {
|
||||
return x; // <- check the pointer passed as function argument
|
||||
}
|
||||
|
||||
char **__attribute__((alloc_align(2)))
|
||||
alloc_align(int size, unsigned long alignment);
|
||||
|
||||
char **caller(int size) {
|
||||
return alloc_align(size, 1024); // <- check returned pointer
|
||||
}
|
||||
|
||||
char **__attribute__((assume_aligned(1024))) get_ptr();
|
||||
|
||||
char **caller2() {
|
||||
return get_ptr(); // <- check returned pointer
|
||||
}
|
||||
|
||||
void *caller3(char **x) {
|
||||
return __builtin_assume_aligned(x, 1024); // <- check returned pointer
|
||||
}
|
||||
|
||||
void *caller4(char **x, unsigned long offset) {
|
||||
return __builtin_assume_aligned(x, 1024, offset); // <- check returned pointer accounting for the offest
|
||||
}
|
||||
|
||||
void process(char *data, int width) {
|
||||
#pragma omp for simd aligned(data : 1024) // <- aligned clause will be checked.
|
||||
for (int x = 0; x < width; x++)
|
||||
data[x] *= data[x];
|
||||
}
|
||||
- ...
|
||||
|
||||
Core Analysis Improvements
|
||||
==========================
|
||||
|
|
|
@ -50,9 +50,9 @@ copyright = u'2007-%d, The Clang Team' % date.today().year
|
|||
# built documents.
|
||||
#
|
||||
# The short version.
|
||||
version = '8'
|
||||
version = '9'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '8'
|
||||
release = '9'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -27,7 +27,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
|||
project(libcxx CXX C)
|
||||
|
||||
set(PACKAGE_NAME libcxx)
|
||||
set(PACKAGE_VERSION 8.0.0svn)
|
||||
set(PACKAGE_VERSION 9.0.0svn)
|
||||
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
||||
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
========================================
|
||||
Libc++ 8.0.0 (In-Progress) Release Notes
|
||||
Libc++ 9.0.0 (In-Progress) Release Notes
|
||||
========================================
|
||||
|
||||
.. contents::
|
||||
|
@ -10,7 +10,7 @@ Written by the `Libc++ Team <https://libcxx.llvm.org>`_
|
|||
|
||||
.. warning::
|
||||
|
||||
These are in-progress notes for the upcoming libc++ 8 release.
|
||||
These are in-progress notes for the upcoming libc++ 9 release.
|
||||
Release notes for previous releases can be found on
|
||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||
|
||||
|
@ -18,7 +18,7 @@ Introduction
|
|||
============
|
||||
|
||||
This document contains the release notes for the libc++ C++ Standard Library,
|
||||
part of the LLVM Compiler Infrastructure, release 8.0.0. Here we describe the
|
||||
part of the LLVM Compiler Infrastructure, release 9.0.0. Here we describe the
|
||||
status of libc++ in some detail, including major improvements from the previous
|
||||
release and new feature work. For the general LLVM release notes, see `the LLVM
|
||||
documentation <https://llvm.org/docs/ReleaseNotes.html>`_. All LLVM releases may
|
||||
|
@ -32,7 +32,7 @@ main Libc++ 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 <https://llvm.org/releases/>`_.
|
||||
|
||||
What's New in Libc++ 8.0.0?
|
||||
What's New in Libc++ 9.0.0?
|
||||
===========================
|
||||
|
||||
New Features
|
||||
|
@ -40,23 +40,4 @@ New Features
|
|||
|
||||
API Changes
|
||||
-----------
|
||||
- Building libc++ for Mac OSX 10.6 is not supported anymore.
|
||||
- Starting with LLVM 8.0.0, users that wish to link together translation units
|
||||
built with different versions of libc++'s headers into the same final linked
|
||||
image MUST define the _LIBCPP_HIDE_FROM_ABI_PER_TU macro to 1 when building
|
||||
those translation units. Not defining _LIBCPP_HIDE_FROM_ABI_PER_TU to 1 and
|
||||
linking translation units built with different versions of libc++'s headers
|
||||
together may lead to ODR violations and ABI issues. On the flipside, code
|
||||
size improvements should be expected for everyone not defining the macro.
|
||||
- Starting with LLVM 8.0.0, std::dynarray has been removed from the library.
|
||||
std::dynarray was a feature proposed for C++14 that was pulled from the
|
||||
Standard at the last minute and was never standardized. Since there are no
|
||||
plans to standardize this facility it is being removed.
|
||||
- Starting with LLVM 8.0.0, std::bad_array_length has been removed from the
|
||||
library. std::bad_array_length was a feature proposed for C++14 alongside
|
||||
std::dynarray, but it never actually made it into the C++ Standard. There
|
||||
are no plans to standardize this feature at this time. Formally speaking,
|
||||
this removal constitutes an ABI break because the symbols were shipped in
|
||||
the shared library. However, on macOS systems, the feature was not usable
|
||||
because it was hidden behind availability annotations. We do not expect
|
||||
any actual breakage to happen from this change.
|
||||
- ...
|
||||
|
|
|
@ -47,9 +47,9 @@ copyright = u'2011-2018, LLVM Project'
|
|||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '8.0'
|
||||
version = '9.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '8.0'
|
||||
release = '9.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
# define _GNUC_VER_NEW 0
|
||||
#endif
|
||||
|
||||
#define _LIBCPP_VERSION 8000
|
||||
#define _LIBCPP_VERSION 9000
|
||||
|
||||
#ifndef _LIBCPP_ABI_VERSION
|
||||
# define _LIBCPP_ABI_VERSION 1
|
||||
|
|
|
@ -1 +1 @@
|
|||
8000
|
||||
9000
|
||||
|
|
|
@ -81,7 +81,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
|||
endif()
|
||||
|
||||
set(PACKAGE_NAME libunwind)
|
||||
set(PACKAGE_VERSION 8.0.0svn)
|
||||
set(PACKAGE_VERSION 9.0.0svn)
|
||||
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
|
||||
set(PACKAGE_BUGREPORT "llvm-bugs@lists.llvm.org")
|
||||
|
||||
|
|
|
@ -48,9 +48,9 @@ copyright = u'2011-%d, LLVM Project' % date.today().year
|
|||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '8.0'
|
||||
version = '9.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '8.0'
|
||||
release = '9.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
=======================
|
||||
lld 8.0.0 Release Notes
|
||||
lld 9.0.0 Release Notes
|
||||
=======================
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
.. warning::
|
||||
These are in-progress notes for the upcoming LLVM 8.0.0 release.
|
||||
These are in-progress notes for the upcoming LLVM 9.0.0 release.
|
||||
Release notes for previous releases can be found on
|
||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
This document contains the release notes for the lld linker, release 8.0.0.
|
||||
This document contains the release notes for the lld linker, release 9.0.0.
|
||||
Here we describe the status of lld, including major improvements
|
||||
from the previous release. All lld releases may be downloaded
|
||||
from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
||||
|
@ -24,47 +24,17 @@ Non-comprehensive list of changes in this release
|
|||
ELF Improvements
|
||||
----------------
|
||||
|
||||
* lld now supports RISC-V. (`r339364
|
||||
<https://reviews.llvm.org/rL339364>`_)
|
||||
|
||||
* Default image base address has changed from 65536 to 2 MiB for i386
|
||||
and 4 MiB for AArch64 to make lld-generated executables work better
|
||||
with automatic superpage promotion. FreeBSD can promote contiguous
|
||||
non-superpages to a superpage if they are aligned to the superpage
|
||||
size. (`r342746 <https://reviews.llvm.org/rL342746>`_)
|
||||
|
||||
* lld/Hexagon can now link Linux kernel and musl libc for Qualcomm
|
||||
Hexagon ISA.
|
||||
|
||||
* Initial MSP430 ISA support has landed.
|
||||
|
||||
* The following flags have been added: ``-z interpose``, ``-z global``
|
||||
* ...
|
||||
|
||||
COFF Improvements
|
||||
-----------------
|
||||
|
||||
* PDB GUID is set to hash of PDB contents instead to a random byte
|
||||
sequence for build reproducibility.
|
||||
|
||||
* The following flags have been added: ``/force:multiple``
|
||||
|
||||
* lld now can link against import libraries produced by GNU tools.
|
||||
|
||||
* lld can create thunks for ARM, to allow linking images over 16 MB.
|
||||
* ...
|
||||
|
||||
MinGW Improvements
|
||||
------------------
|
||||
|
||||
* lld can now automatically import data variables from DLLs without the
|
||||
use of the dllimport attribute.
|
||||
|
||||
* lld can now use existing normal MinGW sysroots with import libraries and
|
||||
CRT startup object files for GNU binutils. lld can handle most object
|
||||
files produced by GCC, and thus works as a drop-in replacement for
|
||||
ld.bfd in such environments. (There are known issues with linking crtend.o
|
||||
from GCC in setups with DWARF exceptions though, where object files are
|
||||
linked in a different order than with GNU ld, inserting a DWARF exception
|
||||
table terminator too early.)
|
||||
* ...
|
||||
|
||||
MachO Improvements
|
||||
------------------
|
||||
|
@ -74,7 +44,4 @@ MachO Improvements
|
|||
WebAssembly Improvements
|
||||
------------------------
|
||||
|
||||
* Add initial support for creating shared libraries (-shared).
|
||||
Note: The shared library format is still under active development and may
|
||||
undergo significant changes in future versions.
|
||||
See: https://github.com/WebAssembly/tool-conventions/blob/master/DynamicLinking.md
|
||||
* ...
|
||||
|
|
|
@ -48,9 +48,9 @@ copyright = u'2011-%d, LLVM Project' % date.today().year
|
|||
# built documents.
|
||||
#
|
||||
# The short version.
|
||||
version = '8'
|
||||
version = '9'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '8'
|
||||
release = '9'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -12,7 +12,7 @@ if(POLICY CMP0075)
|
|||
endif()
|
||||
|
||||
if(NOT DEFINED LLVM_VERSION_MAJOR)
|
||||
set(LLVM_VERSION_MAJOR 8)
|
||||
set(LLVM_VERSION_MAJOR 9)
|
||||
endif()
|
||||
if(NOT DEFINED LLVM_VERSION_MINOR)
|
||||
set(LLVM_VERSION_MINOR 0)
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
========================
|
||||
LLVM 8.0.0 Release Notes
|
||||
LLVM 9.0.0 Release Notes
|
||||
========================
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
.. warning::
|
||||
These are in-progress notes for the upcoming LLVM 8 release.
|
||||
These are in-progress notes for the upcoming LLVM 9 release.
|
||||
Release notes for previous releases can be found on
|
||||
`the Download Page <https://releases.llvm.org/download.html>`_.
|
||||
|
||||
|
@ -15,7 +15,7 @@ Introduction
|
|||
============
|
||||
|
||||
This document contains the release notes for the LLVM Compiler Infrastructure,
|
||||
release 8.0.0. Here we describe the status of LLVM, including major improvements
|
||||
release 9.0.0. Here we describe the status of LLVM, including major improvements
|
||||
from the previous release, improvements in various subprojects of LLVM, and
|
||||
some of the current users of the code. All LLVM releases may be downloaded
|
||||
from the `LLVM releases web site <https://llvm.org/releases/>`_.
|
||||
|
@ -40,14 +40,6 @@ Non-comprehensive list of changes in this release
|
|||
functionality, or simply have a lot to talk about), see the `NOTE` below
|
||||
for adding a new subsection.
|
||||
|
||||
* The **llvm-cov** tool can now export lcov trace files using the
|
||||
`-format=lcov` option of the `export` command.
|
||||
|
||||
* The add_llvm_loadable_module CMake macro has been removed. The
|
||||
add_llvm_library macro with the MODULE argument now provides the same
|
||||
functionality. See `Writing an LLVM Pass
|
||||
<WritingAnLLVMPass.html#setting-up-the-build-environment>`_.
|
||||
|
||||
.. NOTE
|
||||
If you would like to document a larger change, then you can add a
|
||||
subsection about it right here. You can copy the following boilerplate
|
||||
|
@ -82,8 +74,7 @@ Changes to the PowerPC Target
|
|||
Changes to the X86 Target
|
||||
-------------------------
|
||||
|
||||
* Machine model for AMD bdver2 (Piledriver) CPU was added. It is used to support
|
||||
instruction scheduling and other instruction cost heuristics.
|
||||
During this release ...
|
||||
|
||||
Changes to the AMDGPU Target
|
||||
-----------------------------
|
||||
|
@ -98,14 +89,7 @@ Changes to the AVR Target
|
|||
Changes to the WebAssembly Target
|
||||
---------------------------------
|
||||
|
||||
The WebAssembly target is no longer "experimental"! It's now built by default,
|
||||
rather than needing to be enabled with LLVM_EXPERIMENTAL_TARGETS_TO_BUILD.
|
||||
|
||||
The object file format and core C ABI are now considered stable. That said,
|
||||
the object file format has an ABI versioning capability, and one anticipated
|
||||
use for it will be to add support for returning small structs as multiple
|
||||
return values, once the underlying WebAssembly platform itself supports it.
|
||||
Additionally, multithreading support is not yet included in the stable ABI.
|
||||
During this release ...
|
||||
|
||||
|
||||
Changes to the OCaml bindings
|
||||
|
@ -120,7 +104,7 @@ Changes to the C API
|
|||
Changes to the DAG infrastructure
|
||||
---------------------------------
|
||||
|
||||
External Open Source Projects Using LLVM 8
|
||||
External Open Source Projects Using LLVM 9
|
||||
==========================================
|
||||
|
||||
* A project...
|
||||
|
|
|
@ -51,9 +51,9 @@ copyright = u'2003-%d, LLVM Project' % date.today().year
|
|||
# built documents.
|
||||
#
|
||||
# The short version.
|
||||
version = '8'
|
||||
version = '9'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '8'
|
||||
release = '9'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
|
@ -26,8 +26,8 @@ set python64_dir=C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python36
|
|||
|
||||
set revision=%1
|
||||
set branch=trunk
|
||||
set package_version=8.0.0-r%revision%
|
||||
set clang_format_vs_version=8.0.0.%revision%
|
||||
set package_version=9.0.0-r%revision%
|
||||
set clang_format_vs_version=9.0.0.%revision%
|
||||
set build_dir=llvm_package_%revision%
|
||||
|
||||
echo Branch: %branch%
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
============================
|
||||
Release Notes 8.0 (upcoming)
|
||||
Release Notes 9.0 (upcoming)
|
||||
============================
|
||||
|
||||
In Polly 8 the following important changes have been incorporated.
|
||||
In Polly 9 the following important changes have been incorporated.
|
||||
|
||||
.. warning::
|
||||
|
||||
|
|
|
@ -49,9 +49,9 @@ copyright = u'2010-%d, The Polly Team' % date.today().year
|
|||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '8.0-devel'
|
||||
version = '9.0-devel'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '8.0-devel'
|
||||
release = '9.0-devel'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
|
Loading…
Reference in New Issue