Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Aug 2020 16:42:48 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r363970 - projects/clang1100-import/contrib/llvm-project/clang/include/clang/AST
Message-ID:  <202008061642.076Ggmvr065747@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Thu Aug  6 16:42:48 2020
New Revision: 363970
URL: https://svnweb.freebsd.org/changeset/base/363970

Log:
  Reapply r349876:
  
  Apply a workaround to be able to build clang 8.0.0 headers with clang
  3.4.1, which is still in the stable/10 branch.
  
  It looks like clang 3.4.1 implements static_asserts by instantiating a
  temporary static object, and if those are in an anonymous union, it
  results in "error: anonymous union can only contain non-static data
  members".
  
  To work around this implementation limitation, move the static_asserts
  in question out of the anonymous unions.
  
  This should make building the latest stable/11 from stable/10 possible
  again.
  
  Reported by:	Mike Tancsa <mike@sentex.net>

Modified:
  projects/clang1100-import/contrib/llvm-project/clang/include/clang/AST/DeclBase.h
  projects/clang1100-import/contrib/llvm-project/clang/include/clang/AST/Type.h

Modified: projects/clang1100-import/contrib/llvm-project/clang/include/clang/AST/DeclBase.h
==============================================================================
--- projects/clang1100-import/contrib/llvm-project/clang/include/clang/AST/DeclBase.h	Thu Aug  6 16:27:24 2020	(r363969)
+++ projects/clang1100-import/contrib/llvm-project/clang/include/clang/AST/DeclBase.h	Thu Aug  6 16:42:48 2020	(r363970)
@@ -1760,30 +1760,30 @@ class DeclContext { (protected)
     ObjCContainerDeclBitfields ObjCContainerDeclBits;
     LinkageSpecDeclBitfields LinkageSpecDeclBits;
     BlockDeclBitfields BlockDeclBits;
-
-    static_assert(sizeof(DeclContextBitfields) <= 8,
-                  "DeclContextBitfields is larger than 8 bytes!");
-    static_assert(sizeof(TagDeclBitfields) <= 8,
-                  "TagDeclBitfields is larger than 8 bytes!");
-    static_assert(sizeof(EnumDeclBitfields) <= 8,
-                  "EnumDeclBitfields is larger than 8 bytes!");
-    static_assert(sizeof(RecordDeclBitfields) <= 8,
-                  "RecordDeclBitfields is larger than 8 bytes!");
-    static_assert(sizeof(OMPDeclareReductionDeclBitfields) <= 8,
-                  "OMPDeclareReductionDeclBitfields is larger than 8 bytes!");
-    static_assert(sizeof(FunctionDeclBitfields) <= 8,
-                  "FunctionDeclBitfields is larger than 8 bytes!");
-    static_assert(sizeof(CXXConstructorDeclBitfields) <= 8,
-                  "CXXConstructorDeclBitfields is larger than 8 bytes!");
-    static_assert(sizeof(ObjCMethodDeclBitfields) <= 8,
-                  "ObjCMethodDeclBitfields is larger than 8 bytes!");
-    static_assert(sizeof(ObjCContainerDeclBitfields) <= 8,
-                  "ObjCContainerDeclBitfields is larger than 8 bytes!");
-    static_assert(sizeof(LinkageSpecDeclBitfields) <= 8,
-                  "LinkageSpecDeclBitfields is larger than 8 bytes!");
-    static_assert(sizeof(BlockDeclBitfields) <= 8,
-                  "BlockDeclBitfields is larger than 8 bytes!");
   };
+
+  static_assert(sizeof(DeclContextBitfields) <= 8,
+                "DeclContextBitfields is larger than 8 bytes!");
+  static_assert(sizeof(TagDeclBitfields) <= 8,
+                "TagDeclBitfields is larger than 8 bytes!");
+  static_assert(sizeof(EnumDeclBitfields) <= 8,
+                "EnumDeclBitfields is larger than 8 bytes!");
+  static_assert(sizeof(RecordDeclBitfields) <= 8,
+                "RecordDeclBitfields is larger than 8 bytes!");
+  static_assert(sizeof(OMPDeclareReductionDeclBitfields) <= 8,
+                "OMPDeclareReductionDeclBitfields is larger than 8 bytes!");
+  static_assert(sizeof(FunctionDeclBitfields) <= 8,
+                "FunctionDeclBitfields is larger than 8 bytes!");
+  static_assert(sizeof(CXXConstructorDeclBitfields) <= 8,
+                "CXXConstructorDeclBitfields is larger than 8 bytes!");
+  static_assert(sizeof(ObjCMethodDeclBitfields) <= 8,
+                "ObjCMethodDeclBitfields is larger than 8 bytes!");
+  static_assert(sizeof(ObjCContainerDeclBitfields) <= 8,
+                "ObjCContainerDeclBitfields is larger than 8 bytes!");
+  static_assert(sizeof(LinkageSpecDeclBitfields) <= 8,
+                "LinkageSpecDeclBitfields is larger than 8 bytes!");
+  static_assert(sizeof(BlockDeclBitfields) <= 8,
+                "BlockDeclBitfields is larger than 8 bytes!");
 
   /// FirstDecl - The first declaration stored within this declaration
   /// context.

