simplify some code using new predicates

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45689 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2008-01-07 05:40:58 +00:00
parent 13cea0bcef
commit f86e1df877
2 changed files with 21 additions and 24 deletions

View File

@@ -26,26 +26,24 @@
#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/STLExtras.h"
using namespace llvm; using namespace llvm;
namespace { // Hidden options for help debugging.
// Hidden options for help debugging. static cl::opt<int> IfCvtFnStart("ifcvt-fn-start", cl::init(-1), cl::Hidden);
cl::opt<int> IfCvtFnStart("ifcvt-fn-start", cl::init(-1), cl::Hidden); static cl::opt<int> IfCvtFnStop("ifcvt-fn-stop", cl::init(-1), cl::Hidden);
cl::opt<int> IfCvtFnStop("ifcvt-fn-stop", cl::init(-1), cl::Hidden); static cl::opt<int> IfCvtLimit("ifcvt-limit", cl::init(-1), cl::Hidden);
cl::opt<int> IfCvtLimit("ifcvt-limit", cl::init(-1), cl::Hidden); static cl::opt<bool> DisableSimple("disable-ifcvt-simple",
cl::opt<bool> DisableSimple("disable-ifcvt-simple", cl::init(false), cl::Hidden);
cl::init(false), cl::Hidden); static cl::opt<bool> DisableSimpleF("disable-ifcvt-simple-false",
cl::opt<bool> DisableSimpleF("disable-ifcvt-simple-false", cl::init(false), cl::Hidden);
cl::init(false), cl::Hidden); static cl::opt<bool> DisableTriangle("disable-ifcvt-triangle",
cl::opt<bool> DisableTriangle("disable-ifcvt-triangle", cl::init(false), cl::Hidden);
cl::init(false), cl::Hidden); static cl::opt<bool> DisableTriangleR("disable-ifcvt-triangle-rev",
cl::opt<bool> DisableTriangleR("disable-ifcvt-triangle-rev", cl::init(false), cl::Hidden);
cl::init(false), cl::Hidden); static cl::opt<bool> DisableTriangleF("disable-ifcvt-triangle-false",
cl::opt<bool> DisableTriangleF("disable-ifcvt-triangle-false", cl::init(false), cl::Hidden);
cl::init(false), cl::Hidden); static cl::opt<bool> DisableTriangleFR("disable-ifcvt-triangle-false-rev",
cl::opt<bool> DisableTriangleFR("disable-ifcvt-triangle-false-rev", cl::init(false), cl::Hidden);
cl::init(false), cl::Hidden); static cl::opt<bool> DisableDiamond("disable-ifcvt-diamond",
cl::opt<bool> DisableDiamond("disable-ifcvt-diamond", cl::init(false), cl::Hidden);
cl::init(false), cl::Hidden);
}
STATISTIC(NumSimple, "Number of simple if-conversions performed"); STATISTIC(NumSimple, "Number of simple if-conversions performed");
STATISTIC(NumSimpleFalse, "Number of simple (F) if-conversions performed"); STATISTIC(NumSimpleFalse, "Number of simple (F) if-conversions performed");
@@ -555,7 +553,7 @@ void IfConverter::ScanInstructions(BBInfo &BBI) {
BBI.CannotBeCopied = true; BBI.CannotBeCopied = true;
bool isPredicated = TII->isPredicated(I); bool isPredicated = TII->isPredicated(I);
bool isCondBr = BBI.IsBrAnalyzable && TID->isBranch() && !TID->isBarrier(); bool isCondBr = BBI.IsBrAnalyzable && TID->isConditionalBranch();
if (!isCondBr) { if (!isCondBr) {
if (!isPredicated) if (!isPredicated)

View File

@@ -616,8 +616,7 @@ bool LiveIntervals::isReMaterializable(const LiveInterval &li,
isLoad = false; isLoad = false;
const TargetInstrDescriptor *TID = MI->getDesc(); const TargetInstrDescriptor *TID = MI->getDesc();
if ((TID->Flags & M_IMPLICIT_DEF_FLAG) || if (TID->isImplicitDef() || tii_->isTriviallyReMaterializable(MI)) {
tii_->isTriviallyReMaterializable(MI)) {
isLoad = TID->isSimpleLoad(); isLoad = TID->isSimpleLoad();
return true; return true;
} }
@@ -682,7 +681,7 @@ bool LiveIntervals::tryFoldMemoryOperand(MachineInstr* &MI,
unsigned MRInfo = 0; unsigned MRInfo = 0;
const TargetInstrDescriptor *TID = MI->getDesc(); const TargetInstrDescriptor *TID = MI->getDesc();
// If it is an implicit def instruction, just delete it. // If it is an implicit def instruction, just delete it.
if (TID->Flags & M_IMPLICIT_DEF_FLAG) { if (TID->isImplicitDef()) {
RemoveMachineInstrFromMaps(MI); RemoveMachineInstrFromMaps(MI);
vrm.RemoveMachineInstrFromMaps(MI); vrm.RemoveMachineInstrFromMaps(MI);
MI->eraseFromParent(); MI->eraseFromParent();