Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Jan 2016 22:48:52 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r294960 - in projects/clang380-import: contrib/llvm/include/llvm/Analysis contrib/llvm/lib/Analysis contrib/llvm/lib/Target/AMDGPU contrib/llvm/lib/Target/X86 contrib/llvm/lib/Transform...
Message-ID:  <201601272248.u0RMmqPF025275@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Wed Jan 27 22:48:52 2016
New Revision: 294960
URL: https://svnweb.freebsd.org/changeset/base/294960

Log:
  Update llvm, clang and lldb to release_38 branch r258968.

Modified:
  projects/clang380-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h
  projects/clang380-import/contrib/llvm/lib/Analysis/DemandedBits.cpp
  projects/clang380-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
  projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.td
  projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
  projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
  projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
  projects/clang380-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
  projects/clang380-import/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
  projects/clang380-import/contrib/llvm/tools/clang/tools/driver/driver.cpp
  projects/clang380-import/lib/clang/include/clang/Basic/Version.inc
Directory Properties:
  projects/clang380-import/contrib/llvm/   (props changed)
  projects/clang380-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang380-import/contrib/llvm/tools/lldb/   (props changed)

Modified: projects/clang380-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h
==============================================================================
--- projects/clang380-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h	Wed Jan 27 22:48:52 2016	(r294960)
@@ -412,7 +412,11 @@ namespace llvm {
 
       /*implicit*/ ExitLimit(const SCEV *E) : Exact(E), Max(E) {}
 
-      ExitLimit(const SCEV *E, const SCEV *M) : Exact(E), Max(M) {}
+      ExitLimit(const SCEV *E, const SCEV *M) : Exact(E), Max(M) {
+        assert((isa<SCEVCouldNotCompute>(Exact) ||
+                !isa<SCEVCouldNotCompute>(Max)) &&
+               "Exact is not allowed to be less precise than Max");
+      }
 
       /// Test whether this ExitLimit contains any computed information, or
       /// whether it's all SCEVCouldNotCompute values.

Modified: projects/clang380-import/contrib/llvm/lib/Analysis/DemandedBits.cpp
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/Analysis/DemandedBits.cpp	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/lib/Analysis/DemandedBits.cpp	Wed Jan 27 22:48:52 2016	(r294960)
@@ -244,7 +244,7 @@ void DemandedBits::determineLiveOperandB
     break;
   case Instruction::ICmp:
     // Count the number of leading zeroes in each operand.
-    ComputeKnownBits(BitWidth, I, UserI->getOperand(1));
+    ComputeKnownBits(BitWidth, UserI->getOperand(0), UserI->getOperand(1));
     auto NumLeadingZeroes = std::min(KnownZero.countLeadingOnes(),
                                      KnownZero2.countLeadingOnes());
     AB = ~APInt::getHighBitsSet(BitWidth, NumLeadingZeroes);

Modified: projects/clang380-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp	Wed Jan 27 22:48:52 2016	(r294960)
@@ -5368,6 +5368,14 @@ ScalarEvolution::computeExitLimitFromCon
           BECount = EL0.Exact;
       }
 
