mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
SCEV: Cast switched values to make -Wswitch more useful.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201170 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6a089db385
commit
193c0914e7
@ -135,7 +135,7 @@ void SCEV::dump() const {
|
||||
#endif
|
||||
|
||||
void SCEV::print(raw_ostream &OS) const {
|
||||
switch (getSCEVType()) {
|
||||
switch (static_cast<SCEVTypes>(getSCEVType())) {
|
||||
case scConstant:
|
||||
cast<SCEVConstant>(this)->getValue()->printAsOperand(OS, false);
|
||||
return;
|
||||
@ -240,13 +240,12 @@ void SCEV::print(raw_ostream &OS) const {
|
||||
case scCouldNotCompute:
|
||||
OS << "***COULDNOTCOMPUTE***";
|
||||
return;
|
||||
default: break;
|
||||
}
|
||||
llvm_unreachable("Unknown SCEV kind!");
|
||||
}
|
||||
|
||||
Type *SCEV::getType() const {
|
||||
switch (getSCEVType()) {
|
||||
switch (static_cast<SCEVTypes>(getSCEVType())) {
|
||||
case scConstant:
|
||||
return cast<SCEVConstant>(this)->getType();
|
||||
case scTruncate:
|
||||
@ -266,9 +265,8 @@ Type *SCEV::getType() const {
|
||||
return cast<SCEVUnknown>(this)->getType();
|
||||
case scCouldNotCompute:
|
||||
llvm_unreachable("Attempt to use a SCEVCouldNotCompute object!");
|
||||
default:
|
||||
llvm_unreachable("Unknown SCEV kind!");
|
||||
}
|
||||
llvm_unreachable("Unknown SCEV kind!");
|
||||
}
|
||||
|
||||
bool SCEV::isZero() const {
|
||||
@ -481,7 +479,7 @@ namespace {
|
||||
// Aside from the getSCEVType() ordering, the particular ordering
|
||||
// isn't very important except that it's beneficial to be consistent,
|
||||
// so that (a + b) and (b + a) don't end up as different expressions.
|
||||
switch (LType) {
|
||||
switch (static_cast<SCEVTypes>(LType)) {
|
||||
case scUnknown: {
|
||||
const SCEVUnknown *LU = cast<SCEVUnknown>(LHS);
|
||||
const SCEVUnknown *RU = cast<SCEVUnknown>(RHS);
|
||||
@ -618,9 +616,10 @@ namespace {
|
||||
return compare(LC->getOperand(), RC->getOperand());
|
||||
}
|
||||
|
||||
default:
|
||||
llvm_unreachable("Unknown SCEV kind!");
|
||||
case scCouldNotCompute:
|
||||
llvm_unreachable("Attempt to use a SCEVCouldNotCompute object!");
|
||||
}
|
||||
llvm_unreachable("Unknown SCEV kind!");
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -2784,7 +2783,7 @@ namespace {
|
||||
bool FindOne;
|
||||
FindInvalidSCEVUnknown() { FindOne = false; }
|
||||
bool follow(const SCEV *S) {
|
||||
switch (S->getSCEVType()) {
|
||||
switch (static_cast<SCEVTypes>(S->getSCEVType())) {
|
||||
case scConstant:
|
||||
return false;
|
||||
case scUnknown:
|
||||
@ -5209,8 +5208,7 @@ const SCEV *ScalarEvolution::getSCEVAtScope(const SCEV *V, const Loop *L) {
|
||||
/// SCEVConstant, because SCEVConstant is restricted to ConstantInt.
|
||||
/// Returns NULL if the SCEV isn't representable as a Constant.
|
||||
static Constant *BuildConstantFromSCEV(const SCEV *V) {
|
||||
switch (V->getSCEVType()) {
|
||||
default: // TODO: smax, umax.
|
||||
switch (static_cast<SCEVTypes>(V->getSCEVType())) {
|
||||
case scCouldNotCompute:
|
||||
case scAddRecExpr:
|
||||
break;
|
||||
@ -5297,6 +5295,9 @@ static Constant *BuildConstantFromSCEV(const SCEV *V) {
|
||||
return ConstantExpr::getUDiv(LHS, RHS);
|
||||
break;
|
||||
}
|
||||
case scSMaxExpr:
|
||||
case scUMaxExpr:
|
||||
break; // TODO: smax, umax.
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -7534,7 +7535,7 @@ ScalarEvolution::getLoopDisposition(const SCEV *S, const Loop *L) {
|
||||
|
||||
ScalarEvolution::LoopDisposition
|
||||
ScalarEvolution::computeLoopDisposition(const SCEV *S, const Loop *L) {
|
||||
switch (S->getSCEVType()) {
|
||||
switch (static_cast<SCEVTypes>(S->getSCEVType())) {
|
||||
case scConstant:
|
||||
return LoopInvariant;
|
||||
case scTruncate:
|
||||
@ -7607,8 +7608,8 @@ ScalarEvolution::computeLoopDisposition(const SCEV *S, const Loop *L) {
|
||||
return LoopInvariant;
|
||||
case scCouldNotCompute:
|
||||
llvm_unreachable("Attempt to use a SCEVCouldNotCompute object!");
|
||||
default: llvm_unreachable("Unknown SCEV kind!");
|
||||
}
|
||||
llvm_unreachable("Unknown SCEV kind!");
|
||||
}
|
||||
|
||||
bool ScalarEvolution::isLoopInvariant(const SCEV *S, const Loop *L) {
|
||||
@ -7640,7 +7641,7 @@ ScalarEvolution::getBlockDisposition(const SCEV *S, const BasicBlock *BB) {
|
||||
|
||||
ScalarEvolution::BlockDisposition
|
||||
ScalarEvolution::computeBlockDisposition(const SCEV *S, const BasicBlock *BB) {
|
||||
switch (S->getSCEVType()) {
|
||||
switch (static_cast<SCEVTypes>(S->getSCEVType())) {
|
||||
case scConstant:
|
||||
return ProperlyDominatesBlock;
|
||||
case scTruncate:
|
||||
@ -7697,9 +7698,8 @@ ScalarEvolution::computeBlockDisposition(const SCEV *S, const BasicBlock *BB) {
|
||||
return ProperlyDominatesBlock;
|
||||
case scCouldNotCompute:
|
||||
llvm_unreachable("Attempt to use a SCEVCouldNotCompute object!");
|
||||
default:
|
||||
llvm_unreachable("Unknown SCEV kind!");
|
||||
}
|
||||
llvm_unreachable("Unknown SCEV kind!");
|
||||
}
|
||||
|
||||
bool ScalarEvolution::dominates(const SCEV *S, const BasicBlock *BB) {
|
||||
|
Loading…
Reference in New Issue
Block a user