svn commit: r279021 - in vendor/clang/dist: docs lib/CodeGen lib/Driver test/CodeGen
Dimitry Andric
dim at FreeBSD.org
Thu Feb 19 20:58:00 UTC 2015
Author: dim
Date: Thu Feb 19 20:57:58 2015
New Revision: 279021
URL: https://svnweb.freebsd.org/changeset/base/279021
Log:
Vendor import of clang RELEASE_360/rc4 tag r229772 (effectively, 3.6.0 RC4):
https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_360/rc4@229772
Modified:
vendor/clang/dist/docs/ReleaseNotes.rst
vendor/clang/dist/lib/CodeGen/TargetInfo.cpp
vendor/clang/dist/lib/Driver/ToolChains.cpp
vendor/clang/dist/test/CodeGen/x86_64-arguments.c
Modified: vendor/clang/dist/docs/ReleaseNotes.rst
==============================================================================
--- vendor/clang/dist/docs/ReleaseNotes.rst Thu Feb 19 20:57:03 2015 (r279020)
+++ vendor/clang/dist/docs/ReleaseNotes.rst Thu Feb 19 20:57:58 2015 (r279021)
@@ -1,6 +1,6 @@
-=====================================
-Clang 3.6 (In-Progress) Release Notes
-=====================================
+=======================
+Clang 3.6 Release Notes
+=======================
.. contents::
:local:
@@ -8,12 +8,6 @@ Clang 3.6 (In-Progress) Release Notes
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 @@ frontend, part of the LLVM Compiler Infr
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 @@ 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.6?
========================
@@ -163,15 +152,15 @@ OpenCL C Language Changes in Clang
OpenMP Language Changes in Clang
--------------------------------
-Clang 3.6 contains codegen for many individual pragmas for OpenMP but combinations are not completed as yet.
-We plan to continue codegen code drop aiming for completion for 3.7. Please see this link for up-to-date
-`status <https://github.com/clang-omp/clang/wiki/Status-of-supported-OpenMP-constructs>_`
-LLVMs 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.
+Clang 3.6 contains codegen for many individual OpenMP pragmas, but combinations are not completed as 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.
Internal API Changes
--------------------
Modified: vendor/clang/dist/lib/CodeGen/TargetInfo.cpp
==============================================================================
--- vendor/clang/dist/lib/CodeGen/TargetInfo.cpp Thu Feb 19 20:57:03 2015 (r279020)
+++ vendor/clang/dist/lib/CodeGen/TargetInfo.cpp Thu Feb 19 20:57:58 2015 (r279021)
@@ -2134,19 +2134,15 @@ ABIArgInfo X86_64ABIInfo::getIndirectRes
return ABIArgInfo::getIndirect(Align);
}
-/// GetByteVectorType - The ABI specifies that a value should be passed in an
-/// full vector XMM/YMM register. Pick an LLVM IR type that will be passed as a
-/// vector register.
+/// The ABI specifies that a value should be passed in a full vector XMM/YMM
+/// register. Pick an LLVM IR type that will be passed as a vector register.
llvm::Type *X86_64ABIInfo::GetByteVectorType(QualType Ty) const {
- llvm::Type *IRType = CGT.ConvertType(Ty);
+ // Wrapper structs/arrays that only contain vectors are passed just like
+ // vectors; strip them off if present.
+ if (const Type *InnerTy = isSingleElementStruct(Ty, getContext()))
+ Ty = QualType(InnerTy, 0);
- // Wrapper structs that just contain vectors are passed just like vectors,
- // strip them off if present.
- llvm::StructType *STy = dyn_cast<llvm::StructType>(IRType);
- while (STy && STy->getNumElements() == 1) {
- IRType = STy->getElementType(0);
- STy = dyn_cast<llvm::StructType>(IRType);
- }
+ llvm::Type *IRType = CGT.ConvertType(Ty);
// If the preferred type is a 16-byte vector, prefer to pass it.
if (llvm::VectorType *VT = dyn_cast<llvm::VectorType>(IRType)){
Modified: vendor/clang/dist/lib/Driver/ToolChains.cpp
==============================================================================
--- vendor/clang/dist/lib/Driver/ToolChains.cpp Thu Feb 19 20:57:03 2015 (r279020)
+++ vendor/clang/dist/lib/Driver/ToolChains.cpp Thu Feb 19 20:57:58 2015 (r279021)
@@ -3154,7 +3154,8 @@ void Linux::AddClangSystemIncludeArgs(co
SmallVector<StringRef, 5> dirs;
CIncludeDirs.split(dirs, ":");
for (StringRef dir : dirs) {
- StringRef Prefix = llvm::sys::path::is_absolute(dir) ? SysRoot : "";
+ StringRef Prefix =
+ llvm::sys::path::is_absolute(dir) ? StringRef(SysRoot) : "";
addExternCSystemInclude(DriverArgs, CC1Args, Prefix + dir);
}
return;
Modified: vendor/clang/dist/test/CodeGen/x86_64-arguments.c
==============================================================================
--- vendor/clang/dist/test/CodeGen/x86_64-arguments.c Thu Feb 19 20:57:03 2015 (r279020)
+++ vendor/clang/dist/test/CodeGen/x86_64-arguments.c Thu Feb 19 20:57:58 2015 (r279021)
@@ -184,6 +184,28 @@ struct v4f32wrapper f27(struct v4f32wrap
return X;
}
+// PR22563 - We should unwrap simple structs and arrays to pass
+// and return them in the appropriate vector registers if possible.
+
+typedef float v8f32 __attribute__((__vector_size__(32)));
+struct v8f32wrapper {
+ v8f32 v;
+};
+
+struct v8f32wrapper f27a(struct v8f32wrapper X) {
+ // AVX-LABEL: define <8 x float> @f27a(<8 x float> %X.coerce)
+ return X;
+}
+
+struct v8f32wrapper_wrapper {
+ v8f32 v[1];
+};
+
+struct v8f32wrapper_wrapper f27b(struct v8f32wrapper_wrapper X) {
+ // AVX-LABEL: define <8 x float> @f27b(<8 x float> %X.coerce)
+ return X;
+}
+
// rdar://5711709
struct f28c {
double x;
More information about the svn-src-vendor
mailing list