forked from OSchip/llvm-project
[CVP] Add a cl::opt for canonicalization of signed relational comparisons
This canonicalization breaks the ability to discard checks in some cases. Add a command line option to disable it. This option is on by default, so the change is NFC. See for details: https://reviews.llvm.org/D112895#3149487
This commit is contained in:
parent
f244166c47
commit
aa60d169ea
|
@ -52,6 +52,11 @@ using namespace llvm;
|
||||||
|
|
||||||
#define DEBUG_TYPE "correlated-value-propagation"
|
#define DEBUG_TYPE "correlated-value-propagation"
|
||||||
|
|
||||||
|
static cl::opt<bool> CanonicalizeICmpPredicatesToUnsigned(
|
||||||
|
"canonicalize-icmp-predicates-to-unsigned", cl::init(true), cl::Hidden,
|
||||||
|
cl::desc("Enables canonicalization of signed relational predicates to "
|
||||||
|
"unsigned (e.g. sgt => ugt)"));
|
||||||
|
|
||||||
STATISTIC(NumPhis, "Number of phis propagated");
|
STATISTIC(NumPhis, "Number of phis propagated");
|
||||||
STATISTIC(NumPhiCommon, "Number of phis deleted via common incoming value");
|
STATISTIC(NumPhiCommon, "Number of phis deleted via common incoming value");
|
||||||
STATISTIC(NumSelects, "Number of selects propagated");
|
STATISTIC(NumSelects, "Number of selects propagated");
|
||||||
|
@ -297,6 +302,9 @@ static bool processMemAccess(Instruction *I, LazyValueInfo *LVI) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool processICmp(ICmpInst *Cmp, LazyValueInfo *LVI) {
|
static bool processICmp(ICmpInst *Cmp, LazyValueInfo *LVI) {
|
||||||
|
if (!CanonicalizeICmpPredicatesToUnsigned)
|
||||||
|
return false;
|
||||||
|
|
||||||
// Only for signed relational comparisons of scalar integers.
|
// Only for signed relational comparisons of scalar integers.
|
||||||
if (Cmp->getType()->isVectorTy() ||
|
if (Cmp->getType()->isVectorTy() ||
|
||||||
!Cmp->getOperand(0)->getType()->isIntegerTy())
|
!Cmp->getOperand(0)->getType()->isIntegerTy())
|
||||||
|
|
Loading…
Reference in New Issue