svn commit: r351711 - in vendor/clang/dist-release_90: include/clang/Frontend lib/Basic/Targets lib/Headers lib/Sema

Dimitry Andric dim at FreeBSD.org
Mon Sep 2 17:49:11 UTC 2019


Author: dim
Date: Mon Sep  2 17:49:08 2019
New Revision: 351711
URL: https://svnweb.freebsd.org/changeset/base/351711

Log:
  Vendor import of clang release_90 branch r370514:
  https://llvm.org/svn/llvm-project/cfe/branches/release_90@370514

Modified:
  vendor/clang/dist-release_90/include/clang/Frontend/LangStandards.def
  vendor/clang/dist-release_90/lib/Basic/Targets/RISCV.cpp
  vendor/clang/dist-release_90/lib/Basic/Targets/RISCV.h
  vendor/clang/dist-release_90/lib/Headers/opencl-c.h
  vendor/clang/dist-release_90/lib/Sema/SemaDeclCXX.cpp
  vendor/clang/dist-release_90/lib/Sema/SemaTemplate.cpp
  vendor/clang/dist-release_90/lib/Sema/SemaType.cpp

Modified: vendor/clang/dist-release_90/include/clang/Frontend/LangStandards.def
==============================================================================
--- vendor/clang/dist-release_90/include/clang/Frontend/LangStandards.def	Mon Sep  2 17:49:06 2019	(r351710)
+++ vendor/clang/dist-release_90/include/clang/Frontend/LangStandards.def	Mon Sep  2 17:49:08 2019	(r351711)
@@ -165,7 +165,7 @@ LANGSTANDARD(opencl12, "cl1.2",
 LANGSTANDARD(opencl20, "cl2.0",
              OpenCL, "OpenCL 2.0",
              LineComment | C99 | Digraphs | HexFloat | OpenCL)
-LANGSTANDARD(openclcpp, "c++",
+LANGSTANDARD(openclcpp, "clc++",
              OpenCL, "C++ for OpenCL",
              LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | CPlusPlus17 |
              Digraphs | HexFloat | OpenCL)

Modified: vendor/clang/dist-release_90/lib/Basic/Targets/RISCV.cpp
==============================================================================
--- vendor/clang/dist-release_90/lib/Basic/Targets/RISCV.cpp	Mon Sep  2 17:49:06 2019	(r351710)
+++ vendor/clang/dist-release_90/lib/Basic/Targets/RISCV.cpp	Mon Sep  2 17:49:08 2019	(r351711)
@@ -60,6 +60,10 @@ bool RISCVTargetInfo::validateAsmConstraint(
     // A floating-point register.
     Info.setAllowsRegister();
     return true;
+  case 'A':
+    // An address that is held in a general-purpose register.
+    Info.setAllowsMemory();
+    return true;
   }
 }
 

Modified: vendor/clang/dist-release_90/lib/Basic/Targets/RISCV.h
==============================================================================
--- vendor/clang/dist-release_90/lib/Basic/Targets/RISCV.h	Mon Sep  2 17:49:06 2019	(r351710)
+++ vendor/clang/dist-release_90/lib/Basic/Targets/RISCV.h	Mon Sep  2 17:49:08 2019	(r351711)
@@ -93,6 +93,13 @@ class LLVM_LIBRARY_VISIBILITY RISCV32TargetInfo : publ
     }
     return false;
   }
+
+  void setMaxAtomicWidth() override {
+    MaxAtomicPromoteWidth = 128;
+
+    if (HasA)
+      MaxAtomicInlineWidth = 32;
+  }
 };
 class LLVM_LIBRARY_VISIBILITY RISCV64TargetInfo : public RISCVTargetInfo {
 public:
@@ -109,6 +116,13 @@ class LLVM_LIBRARY_VISIBILITY RISCV64TargetInfo : publ
       return true;
     }
     return false;
+  }
+
+  void setMaxAtomicWidth() override {
+    MaxAtomicPromoteWidth = 128;
+
+    if (HasA)
+      MaxAtomicInlineWidth = 64;
   }
 };
 } // namespace targets

