
//===----------------------------------------------------------------------===//
/// ImmutablePass class - This class is used to provide information that does
/// not need to be run. This is useful for things like target information and
/// "basic" versions of AnalysisGroups.
///
class ImmutablePass : public ModulePass {
public:
/// initializePass - This method may be overriden by immutable passes to allow
/// them to perform various initialization actions they require. This is
/// primarily because an ImmutablePass can "require" another ImmutablePass,
/// and if it does, the overloaded version of initializePass may get access to
/// these passes with getAnalysis<>.
///
virtual void initializePass();
virtual ImmutablePass *getAsImmutablePass() { return this; }
/// ImmutablePasses are never run.
///
bool runOnModule(Module &) { return false; }
explicit ImmutablePass(char &pid)
: ModulePass(pid) {}
// Force out-of-line virtual method.
virtual ~ImmutablePass();
};
这个类里有现实的使用方式 但是这个基本是llvm 本身需求的 我们开发过程中很少会使用
MachineModuleInfo.cpp 里面
class MachineModuleInfo : public ImmutablePass