X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAnalysis%2FFindUsedTypes.h;h=b22cb88135133f2cd6b1bb0d40e66f3b29a860d4;hb=2905440bdd9627f202398137aab5ded38f681fc9;hp=21fcabc1902f614c83f24c4e364e53867bb09944;hpb=47b6f84736197b5ece84860e6cb6052ebc60c646;p=oota-llvm.git diff --git a/include/llvm/Analysis/FindUsedTypes.h b/include/llvm/Analysis/FindUsedTypes.h index 21fcabc1902..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,46 +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: + 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 std::set &getTypes() const { return UsedTypes; } + 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(std::ostream &o, const Module *M) const; + 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); + 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); + bool runOnModule(Module &M); /// getAnalysisUsage - We do not modify anything. virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); } - - // stub - dummy function, just ignore it - static void stub(); }; -// Make sure that any clients of this file link in PostDominators.cpp -static IncludeFile -FIND_USED_TYPES_INCLUDE_FILE((void*)&FindUsedTypes::stub); +} // End llvm namespace #endif