svn commit: r356931 - in projects/clang1000-import: contrib/llvm-project/clang/lib/Basic/Targets contrib/llvm-project/clang/lib/Driver/ToolChains/Arch contrib/llvm-project/llvm/include/llvm/ADT con...

Dimitry Andric dim at FreeBSD.org
Mon Jan 20 20:27:54 UTC 2020


Author: dim
Date: Mon Jan 20 20:27:51 2020
New Revision: 356931
URL: https://svnweb.freebsd.org/changeset/base/356931

Log:
  Merge ^/head r356920 through r356930.

Modified:
  projects/clang1000-import/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp
  projects/clang1000-import/contrib/llvm-project/clang/lib/Basic/Targets/PPC.h
  projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/PPC.cpp
  projects/clang1000-import/contrib/llvm-project/llvm/include/llvm/ADT/Triple.h
  projects/clang1000-import/contrib/llvm-project/llvm/lib/Support/Triple.cpp
  projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
  projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.cpp
  projects/clang1000-import/lib/libc/stdlib/qsort.3
  projects/clang1000-import/share/misc/committers-ports.dot
  projects/clang1000-import/sys/kern/vfs_cache.c
  projects/clang1000-import/tools/build/mk/OptionalObsoleteFiles.inc
Directory Properties:
  projects/clang1000-import/   (props changed)
  projects/clang1000-import/contrib/llvm-project/   (props changed)
  projects/clang1000-import/contrib/llvm-project/clang/   (props changed)
  projects/clang1000-import/contrib/llvm-project/compiler-rt/   (props changed)
  projects/clang1000-import/contrib/llvm-project/libcxx/   (props changed)
  projects/clang1000-import/contrib/llvm-project/libunwind/   (props changed)
  projects/clang1000-import/contrib/llvm-project/lld/   (props changed)
  projects/clang1000-import/contrib/llvm-project/lldb/   (props changed)
  projects/clang1000-import/contrib/llvm-project/llvm/   (props changed)
  projects/clang1000-import/contrib/llvm-project/openmp/   (props changed)

Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp
==============================================================================
--- projects/clang1000-import/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp	Mon Jan 20 20:27:51 2020	(r356931)
@@ -157,6 +157,8 @@ void PPCTargetInfo::getTargetDefines(const LangOptions
     Builder.defineMacro("_ARCH_A2Q");
     Builder.defineMacro("_ARCH_QP");
   }