Modified: projects/clang1100-import/contrib/llvm-project/clang/include/clang/AST/Type.h
==============================================================================
--- projects/clang1100-import/contrib/llvm-project/clang/include/clang/AST/Type.h	Thu Aug  6 16:27:24 2020	(r363969)
+++ projects/clang1100-import/contrib/llvm-project/clang/include/clang/AST/Type.h	Thu Aug  6 16:42:48 2020	(r363970)
@@ -1803,41 +1803,41 @@ class alignas(8) Type : public ExtQualsTypeCommonBase 
     DependentTemplateSpecializationTypeBitfields
       DependentTemplateSpecializationTypeBits;
     PackExpansionTypeBitfields PackExpansionTypeBits;
-
-    static_assert(sizeof(TypeBitfields) <= 8,
-                  "TypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(ArrayTypeBitfields) <= 8,
-                  "ArrayTypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(AttributedTypeBitfields) <= 8,
-                  "AttributedTypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(AutoTypeBitfields) <= 8,
-                  "AutoTypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(BuiltinTypeBitfields) <= 8,
-                  "BuiltinTypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(FunctionTypeBitfields) <= 8,
-                  "FunctionTypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(ObjCObjectTypeBitfields) <= 8,
-                  "ObjCObjectTypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(ReferenceTypeBitfields) <= 8,
-                  "ReferenceTypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(TypeWithKeywordBitfields) <= 8,
-                  "TypeWithKeywordBitfields is larger than 8 bytes!");
-    static_assert(sizeof(ElaboratedTypeBitfields) <= 8,
-                  "ElaboratedTypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(VectorTypeBitfields) <= 8,
-                  "VectorTypeBitfields is larger than 8 bytes!");
-    static_assert(sizeof(SubstTemplateTypeParmPackTypeBitfields) <= 8,
-                  "SubstTemplateTypeParmPackTypeBitfields is larger"
-                  " than 8 bytes!");
-    static_assert(sizeof(TemplateSpecializationTypeBitfields) <= 8,
-                  "TemplateSpecializationTypeBitfields is larger"
-                  " than 8 bytes!");
-    static_assert(sizeof(DependentTemplateSpecializationTypeBitfields) <= 8,
-                  "DependentTemplateSpecializationTypeBitfields is larger"
-                  " than 8 bytes!");
-    static_assert(sizeof(PackExpansionTypeBitfields) <= 8,
-                  "PackExpansionTypeBitfields is larger than 8 bytes");
   };
+
+  static_assert(sizeof(TypeBitfields) <= 8,
+		"TypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(ArrayTypeBitfields) <= 8,
+		"ArrayTypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(AttributedTypeBitfields) <= 8,
+		"AttributedTypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(AutoTypeBitfields) <= 8,
+		"AutoTypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(BuiltinTypeBitfields) <= 8,
+		"BuiltinTypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(FunctionTypeBitfields) <= 8,
+		"FunctionTypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(ObjCObjectTypeBitfields) <= 8,
+		"ObjCObjectTypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(ReferenceTypeBitfields) <= 8,
+		"ReferenceTypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(TypeWithKeywordBitfields) <= 8,
+		"TypeWithKeywordBitfields is larger than 8 bytes!");
+  static_assert(sizeof(ElaboratedTypeBitfields) <= 8,
+		"ElaboratedTypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(VectorTypeBitfields) <= 8,
+		"VectorTypeBitfields is larger than 8 bytes!");
+  static_assert(sizeof(SubstTemplateTypeParmPackTypeBitfields) <= 8,
+		"SubstTemplateTypeParmPackTypeBitfields is larger"
+		" than 8 bytes!");
+  static_assert(sizeof(TemplateSpecializationTypeBitfields) <= 8,
+		"TemplateSpecializationTypeBitfields is larger"
+		" than 8 bytes!");
+  static_assert(sizeof(DependentTemplateSpecializationTypeBitfields) <= 8,
+		"DependentTemplateSpecializationTypeBitfields is larger"
+		" than 8 bytes!");
+  static_assert(sizeof(PackExpansionTypeBitfields) <= 8,
+		"PackExpansionTypeBitfields is larger than 8 bytes");
 
 private:
   template <class T> friend class TypePropertyCache;



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