+      // There are cases (e.g. PR26207) where computeExitLimitFromCond is able
+      // to be more aggressive when computing BECount than when computing
+      // MaxBECount.  In these cases it is possible for EL0.Exact and EL1.Exact
+      // to match, but for EL0.Max and EL1.Max to not.
+      if (isa<SCEVCouldNotCompute>(MaxBECount) &&
+          !isa<SCEVCouldNotCompute>(BECount))
+        MaxBECount = BECount;
+
       return ExitLimit(BECount, MaxBECount);
     }
     if (BO->getOpcode() == Instruction::Or) {

Modified: projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.td
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.td	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.td	Wed Jan 27 22:48:52 2016	(r294960)
@@ -138,6 +138,11 @@ def FeatureEnableHugeScratchBuffer : Sub
         "true",
         "Enable scratch buffer sizes greater than 128 GB">;
 
+def FeatureEnableSIScheduler : SubtargetFeature<"si-scheduler",
+        "EnableSIScheduler",
+        "true",
+        "Enable SI Machine Scheduler">;
+
 class SubtargetFeatureFetchLimit <string Value> :
                           SubtargetFeature <"fetch"#Value,
         "TexVTXClauseSize",

Modified: projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp	Wed Jan 27 22:48:52 2016	(r294960)
@@ -78,7 +78,7 @@ AMDGPUSubtarget::AMDGPUSubtarget(const T
       EnableVGPRSpilling(false), SGPRInitBug(false), IsGCN(false),
       GCN1Encoding(false), GCN3Encoding(false), CIInsts(false), LDSBankCount(0),
       IsaVersion(ISAVersion0_0_0), EnableHugeScratchBuffer(false),
-      FrameLowering(nullptr),
+      EnableSIScheduler(false), FrameLowering(nullptr),
       InstrItins(getInstrItineraryForCPU(GPU)), TargetTriple(TT) {
 
   initializeSubtargetDependencies(TT, GPU, FS);

Modified: projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h	Wed Jan 27 22:48:52 2016	(r294960)
@@ -90,6 +90,7 @@ private:
   int LDSBankCount;
   unsigned IsaVersion;
   bool EnableHugeScratchBuffer;
+  bool EnableSIScheduler;
 
   std::unique_ptr<AMDGPUFrameLowering> FrameLowering;
   std::unique_ptr<AMDGPUTargetLowering> TLInfo;
@@ -280,6 +281,10 @@ public:
     return EnableHugeScratchBuffer;
   }
 
+  bool enableSIScheduler() const {
+    return EnableSIScheduler;
+  }
+
   bool dumpCode() const {
     return DumpCode;
   }

Modified: projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp	Wed Jan 27 22:48:52 2016	(r294960)
@@ -147,6 +147,8 @@ public:
     const AMDGPUSubtarget &ST = *getAMDGPUTargetMachine().getSubtargetImpl();
     if (ST.getGeneration() <= AMDGPUSubtarget::NORTHERN_ISLANDS)
       return createR600MachineScheduler(C);
+    else if (ST.enableSIScheduler())
+      return createSIMachineScheduler(C);
     return nullptr;
   }
 

Modified: projects/clang380-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp	Wed Jan 27 22:48:52 2016	(r294960)
@@ -21880,7 +21880,8 @@ X86TargetLowering::EmitLoweredSelect(Mac
   if (LastCMOV == MI &&
       NextMIIt != BB->end() && NextMIIt->getOpcode() == MI->getOpcode() &&
       NextMIIt->getOperand(2).getReg() == MI->getOperand(2).getReg() &&
-      NextMIIt->getOperand(1).getReg() == MI->getOperand(0).getReg()) {
+      NextMIIt->getOperand(1).getReg() == MI->getOperand(0).getReg() &&
+      NextMIIt->getOperand(1).isKill()) {
     CascadedCMOV = &*NextMIIt;
   }
 

Modified: projects/clang380-import/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp
==============================================================================
--- projects/clang380-import/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp	Wed Jan 27 22:48:52 2016	(r294960)
@@ -494,6 +494,11 @@ void GCOVProfiler::emitProfileNotes() {
     // LTO, we'll generate the same .gcno files.
 
     auto *CU = cast<DICompileUnit>(CU_Nodes->getOperand(i));
+
+    // Skip module skeleton (and module) CUs.
+    if (CU->getDWOId())
+      continue;
+
     std::error_code EC;
     raw_fd_ostream out(mangleName(CU, "gcno"), EC, sys::fs::F_None);
     std::string EdgeDestinations;
@@ -853,6 +858,11 @@ Function *GCOVProfiler::insertCounterWri
   if (CU_Nodes) {
     for (unsigned i = 0, e = CU_Nodes->getNumOperands(); i != e; ++i) {
       auto *CU = cast<DICompileUnit>(CU_Nodes->getOperand(i));
+
+      // Skip module skeleton (and module) CUs.
+      if (CU->getDWOId())
+        continue;
+
       std::string FilenameGcda = mangleName(CU, "gcda");
       uint32_t CfgChecksum = FileChecksums.empty() ? 0 : FileChecksums[i];
       Builder.CreateCall(StartFile,

Modified: projects/clang380-import/contrib/llvm/tools/clang/tools/driver/driver.cpp
==============================================================================
--- projects/clang380-import/contrib/llvm/tools/clang/tools/driver/driver.cpp	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/contrib/llvm/tools/clang/tools/driver/driver.cpp	Wed Jan 27 22:48:52 2016	(r294960)
@@ -290,9 +290,9 @@ static void SetInstallDir(SmallVectorImp
   if (CanonicalPrefixes)
     llvm::sys::fs::make_absolute(InstalledPath);
 
-  InstalledPath = llvm::sys::path::parent_path(InstalledPath);
-  if (llvm::sys::fs::exists(InstalledPath.c_str()))
-    TheDriver.setInstalledDir(InstalledPath);
+  StringRef InstalledPathParent(llvm::sys::path::parent_path(InstalledPath));
+  if (llvm::sys::fs::exists(InstalledPathParent))
+    TheDriver.setInstalledDir(InstalledPathParent);
 }
 
 static int ExecuteCC1Tool(ArrayRef<const char *> argv, StringRef Tool) {

Modified: projects/clang380-import/lib/clang/include/clang/Basic/Version.inc
==============================================================================
--- projects/clang380-import/lib/clang/include/clang/Basic/Version.inc	Wed Jan 27 22:48:04 2016	(r294959)
+++ projects/clang380-import/lib/clang/include/clang/Basic/Version.inc	Wed Jan 27 22:48:52 2016	(r294960)
@@ -7,4 +7,4 @@
 
 #define	CLANG_VENDOR			"FreeBSD "
 
-#define	SVN_REVISION			"258549"
+#define	SVN_REVISION			"258968"



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