+  if (ArchDefs & ArchDefineE500)
+    Builder.defineMacro("__NO_LWSYNC__");
 
   if (getTriple().getVendor() == llvm::Triple::BGQ) {
     Builder.defineMacro("__bg__");
@@ -312,6 +314,11 @@ bool PPCTargetInfo::initFeatureMap(
                         .Case("pwr8", true)
                         .Default(false);
 
+  Features["spe"] = llvm::StringSwitch<bool>(CPU)
+                        .Case("8548", true)
+                        .Case("e500", true)
+                        .Default(false);
+
   if (!ppcUserFeaturesCheck(Diags, FeaturesVec))
     return false;
 
@@ -449,16 +456,16 @@ ArrayRef<TargetInfo::AddlRegName> PPCTargetInfo::getGC
 }
 
 static constexpr llvm::StringLiteral ValidCPUNames[] = {
-    {"generic"}, {"440"},         {"450"},     {"601"},    {"602"},
-    {"603"},     {"603e"},        {"603ev"},   {"604"},    {"604e"},
-    {"620"},     {"630"},         {"g3"},      {"7400"},   {"g4"},
-    {"7450"},    {"g4+"},         {"750"},     {"970"},    {"g5"},
-    {"a2"},      {"a2q"},         {"e500mc"},  {"e5500"},  {"power3"},
-    {"pwr3"},    {"power4"},      {"pwr4"},    {"power5"}, {"pwr5"},
-    {"power5x"}, {"pwr5x"},       {"power6"},  {"pwr6"},   {"power6x"},
-    {"pwr6x"},   {"power7"},      {"pwr7"},    {"power8"}, {"pwr8"},
-    {"power9"},  {"pwr9"},        {"powerpc"}, {"ppc"},    {"powerpc64"},
-    {"ppc64"},   {"powerpc64le"}, {"ppc64le"},
+    {"generic"},   {"440"},       {"450"},         {"601"},         {"602"},
+    {"603"},       {"603e"},      {"603ev"},       {"604"},         {"604e"},
+    {"620"},       {"630"},       {"g3"},          {"7400"},        {"g4"},
+    {"7450"},      {"g4+"},       {"750"},         {"8548"},        {"970"},
+    {"g5"},        {"a2"},        {"a2q"},         {"e500"},        {"e500mc"},
+    {"e5500"},     {"power3"},    {"pwr3"},        {"power4"},      {"pwr4"},
+    {"power5"},    {"pwr5"},      {"power5x"},     {"pwr5x"},       {"power6"},
+    {"pwr6"},      {"power6x"},   {"pwr6x"},       {"power7"},      {"pwr7"},
+    {"power8"},    {"pwr8"},      {"power9"},      {"pwr9"},        {"powerpc"},
+    {"ppc"},       {"powerpc64"}, {"ppc64"},       {"powerpc64le"}, {"ppc64le"},
 };
 
 bool PPCTargetInfo::isValidCPUName(StringRef Name) const {

Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Basic/Targets/PPC.h
==============================================================================
--- projects/clang1000-import/contrib/llvm-project/clang/lib/Basic/Targets/PPC.h	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/contrib/llvm-project/clang/lib/Basic/Targets/PPC.h	Mon Jan 20 20:27:51 2020	(r356931)
@@ -44,7 +44,8 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetInfo : public T
     ArchDefinePwr8 = 1 << 12,
     ArchDefinePwr9 = 1 << 13,
     ArchDefineA2 = 1 << 14,
-    ArchDefineA2q = 1 << 15
+    ArchDefineA2q = 1 << 15,
+    ArchDefineE500 = 1 << 16
   } ArchDefineTypes;
 
 
@@ -85,8 +86,7 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetInfo : public T
 
   // Note: GCC recognizes the following additional cpus:
   //  401, 403, 405, 405fp, 440fp, 464, 464fp, 476, 476fp, 505, 740, 801,
-  //  821, 823, 8540, 8548, e300c2, e300c3, e500mc64, e6500, 860, cell,
-  //  titan, rs64.
+  //  821, 823, 8540, e300c2, e300c3, e500mc64, e6500, 860, cell, titan, rs64.
   bool isValidCPUName(StringRef Name) const override;
   void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const override;
 
@@ -145,6 +145,7 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetInfo : public T
                      ArchDefinePwr9 | ArchDefinePwr8 | ArchDefinePwr7 |
                          ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 |
                          ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq)
+              .Cases("8548", "e500", ArchDefineE500)
               .Default(ArchDefineNone);
     }
     return CPUKnown;

Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/PPC.cpp
==============================================================================
--- projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/PPC.cpp	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/PPC.cpp	Mon Jan 20 20:27:51 2020	(r356931)
@@ -52,10 +52,12 @@ std::string ppc::getPPCTargetCPU(const ArgList &Args) 
         .Case("7450", "7450")
         .Case("G4+", "g4+")
         .Case("750", "750")
+        .Case("8548", "e500")
         .Case("970", "970")
         .Case("G5", "g5")
         .Case("a2", "a2")
         .Case("a2q", "a2q")
+        .Case("e500", "e500")
         .Case("e500mc", "e500mc")
         .Case("e5500", "e5500")
         .Case("power3", "pwr3")
