[JumpTables] Let targets decide which switch instructions are suitable

This commits the non-controversial part of https://reviews.llvm.org/D41029
(making the queries virtual). The PPC-specific portion of this will be
committed in a subsequent patch once some of the finer points are ironed out.

llvm-svn: 321182
This commit is contained in:
Nemanja Ivanovic 2017-12-20 15:44:32 +00:00
parent 3a934d6ab9
commit b55b0ac160
1 changed files with 3 additions and 3 deletions

View File

@ -824,8 +824,8 @@ public:
/// also combined within this function. Currently, the minimum size check is /// also combined within this function. Currently, the minimum size check is
/// performed in findJumpTable() in SelectionDAGBuiler and /// performed in findJumpTable() in SelectionDAGBuiler and
/// getEstimatedNumberOfCaseClusters() in BasicTTIImpl. /// getEstimatedNumberOfCaseClusters() in BasicTTIImpl.
bool isSuitableForJumpTable(const SwitchInst *SI, uint64_t NumCases, virtual bool isSuitableForJumpTable(const SwitchInst *SI, uint64_t NumCases,
uint64_t Range) const { uint64_t Range) const {
const bool OptForSize = SI->getParent()->getParent()->optForSize(); const bool OptForSize = SI->getParent()->getParent()->optForSize();
const unsigned MinDensity = getMinimumJumpTableDensity(OptForSize); const unsigned MinDensity = getMinimumJumpTableDensity(OptForSize);
const unsigned MaxJumpTableSize = const unsigned MaxJumpTableSize =
@ -1276,7 +1276,7 @@ public:
} }
/// Return lower limit for number of blocks in a jump table. /// Return lower limit for number of blocks in a jump table.
unsigned getMinimumJumpTableEntries() const; virtual unsigned getMinimumJumpTableEntries() const;
/// Return lower limit of the density in a jump table. /// Return lower limit of the density in a jump table.
unsigned getMinimumJumpTableDensity(bool OptForSize) const; unsigned getMinimumJumpTableDensity(bool OptForSize) const;