Modified: vendor/clang/dist-release_90/lib/Headers/opencl-c.h
==============================================================================
--- vendor/clang/dist-release_90/lib/Headers/opencl-c.h	Mon Sep  2 17:49:06 2019	(r351710)
+++ vendor/clang/dist-release_90/lib/Headers/opencl-c.h	Mon Sep  2 17:49:08 2019	(r351711)
@@ -15350,7 +15350,7 @@ ndrange_t __ovld ndrange_3D(const size_t[3]);
 ndrange_t __ovld ndrange_3D(const size_t[3], const size_t[3]);
 ndrange_t __ovld ndrange_3D(const size_t[3], const size_t[3], const size_t[3]);
 
-int __ovld enqueue_marker(queue_t, uint, const __private clk_event_t*, __private clk_event_t*);
+int __ovld enqueue_marker(queue_t, uint, const clk_event_t*, clk_event_t*);
 
 void __ovld retain_event(clk_event_t);
 

Modified: vendor/clang/dist-release_90/lib/Sema/SemaDeclCXX.cpp
==============================================================================
--- vendor/clang/dist-release_90/lib/Sema/SemaDeclCXX.cpp	Mon Sep  2 17:49:06 2019	(r351710)
+++ vendor/clang/dist-release_90/lib/Sema/SemaDeclCXX.cpp	Mon Sep  2 17:49:08 2019	(r351711)
@@ -1225,7 +1225,8 @@ static bool checkTupleLikeDecomposition(Sema &S,
     if (E.isInvalid())
       return true;
     RefVD->setInit(E.get());
-    RefVD->checkInitIsICE();
+    if (!E.get()->isValueDependent())
+      RefVD->checkInitIsICE();
 
     E = S.BuildDeclarationNameExpr(CXXScopeSpec(),
                                    DeclarationNameInfo(B->getDeclName(), Loc),

Modified: vendor/clang/dist-release_90/lib/Sema/SemaTemplate.cpp
==============================================================================
--- vendor/clang/dist-release_90/lib/Sema/SemaTemplate.cpp	Mon Sep  2 17:49:06 2019	(r351710)
+++ vendor/clang/dist-release_90/lib/Sema/SemaTemplate.cpp	Mon Sep  2 17:49:08 2019	(r351711)
@@ -4692,6 +4692,7 @@ SubstDefaultTemplateArgument(Sema &SemaRef,
   for (unsigned i = 0, e = Param->getDepth(); i != e; ++i)
     TemplateArgLists.addOuterTemplateArguments(None);
 
+  Sema::ContextRAII SavedContext(SemaRef, Template->getDeclContext());
   EnterExpressionEvaluationContext ConstantEvaluated(
       SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated);
   return SemaRef.SubstExpr(Param->getDefaultArgument(), TemplateArgLists);

Modified: vendor/clang/dist-release_90/lib/Sema/SemaType.cpp
==============================================================================
--- vendor/clang/dist-release_90/lib/Sema/SemaType.cpp	Mon Sep  2 17:49:06 2019	(r351710)
+++ vendor/clang/dist-release_90/lib/Sema/SemaType.cpp	Mon Sep  2 17:49:08 2019	(r351711)
@@ -7390,8 +7390,22 @@ static void deduceOpenCLImplicitAddrSpace(TypeProcessi
   bool IsPointee =
       ChunkIndex > 0 &&
       (D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::Pointer ||
-       D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::BlockPointer ||
-       D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::Reference);
+       D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::Reference ||
+       D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::BlockPointer);
+  // For pointers/references to arrays the next chunk is always an array
+  // followed by any number of parentheses.
+  if (!IsPointee && ChunkIndex > 1) {
+    auto AdjustedCI = ChunkIndex - 1;
+    if (D.getTypeObject(AdjustedCI).Kind == DeclaratorChunk::Array)
+      AdjustedCI--;
+    // Skip over all parentheses.
+    while (AdjustedCI > 0 &&
+           D.getTypeObject(AdjustedCI).Kind == DeclaratorChunk::Paren)
+      AdjustedCI--;
+    if (D.getTypeObject(AdjustedCI).Kind == DeclaratorChunk::Pointer ||
+        D.getTypeObject(AdjustedCI).Kind == DeclaratorChunk::Reference)
+      IsPointee = true;
+  }
   bool IsFuncReturnType =
       ChunkIndex > 0 &&
       D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::Function;


More information about the svn-src-all mailing list