From owner-svn-src-projects@freebsd.org Wed Jan 27 22:48:55 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3429EA70014 for ; Wed, 27 Jan 2016 22:48:55 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EA44022D; Wed, 27 Jan 2016 22:48:54 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u0RMmr9L025287; Wed, 27 Jan 2016 22:48:53 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u0RMmqPF025275; Wed, 27 Jan 2016 22:48:52 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201601272248.u0RMmqPF025275@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 27 Jan 2016 22:48:52 +0000 (UTC) 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... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2016 22:48:55 -0000 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(Exact) || + !isa(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(MaxBECount) && + !isa(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 : 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 FrameLowering; std::unique_ptr 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(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(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 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"