mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-11 13:46:13 +00:00
Add some helpful methods for dealing with switch instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11794 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e14ea0804a
commit
b4a482a098
@ -178,6 +178,36 @@ public:
|
||||
return cast<BasicBlock>(Operands[1].get());
|
||||
}
|
||||
|
||||
/// getNumCases - return the number of 'cases' in this switch instruction.
|
||||
/// Note that case #0 is always the default case.
|
||||
unsigned getNumCases() const {
|
||||
return Operands.size()/2;
|
||||
}
|
||||
|
||||
/// getCaseValue - Return the specified case value. Note that case #0, the
|
||||
/// default destination, does not have a case value.
|
||||
Constant *getCaseValue(unsigned i) {
|
||||
assert(i && i < getNumCases() && "Illegal case value to get!");
|
||||
return getSuccessorValue(i);
|
||||
}
|
||||
|
||||
/// getCaseValue - Return the specified case value. Note that case #0, the
|
||||
/// default destination, does not have a case value.
|
||||
const Constant *getCaseValue(unsigned i) const {
|
||||
assert(i && i < getNumCases() && "Illegal case value to get!");
|
||||
return getSuccessorValue(i);
|
||||
}
|
||||
|
||||
/// findCaseValue - Search all of the case values for the specified constant.
|
||||
/// If it is explicitly handled, return the case number of it, otherwise
|
||||
/// return 0 to indicate that it is handled by the default handler.
|
||||
unsigned findCaseValue(const Constant *C) const {
|
||||
for (unsigned i = 1, e = getNumCases(); i != e; ++i)
|
||||
if (getCaseValue(i) == C)
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// addCase - Add an entry to the switch instruction...
|
||||
///
|
||||
void addCase(Constant *OnVal, BasicBlock *Dest);
|
||||
|
Loading…
Reference in New Issue
Block a user