@@ -100,6 +102,9 @@ const char *ppc::getPPCAsmModeForCPU(StringRef Name) {
 void ppc::getPPCTargetFeatures(const Driver &D, const llvm::Triple &Triple,
                                const ArgList &Args,
                                std::vector<StringRef> &Features) {
+  if (Triple.getSubArch() == llvm::Triple::PPCSubArch_spe)
+    Features.push_back("+spe");
+
   handleTargetFeaturesGroup(Args, Features, options::OPT_m_ppc_Features_Group);
 
   ppc::FloatABI FloatABI = ppc::getPPCFloatABI(D, Args);

Modified: projects/clang1000-import/contrib/llvm-project/llvm/include/llvm/ADT/Triple.h
==============================================================================
--- projects/clang1000-import/contrib/llvm-project/llvm/include/llvm/ADT/Triple.h	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/contrib/llvm-project/llvm/include/llvm/ADT/Triple.h	Mon Jan 20 20:27:51 2020	(r356931)
@@ -128,7 +128,9 @@ class Triple { (public)
     KalimbaSubArch_v4,
     KalimbaSubArch_v5,
 
-    MipsSubArch_r6
+    MipsSubArch_r6,
+
+    PPCSubArch_spe
   };
   enum VendorType {
     UnknownVendor,

Modified: projects/clang1000-import/contrib/llvm-project/llvm/lib/Support/Triple.cpp
==============================================================================
--- projects/clang1000-import/contrib/llvm-project/llvm/lib/Support/Triple.cpp	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/contrib/llvm-project/llvm/lib/Support/Triple.cpp	Mon Jan 20 20:27:51 2020	(r356931)
@@ -389,7 +389,7 @@ static Triple::ArchType parseArch(StringRef ArchName) 
     // FIXME: Do we need to support these?
     .Cases("i786", "i886", "i986", Triple::x86)
     .Cases("amd64", "x86_64", "x86_64h", Triple::x86_64)
-    .Cases("powerpc", "ppc", "ppc32", Triple::ppc)
+    .Cases("powerpc", "powerpcspe", "ppc", "ppc32", Triple::ppc)
     .Cases("powerpc64", "ppu", "ppc64", Triple::ppc64)
     .Cases("powerpc64le", "ppc64le", Triple::ppc64le)
     .Case("xscale", Triple::arm)
@@ -562,6 +562,9 @@ static Triple::SubArchType parseSubArch(StringRef SubA
   if (SubArchName.startswith("mips") &&
       (SubArchName.endswith("r6el") || SubArchName.endswith("r6")))
     return Triple::MipsSubArch_r6;
+
+  if (SubArchName == "powerpcspe")
+    return Triple::PPCSubArch_spe;
 
   StringRef ARMSubArch = ARM::getCanonicalArchName(SubArchName);
 

Modified: projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
==============================================================================
--- projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td	Mon Jan 20 20:27:51 2020	(r356931)
@@ -378,7 +378,7 @@ def : ProcessorModel<"g5", G5Model,
 def : ProcessorModel<"e500", PPCE500Model,
                   [DirectiveE500,
                    FeatureICBT, FeatureBookE,
-                   FeatureISEL, FeatureMFTB]>;
+                   FeatureISEL, FeatureMFTB, FeatureSPE]>;
 def : ProcessorModel<"e500mc", PPCE500mcModel,
                   [DirectiveE500mc,
                    FeatureSTFIWX, FeatureICBT, FeatureBookE,

Modified: projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.cpp
==============================================================================
--- projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.cpp	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.cpp	Mon Jan 20 20:27:51 2020	(r356931)
@@ -126,6 +126,8 @@ void PPCSubtarget::initSubtargetFeatures(StringRef CPU
     // If cross-compiling with -march=ppc64le without -mcpu
     if (TargetTriple.getArch() == Triple::ppc64le)
       CPUName = "ppc64le";
+    else if (TargetTriple.getSubArch() == Triple::PPCSubArch_spe)
+      CPUName = "e500";
     else
       CPUName = "generic";
   }

Modified: projects/clang1000-import/lib/libc/stdlib/qsort.3
==============================================================================
--- projects/clang1000-import/lib/libc/stdlib/qsort.3	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/lib/libc/stdlib/qsort.3	Mon Jan 20 20:27:51 2020	(r356931)
@@ -32,7 +32,7 @@
 .\"     @(#)qsort.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd January 14, 2020
+.Dd January 20, 2020
 .Dt QSORT 3
 .Os
 .Sh NAME
@@ -342,6 +342,13 @@ to replace
 with
 .Fn qsort_s
 to work around this problem.
+.Pp
+.Fn qsort_s
+is part of the
+.Em optional
+Annex K portion of
+.St -isoC-2011
+and may not be portable to other standards-conforming platforms.
 .Pp
 Previous versions of
 .Fn qsort

Modified: projects/clang1000-import/share/misc/committers-ports.dot
==============================================================================
--- projects/clang1000-import/share/misc/committers-ports.dot	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/share/misc/committers-ports.dot	Mon Jan 20 20:27:51 2020	(r356931)
@@ -193,6 +193,7 @@ meta [label="Koichiro Iwao\nmeta at FreeBSD.org\n2018/03/
 mezz [label="Jeremy Messenger\nmezz at FreeBSD.org\n2004/04/30"]
 mfechner [label="Matthias Fechner\nmfechner at FreeBSD.org\n2018/03/01"]
 mharo [label="Michael Haro\nmharo at FreeBSD.org\n1999/04/13"]
+mikael [label="Mikael Urankar\nmikael at FreeBSD.org\n2020/01/16"]
 milki [label="Jonathan Chu\nmilki at FreeBSD.org\n2013/12/15"]
 misha [label="Mikhail Pchelin\nmisha at FreeBSD.org\n2016/11/15"]
 miwi [label="Martin Wilke\nmiwi at FreeBSD.org\n2006/06/04"]
@@ -539,6 +540,8 @@ lwhsu -> yzlin
 
 maho -> stephen
 maho -> tota
+
+manu -> mikael
 
 marcus -> ahze
 marcus -> bland

Modified: projects/clang1000-import/sys/kern/vfs_cache.c
==============================================================================
--- projects/clang1000-import/sys/kern/vfs_cache.c	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/sys/kern/vfs_cache.c	Mon Jan 20 20:27:51 2020	(r356931)
@@ -1701,7 +1701,6 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, 
 	uint32_t hash;
 	int flag;
 	int len;
-	bool held_dvp;
 	u_long lnumcache;
 
 	CTR3(KTR_VFS, "cache_enter(%p, %p, %s)", dvp, vp, cnp->cn_nameptr);
@@ -1738,13 +1737,6 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, 
 	ndd = NULL;
 	ncp_ts = NULL;
 
-	held_dvp = false;
-	if (LIST_EMPTY(&dvp->v_cache_src) && flag != NCF_ISDOTDOT) {
-		vhold(dvp);
-		counter_u64_add(numcachehv, 1);
-		held_dvp = true;
-	}
-
 	/*
 	 * Calculate the hash key and setup as much of the new
 	 * namecache entry as possible before acquiring the lock.
@@ -1834,21 +1826,8 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, 
 
 	if (flag != NCF_ISDOTDOT) {
 		if (LIST_EMPTY(&dvp->v_cache_src)) {
-			if (!held_dvp) {
-				vhold(dvp);
-				counter_u64_add(numcachehv, 1);
-			}
-		} else {
-			if (held_dvp) {
-				/*
-				 * This will not take the interlock as someone
-				 * else already holds the vnode on account of
-				 * the namecache and we hold locks preventing
-				 * this from changing.
-				 */
-				vdrop(dvp);
-				counter_u64_add(numcachehv, -1);
-			}
+			vhold(dvp);
+			counter_u64_add(numcachehv, 1);
 		}
 		LIST_INSERT_HEAD(&dvp->v_cache_src, ncp, nc_src);
 	}
@@ -1883,10 +1862,6 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, 
 out_unlock_free:
 	cache_enter_unlock(&cel);
 	cache_free(ncp);
-	if (held_dvp) {
-		vdrop(dvp);
-		counter_u64_add(numcachehv, -1);
-	}
 	return;
 }
 

Modified: projects/clang1000-import/tools/build/mk/OptionalObsoleteFiles.inc
==============================================================================
--- projects/clang1000-import/tools/build/mk/OptionalObsoleteFiles.inc	Mon Jan 20 20:26:04 2020	(r356930)
+++ projects/clang1000-import/tools/build/mk/OptionalObsoleteFiles.inc	Mon Jan 20 20:27:51 2020	(r356931)
@@ -1141,58 +1141,15 @@ OLD_DIRS+=usr/tests/usr.bin/calendar
 .endif
 
 .if ${MK_CASPER} == no
-OLD_FILES+=etc/casper/system.dns
-OLD_FILES+=etc/casper/system.grp
-OLD_FILES+=etc/casper/system.pwd
-OLD_FILES+=etc/casper/system.random
-OLD_FILES+=etc/casper/system.sysctl
-OLD_DIRS+=etc/casper
-OLD_FILES+=etc/rc.d/casperd
-OLD_LIBS+=lib/libcapsicum.so.0
-OLD_LIBS+=lib/libcasper.so.0
-OLD_FILES+=libexec/casper/dns
-OLD_FILES+=libexec/casper/grp
-OLD_FILES+=libexec/casper/pwd
-OLD_FILES+=libexec/casper/random
-OLD_FILES+=libexec/casper/sysctl
-OLD_FILES+=sbin/casper
-OLD_FILES+=sbin/casperd
-OLD_FILES+=usr/include/libcapsicum.h
-OLD_FILES+=usr/include/libcapsicum_dns.h
-OLD_FILES+=usr/include/libcapsicum_grp.h
-OLD_FILES+=usr/include/libcapsicum_pwd.h
-OLD_FILES+=usr/include/libcapsicum_random.h
-OLD_FILES+=usr/include/libcapsicum_service.h
-OLD_FILES+=usr/include/libcapsicum_sysctl.h
-OLD_FILES+=usr/include/libcasper.h
-OLD_FILES+=usr/lib/libcapsicum.a
-OLD_FILES+=usr/lib/libcapsicum.so
-OLD_FILES+=usr/lib/libcapsicum_p.a
-OLD_FILES+=usr/lib/libcasper.a
-OLD_FILES+=usr/lib/libcasper.so
-OLD_FILES+=usr/lib/libcasper_p.a
-OLD_FILES+=usr/lib32/libcapsicum.a
-OLD_FILES+=usr/lib32/libcapsicum.so
-OLD_LIBS+=usr/lib32/libcapsicum.so.0
-OLD_FILES+=usr/lib32/libcapsicum_p.a
-OLD_FILES+=usr/lib32/libcasper.a
-OLD_FILES+=usr/lib32/libcasper.so
-OLD_LIBS+=usr/lib32/libcasper.so.0
-OLD_FILES+=usr/lib32/libcasper_p.a
-OLD_FILES+=usr/share/man/man3/cap_clone.3.gz
-OLD_FILES+=usr/share/man/man3/cap_close.3.gz
-OLD_FILES+=usr/share/man/man3/cap_init.3.gz
-OLD_FILES+=usr/share/man/man3/cap_limit_get.3.gz
-OLD_FILES+=usr/share/man/man3/cap_limit_set.3.gz
-OLD_FILES+=usr/share/man/man3/cap_recv_nvlist.3.gz
-OLD_FILES+=usr/share/man/man3/cap_send_nvlist.3.gz
-OLD_FILES+=usr/share/man/man3/cap_service_open.3.gz
-OLD_FILES+=usr/share/man/man3/cap_sock.3.gz
-OLD_FILES+=usr/share/man/man3/cap_unwrap.3.gz
-OLD_FILES+=usr/share/man/man3/cap_wrap.3.gz
-OLD_FILES+=usr/share/man/man3/cap_xfer_nvlist.3.gz
-OLD_FILES+=usr/share/man/man3/libcapsicum.3.gz
-OLD_FILES+=usr/share/man/man8/casperd.8.gz
+OLD_LIBS+=lib/libcasper.so.1
+OLD_LIBS+=lib/casper/libcap_dns.so.2
+OLD_LIBS+=lib/casper/libcap_fileargs.so.1
+OLD_LIBS+=lib/casper/libcap_grp.so.1
+OLD_LIBS+=lib/casper/libcap_net.so.1
+OLD_LIBS+=lib/casper/libcap_pwd.so.1
+OLD_LIBS+=lib/casper/libcap_sysctl.so.1
+OLD_LIBS+=lib/casper/libcap_sysctl.so.2
+OLD_LIBS+=lib/casper/libcap_syslog.so.1
 .endif
 
 .if ${MK_CCD} == no


More information about the svn-src-projects mailing list