#ifndef LLVM_CODEGEN_SWITCHLOWERINGUTILS_H
#define LLVM_CODEGEN_SWITCHLOWERINGUTILS_H
#include "llvm/ADT/SmallVector.h"
#include "llvm/CodeGen/ISDOpcodes.h"
#include "llvm/CodeGen/SelectionDAGNodes.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/Support/BranchProbability.h"
#include <vector>
namespace llvm {
class BlockFrequencyInfo;
class ConstantInt;
class FunctionLoweringInfo;
class MachineBasicBlock;
class ProfileSummaryInfo;
class TargetLowering;
class TargetMachine;
namespace SwitchCG {
enum CaseClusterKind { … };
struct CaseCluster { … };
CaseClusterVector;
CaseClusterIt;
void sortAndRangeify(CaseClusterVector &Clusters);
struct CaseBits { … };
CaseBitsVector;
struct CaseBlock { … };
struct JumpTable { … };
struct JumpTableHeader { … };
JumpTableBlock;
struct BitTestCase { … };
BitTestInfo;
struct BitTestBlock { … };
uint64_t getJumpTableRange(const CaseClusterVector &Clusters, unsigned First,
unsigned Last);
uint64_t getJumpTableNumCases(const SmallVectorImpl<unsigned> &TotalCases,
unsigned First, unsigned Last);
struct SwitchWorkListItem { … };
SwitchWorkList;
class SwitchLowering { … };
}
}
#endif