X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAnalysis%2FFindUsedTypes.h;h=b22cb88135133f2cd6b1bb0d40e66f3b29a860d4;hb=2905440bdd9627f202398137aab5ded38f681fc9;hp=4888dda39359cf5cdc08f56e43f3d573c14fb3e1;hpb=5d549083e2dc55cc1aa035f1069480d052717061;p=oota-llvm.git diff --git a/include/llvm/Analysis/FindUsedTypes.h b/include/llvm/Analysis/FindUsedTypes.h index 4888dda3935..b22cb881351 100644 --- a/include/llvm/Analysis/FindUsedTypes.h +++ b/include/llvm/Analysis/FindUsedTypes.h @@ -1,4 +1,11 @@ -//===- llvm/Analysis/FindUsedTypes.h - Find all Types in use -----*- C++ -*--=// +//===- llvm/Analysis/FindUsedTypes.h - Find all Types in use ----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// // // This pass is used to seek out all of the types in use by the program. // @@ -7,47 +14,53 @@ #ifndef LLVM_ANALYSIS_FINDUSEDTYPES_H #define LLVM_ANALYSIS_FINDUSEDTYPES_H +#include "llvm/ADT/SetVector.h" #include "llvm/Pass.h" -#include -class SymbolTable; + +namespace llvm { + class Type; +class Value; -class FindUsedTypes : public Pass { - std::set UsedTypes; +class FindUsedTypes : public ModulePass { + SetVector UsedTypes; public: - // FindUsedTypes ctor - This pass can optionally include types that are - // referenced only in symbol tables, but the default is not to. - // - static AnalysisID ID; - - // getTypes - After the pass has been run, return the set containing all of - // the types used in the module. - // - const std::set &getTypes() const { return UsedTypes; } - - // Print the types found in the module. If the optional Module parameter is - // passed in, then the types are printed symbolically if possible, using the - // symbol table from the module. - // - void printTypes(std::ostream &o, const Module *M = 0) const; + static char ID; // Pass identification, replacement for typeid + FindUsedTypes() : ModulePass(ID) { + initializeFindUsedTypesPass(*PassRegistry::getPassRegistry()); + } + + /// getTypes - After the pass has been run, return the set containing all of + /// the types used in the module. + /// + const SetVector &getTypes() const { return UsedTypes; } + + /// Print the types found in the module. If the optional Module parameter is + /// passed in, then the types are printed symbolically if possible, using the + /// symbol table from the module. + /// + void print(raw_ostream &o, const Module *M) const; private: - // IncorporateType - Incorporate one type and all of its subtypes into the - // collection of used types. - // - void IncorporateType(const Type *Ty); + /// IncorporateType - Incorporate one type and all of its subtypes into the + /// collection of used types. + /// + void IncorporateType(Type *Ty); + + /// IncorporateValue - Incorporate all of the types used by this value. + /// + void IncorporateValue(const Value *V); public: - // run - This incorporates all types used by the specified module - // - bool run(Module &M); + /// run - This incorporates all types used by the specified module + bool runOnModule(Module &M); - // getAnalysisUsage - Of course, we provide ourself... - // + /// getAnalysisUsage - We do not modify anything. virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); - AU.addProvided(ID); } }; +} // End llvm namespace + #endif