X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAnalysis%2FFindUsedTypes.h;h=b22cb88135133f2cd6b1bb0d40e66f3b29a860d4;hb=2905440bdd9627f202398137aab5ded38f681fc9;hp=1005042ab9ab8065dc88476704a7e17d3011a91f;hpb=f4de63f65fa995e68e3cd268117ab065068be413;p=oota-llvm.git diff --git a/include/llvm/Analysis/FindUsedTypes.h b/include/llvm/Analysis/FindUsedTypes.h index 1005042ab9a..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,52 +14,53 @@ #ifndef LLVM_ANALYSIS_FINDUSEDTYPES_H #define LLVM_ANALYSIS_FINDUSEDTYPES_H +#include "llvm/ADT/SetVector.h" #include "llvm/Pass.h" -#include -class SymbolTable; -class FindUsedTypes : public MethodPass { - std::set UsedTypes; +namespace llvm { - bool IncludeSymbolTables; -public: +class Type; +class Value; - // FindUsedTypes ctor - This pass can optionally include types that are - // referenced only in symbol tables, but the default is not to. - // - FindUsedTypes(bool IST = false) : IncludeSymbolTables(IST) {} +class FindUsedTypes : public ModulePass { + SetVector UsedTypes; +public: + 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. - // - inline const std::set &getTypes() const { return UsedTypes; } + /// 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 printTypes(std::ostream &o, const Module *M = 0) const; + /// 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); - // IncorporateSymbolTable - Add all types referenced by the specified symtab - // into the collection of used types. - // - void IncorporateSymbolTable(const SymbolTable *ST); + /// IncorporateValue - Incorporate all of the types used by this value. + /// + void IncorporateValue(const Value *V); public: - // doInitialization - This loops over global constants defined in the - // module, converting them to their new type. - // - bool doInitialization(Module *M); - - // runOnMethod - This incorporates all types used by the specified method - // - bool runOnMethod(Method *M); + /// run - This incorporates all types used by the specified module + bool runOnModule(Module &M); + + /// getAnalysisUsage - We do not modify anything. + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.setPreservesAll(); + } }; +} // End llvm namespace + #endif