Update llvm, clang and lldb to release_38 branch r258968.
This commit is contained in:
commit
21cf1fd41c
@ -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.
|
||||
|
@ -244,7 +244,7 @@ void DemandedBits::determineLiveOperandBits(
|
||||
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);
|
||||
|
@ -5368,6 +5368,14 @@ ScalarEvolution::computeExitLimitFromCond(const Loop *L,
|
||||
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) {
|
||||
|
@ -138,6 +138,11 @@ def FeatureEnableHugeScratchBuffer : SubtargetFeature<"huge-scratch-buffer",
|
||||
"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",
|
||||
|
@ -78,7 +78,7 @@ AMDGPUSubtarget::AMDGPUSubtarget(const Triple &TT, StringRef GPU, StringRef FS,
|
||||
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);
|
||||
|
@ -90,6 +90,7 @@ class AMDGPUSubtarget : public AMDGPUGenSubtargetInfo {
|
||||
int LDSBankCount;
|
||||
unsigned IsaVersion;
|
||||
bool EnableHugeScratchBuffer;
|
||||
bool EnableSIScheduler;
|
||||
|
||||
std::unique_ptr<AMDGPUFrameLowering> FrameLowering;
|
||||
std::unique_ptr<AMDGPUTargetLowering> TLInfo;
|
||||
@ -280,6 +281,10 @@ class AMDGPUSubtarget : public AMDGPUGenSubtargetInfo {
|
||||
return EnableHugeScratchBuffer;
|
||||
}
|
||||
|
||||
bool enableSIScheduler() const {
|
||||
return EnableSIScheduler;
|
||||
}
|
||||
|
||||
bool dumpCode() const {
|
||||
return DumpCode;
|
||||
}
|
||||
|
@ -147,6 +147,8 @@ class AMDGPUPassConfig : public TargetPassConfig {
|
||||
const AMDGPUSubtarget &ST = *getAMDGPUTargetMachine().getSubtargetImpl();
|
||||
if (ST.getGeneration() <= AMDGPUSubtarget::NORTHERN_ISLANDS)
|
||||
return createR600MachineScheduler(C);
|
||||
else if (ST.enableSIScheduler())
|
||||
return createSIMachineScheduler(C);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -21880,7 +21880,8 @@ X86TargetLowering::EmitLoweredSelect(MachineInstr *MI,
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -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::insertCounterWriteout(
|
||||
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,
|
||||
|
@ -290,9 +290,9 @@ static void SetInstallDir(SmallVectorImpl<const char *> &argv,
|
||||
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) {
|
||||
|
@ -7,4 +7,4 @@
|
||||
|
||||
#define CLANG_VENDOR "FreeBSD "
|
||||
|
||||
#define SVN_REVISION "258549"
|
||||
#define SVN_REVISION "258968"
|
||||
|
Loading…
Reference in New Issue
Block a user