Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Feb 2015 20:57:59 +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: r279021 - in vendor/clang/dist: docs lib/CodeGen lib/Driver test/CodeGen
Message-ID:  <201502192057.t1JKvxFl092573@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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>_`
-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. 
+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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502192057.t1JKvxFl092573>