From 009bff223b01d3f1808d61f0ae19f7cd8bc31f73 Mon Sep 17 00:00:00 2001 From: Juergen Ributzka Date: Thu, 26 Jun 2014 23:39:52 +0000 Subject: [PATCH] [StackMaps] Enable patchpoint liveness analysis per default. llvm-svn: 211817 --- llvm/include/llvm/CodeGen/StackMapLivenessAnalysis.h | 8 ++++---- llvm/lib/CodeGen/Passes.cpp | 7 +------ llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp | 11 +++++++---- llvm/test/CodeGen/X86/stackmap-liveness.ll | 4 ++-- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/llvm/include/llvm/CodeGen/StackMapLivenessAnalysis.h b/llvm/include/llvm/CodeGen/StackMapLivenessAnalysis.h index 651ca6b..6f07546 100644 --- a/llvm/include/llvm/CodeGen/StackMapLivenessAnalysis.h +++ b/llvm/include/llvm/CodeGen/StackMapLivenessAnalysis.h @@ -26,10 +26,10 @@ namespace llvm { /// a function and attaches the register live-out information to a patchpoint /// intrinsic if present. /// -/// This is an optional pass that has to be explicitly enabled via the -/// -enable-patchpoint-liveness flag. The pass skips functions that don't have -/// any patchpoint intrinsics. The information provided by this pass is optional -/// and not required by the aformentioned intrinsic to function. +/// This pass can be disabled via the -enable-patchpoint-liveness=false flag. +/// The pass skips functions that don't have any patchpoint intrinsics. The +/// information provided by this pass is optional and not required by the +/// aformentioned intrinsic to function. class StackMapLiveness : public MachineFunctionPass { MachineFunction *MF; const TargetRegisterInfo *TRI; diff --git a/llvm/lib/CodeGen/Passes.cpp b/llvm/lib/CodeGen/Passes.cpp index bdcde10..4eec623 100644 --- a/llvm/lib/CodeGen/Passes.cpp +++ b/llvm/lib/CodeGen/Passes.cpp @@ -30,10 +30,6 @@ using namespace llvm; -namespace llvm { -extern cl::opt EnablePatchPointLiveness; -} - static cl::opt DisablePostRA("disable-post-ra", cl::Hidden, cl::desc("Disable Post Regalloc")); static cl::opt DisableBranchFold("disable-branch-fold", cl::Hidden, @@ -565,8 +561,7 @@ void TargetPassConfig::addMachinePasses() { if (addPreEmitPass()) printAndVerify("After PreEmit passes"); - if (EnablePatchPointLiveness) - addPass(&StackMapLivenessID); + addPass(&StackMapLivenessID); } /// Add passes that optimize machine instructions in SSA form. diff --git a/llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp b/llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp index 16a1bab..3ba502f 100644 --- a/llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp +++ b/llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp @@ -29,7 +29,8 @@ using namespace llvm; namespace llvm { cl::opt EnablePatchPointLiveness("enable-patchpoint-liveness", - cl::Hidden, cl::desc("Enable PatchPoint Liveness Analysis Pass")); + cl::Hidden, cl::init(true), + cl::desc("Enable PatchPoint Liveness Analysis Pass")); } STATISTIC(NumStackMapFuncVisited, "Number of functions visited"); @@ -60,6 +61,9 @@ void StackMapLiveness::getAnalysisUsage(AnalysisUsage &AU) const { /// Calculate the liveness information for the given machine function. bool StackMapLiveness::runOnMachineFunction(MachineFunction &_MF) { + if (!EnablePatchPointLiveness) + return false; + DEBUG(dbgs() << "********** COMPUTING STACKMAP LIVENESS: " << _MF.getName() << " **********\n"); MF = &_MF; @@ -67,7 +71,7 @@ bool StackMapLiveness::runOnMachineFunction(MachineFunction &_MF) { ++NumStackMapFuncVisited; // Skip this function if there are no patchpoints to process. - if (!(MF->getFrameInfo()->hasPatchPoint() && EnablePatchPointLiveness)) { + if (!MF->getFrameInfo()->hasPatchPoint()) { ++NumStackMapFuncSkipped; return false; } @@ -88,8 +92,7 @@ bool StackMapLiveness::calculateLiveness() { // set to an instruction if we encounter a patchpoint instruction. for (MachineBasicBlock::reverse_iterator I = MBBI->rbegin(), E = MBBI->rend(); I != E; ++I) { - int Opc = I->getOpcode(); - if (Opc == TargetOpcode::PATCHPOINT) { + if (I->getOpcode() == TargetOpcode::PATCHPOINT) { addLiveOutSetToMI(*I); HasChanged = true; HasStackMap = true; diff --git a/llvm/test/CodeGen/X86/stackmap-liveness.ll b/llvm/test/CodeGen/X86/stackmap-liveness.ll index 78450c7..897595d 100644 --- a/llvm/test/CodeGen/X86/stackmap-liveness.ll +++ b/llvm/test/CodeGen/X86/stackmap-liveness.ll @@ -1,5 +1,5 @@ -; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -disable-fp-elim | FileCheck %s -; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -disable-fp-elim -enable-patchpoint-liveness | FileCheck -check-prefix=PATCH %s +; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -disable-fp-elim -enable-patchpoint-liveness=false | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -disable-fp-elim | FileCheck -check-prefix=PATCH %s ; ; Note: Print verbose stackmaps using -debug-only=stackmaps. -- 2.7.4