Date: Wed, 24 Aug 2016 17:36:20 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304761 - in vendor/clang/dist: docs lib/CodeGen lib/Driver lib/Sema test/CodeGen test/Sema Message-ID: <201608241736.u7OHaKbd036178@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Wed Aug 24 17:36:20 2016 New Revision: 304761 URL: https://svnweb.freebsd.org/changeset/base/304761 Log: Vendor import of clang release_39 branch r279477: https://llvm.org/svn/llvm-project/cfe/branches/release_39@279477 Added: vendor/clang/dist/test/CodeGen/wrapv-lshr-sanitize.c (contents, props changed) vendor/clang/dist/test/Sema/negative-shift-wrapv.c (contents, props changed) Modified: vendor/clang/dist/docs/ReleaseNotes.rst vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp vendor/clang/dist/lib/Driver/ToolChains.cpp vendor/clang/dist/lib/Sema/SemaExpr.cpp Modified: vendor/clang/dist/docs/ReleaseNotes.rst ============================================================================== --- vendor/clang/dist/docs/ReleaseNotes.rst Wed Aug 24 17:36:04 2016 (r304760) +++ vendor/clang/dist/docs/ReleaseNotes.rst Wed Aug 24 17:36:20 2016 (r304761) @@ -1,6 +1,6 @@ -===================================== -Clang 3.9 (In-Progress) Release Notes -===================================== +======================= +Clang 3.9 Release Notes +======================= .. contents:: :local: @@ -8,12 +8,6 @@ Clang 3.9 (In-Progress) Release Notes Written by the `LLVM Team <http://llvm.org/>`_ -.. warning:: - - These are in-progress notes for the upcoming Clang 3.9 release. You may - prefer the `Clang 3.8 Release Notes - <http://llvm.org/releases/3.8.0/tools/clang/docs/ReleaseNotes.html>`_. - Introduction ============ @@ -31,11 +25,6 @@ the latest release, please check out the 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.9? ======================== @@ -47,12 +36,12 @@ sections with improvements to Clang's su Major New Features ------------------ -- Clang will no longer pass --build-id by default to the linker. In modern +- Clang will no longer pass ``--build-id`` by default to the linker. In modern linkers that is a relatively expensive option. It can be passed explicitly - with -Wl,--build-id. To have clang always pass it, build clang with - -DENABLE_LINKER_BUILD_ID. + with ``-Wl,--build-id``. To have clang always pass it, build clang with + ``-DENABLE_LINKER_BUILD_ID``. - On Itanium ABI targets, attribute abi_tag is now supported for compatibility - with GCC. Clang implementation of abi_tag is mostly compatible with GCC ABI + with GCC. Clang's implementation of abi_tag is mostly compatible with GCC ABI version 10. Improvements to Clang's diagnostics @@ -62,25 +51,16 @@ Clang's diagnostics are constantly being explain them more clearly, and provide more accurate source information about them. The improvements since the 3.8 release include: -- -Wcomma is a new warning to show most uses of the builtin comma operator. -- -Wfloat-conversion has two new sub-warnings to give finer grain control for - floating point to integer conversion warnings. - - -Wfloat-overflow-convserion detects when a constant floating point value - is converted to an integer type and will overflow the target type. - - -Wfloat-zero-conversion detects when a non-zero floating point value is - converted to a zero integer value. - -New Compiler Flags ------------------- - -The option .... - +- ``-Wcomma`` is a new warning to show most uses of the builtin comma operator. -New Pragmas in Clang ------------------------ +- ``-Wfloat-conversion`` has two new sub-warnings to give finer grain control for + floating point to integer conversion warnings. -Clang now supports the ... + - ``-Wfloat-overflow-conversion`` detects when a constant floating point value + is converted to an integer type and will overflow the target type. + - ``-Wfloat-zero-conversion`` detects when a non-zero floating point value is + converted to a zero integer value. Attribute Changes in Clang -------------------------- @@ -94,9 +74,7 @@ Attribute Changes in Clang Windows Support --------------- -Clang's support for building native Windows programs ... - -TLS is enabled for Cygwin defaults to -femulated-tls. +TLS is enabled for Cygwin and defaults to -femulated-tls. Proper support, including correct mangling and overloading, added for MS-specific "__unaligned" type qualifier. @@ -104,12 +82,12 @@ MS-specific "__unaligned" type qualifier clang-cl now has limited support for the precompiled header flags /Yc, /Yu, and /Fp. If the precompiled header is passed on the compile command with /FI, then the precompiled header flags are honored. But if the precompiled header is -included by an `#include <stdafx.h>` in each source file instead of by a -`/FIstdafx.h` flag, these flag continue to be ignored. +included by an ``#include <stdafx.h>`` in each source file instead of by a +``/FIstdafx.h`` flag, these flag continue to be ignored. -clang-cl has a new flag, `/imsvc <dir>`, for adding a directory to the system -include search path (where warnings are disabled default) without having to -set `%INCLUDE`. +clang-cl has a new flag, ``/imsvc <dir>``, for adding a directory to the system +include search path (where warnings are disabled by default) without having to +set ``%INCLUDE%``. C Language Changes in Clang --------------------------- @@ -117,15 +95,9 @@ The -faltivec and -maltivec flags no lon `RenderScript <https://developer.android.com/guide/topics/renderscript/compute.html>`_ -support added to the Frontend and enabled by the '-x renderscript' option or -the '.rs' file extension. - -... - -C11 Feature Support -^^^^^^^^^^^^^^^^^^^ +support has been added to the frontend and enabled by the '-x renderscript' +option or the '.rs' file extension. -... C++ Language Changes in Clang ----------------------------- @@ -150,7 +122,6 @@ C++ Language Changes in Clang using Foo::e; // error static constexpr auto e = Foo::e; // ok -... C++1z Feature Support ^^^^^^^^^^^^^^^^^^^^^ @@ -185,13 +156,6 @@ Changes to C++1z features since Clang 3. - Unary *fold-expression*\s over an empty pack are now rejected for all operators other than ``&&``, ``||``, and ``,``. -... - -Objective-C Language Changes in Clang -------------------------------------- - -... - OpenCL C Language Changes in Clang ---------------------------------- @@ -199,6 +163,8 @@ Clang now has support for all OpenCL 2.0 features have been completed since the previous release: - Pipe builtin functions (s6.13.16.2-4). +- Dynamic parallelism support via the ``enqueue_kernel`` Clang builtin function, + as well as the kernel query functions from s6.13.17.6. - Address space conversion functions ``to_{global/local/private}``. - ``nosvm`` attribute support. - Improved diagnostic and generation of Clang Blocks used in OpenCL kernel code. @@ -207,7 +173,7 @@ features have been completed since the p Several miscellaneous improvements have been made: - Supported extensions are now part of the target representation to give correct - diagnostics for unsupported target features during compilation. For example, + diagnostics for unsupported target features during compilation. For example, when compiling for a target that does not support the double precision floating point extension, Clang will give an error when encountering the ``cl_khr_fp64`` pragma. Several missing extensions were added covering up to @@ -257,19 +223,10 @@ default. User may change this value usin The codegen for OpenMP constructs was significantly improved to produce much more stable and faster code. -Internal API Changes --------------------- - -These are major API changes that have happened since the 3.8 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. - -- ... - AST Matchers ------------ -- has and hasAnyArgument: Matchers no longer ignores parentheses and implicit +- has and hasAnyArgument: Matchers no longer ignore parentheses and implicit casts on the argument before applying the inner matcher. The fix was done to allow for greater control by the user. In all existing checkers that use this matcher all instances of code ``hasAnyArgument(<inner matcher>)`` or @@ -277,13 +234,6 @@ AST Matchers ``hasAnyArgument(ignoringParenImpCasts(<inner matcher>))`` or ``has(ignoringParenImpCasts(<inner matcher>))``. -... - -libclang --------- - -... - Static Analyzer --------------- @@ -304,25 +254,6 @@ The scan-build tool now supports a ``--f forces projects to analyze in debug mode. This flag leaves in assertions and so typically results in fewer false positives. -Core Analysis Improvements -========================== - -- ... - -New Issues Found -================ - -- ... - -Python Binding Changes ----------------------- - -The following methods have been added: - -- ... - -Significant Known Problems -========================== Additional Information ====================== Modified: vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp ============================================================================== --- vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp Wed Aug 24 17:36:04 2016 (r304760) +++ vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp Wed Aug 24 17:36:20 2016 (r304761) @@ -2706,7 +2706,8 @@ Value *ScalarExprEmitter::EmitShl(const RHS = Builder.CreateIntCast(RHS, Ops.LHS->getType(), false, "sh_prom"); bool SanitizeBase = CGF.SanOpts.has(SanitizerKind::ShiftBase) && - Ops.Ty->hasSignedIntegerRepresentation(); + Ops.Ty->hasSignedIntegerRepresentation() && + !CGF.getLangOpts().isSignedOverflowDefined(); bool SanitizeExponent = CGF.SanOpts.has(SanitizerKind::ShiftExponent); // OpenCL 6.3j: shift values are effectively % word size of LHS. if (CGF.getLangOpts().OpenCL) Modified: vendor/clang/dist/lib/Driver/ToolChains.cpp ============================================================================== --- vendor/clang/dist/lib/Driver/ToolChains.cpp Wed Aug 24 17:36:04 2016 (r304760) +++ vendor/clang/dist/lib/Driver/ToolChains.cpp Wed Aug 24 17:36:20 2016 (r304761) @@ -474,21 +474,26 @@ void DarwinClang::AddLinkRuntimeLibArgs( else if (isMacosxVersionLT(10, 6)) CmdArgs.push_back("-lgcc_s.10.5"); - // For OS X, we thought we would only need a static runtime library when - // targeting 10.4, to provide versions of the static functions which were - // omitted from 10.4.dylib. + // Originally for OS X, we thought we would only need a static runtime + // library when targeting 10.4, to provide versions of the static functions + // which were omitted from 10.4.dylib. This led to the creation of the 10.4 + // builtins library. // // Unfortunately, that turned out to not be true, because Darwin system // headers can still use eprintf on i386, and it is not exported from // libSystem. Therefore, we still must provide a runtime library just for // the tiny tiny handful of projects that *might* use that symbol. - if (isMacosxVersionLT(10, 5)) { + // + // Then over time, we figured out it was useful to add more things to the + // runtime so we created libclang_rt.osx.a to provide new functions when + // deploying to old OS builds, and for a long time we had both eprintf and + // osx builtin libraries. Which just seems excessive. So with PR 28855, we + // are removing the eprintf library and expecting eprintf to be provided by + // the OS X builtins library. + if (isMacosxVersionLT(10, 5)) AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.10.4.a"); - } else { - if (getTriple().getArch() == llvm::Triple::x86) - AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.eprintf.a"); + else AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.osx.a"); - } } } Modified: vendor/clang/dist/lib/Sema/SemaExpr.cpp ============================================================================== --- vendor/clang/dist/lib/Sema/SemaExpr.cpp Wed Aug 24 17:36:04 2016 (r304760) +++ vendor/clang/dist/lib/Sema/SemaExpr.cpp Wed Aug 24 17:36:20 2016 (r304761) @@ -8567,7 +8567,7 @@ static void DiagnoseBadShiftValues(Sema& // If LHS does not have a signed type and non-negative value // then, the behavior is undefined. Warn about it. - if (Left.isNegative()) { + if (Left.isNegative() && !S.getLangOpts().isSignedOverflowDefined()) { S.DiagRuntimeBehavior(Loc, LHS.get(), S.PDiag(diag::warn_shift_lhs_negative) << LHS.get()->getSourceRange()); Added: vendor/clang/dist/test/CodeGen/wrapv-lshr-sanitize.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/test/CodeGen/wrapv-lshr-sanitize.c Wed Aug 24 17:36:20 2016 (r304761) @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -fsanitize=shift-base -emit-llvm %s -o - -triple x86_64-linux-gnu -fwrapv | FileCheck %s + +// CHECK-LABEL: @lsh_overflow +int lsh_overflow(int a, int b) { + // CHECK-NOT: br + // CHECK-NOT: call void @__ubsan_ + // CHECK-NOT: call void @llvm.trap + + // CHECK: %[[RET:.*]] = shl i32 + // CHECK-NEXT: ret i32 %[[RET]] + return a << b; +} Added: vendor/clang/dist/test/Sema/negative-shift-wrapv.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/test/Sema/negative-shift-wrapv.c Wed Aug 24 17:36:20 2016 (r304761) @@ -0,0 +1,9 @@ +// RUN: %clang_cc1 -Wall -ffreestanding -fsyntax-only -fwrapv -verify %s + +int test() { + int i; + i = -1 << 1; // no-warning + return i; +} + +// expected-no-diagnostics
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608241736.u7OHaKbd036178>