diff options
author | Bill Wendling <isanbard@gmail.com> | 2012-04-21 23:59:16 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2012-04-21 23:59:16 +0000 |
commit | d46575f1908b1fb9950e610a1f36733893ad44b1 (patch) | |
tree | ac9f67df8d0aedfedcfef7e2e61e7486286d531c /lib/VMCore/Module.cpp | |
parent | 2dbd7844e831caa107c6c9c57889f3d89b843ef3 (diff) |
Add a flag to the struct type finder to collect only those types which have
names. This saves collecting types we normally don't care about.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155300 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Module.cpp')
-rw-r--r-- | lib/VMCore/Module.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/VMCore/Module.cpp b/lib/VMCore/Module.cpp index 3c67191e09..24c2707b54 100644 --- a/lib/VMCore/Module.cpp +++ b/lib/VMCore/Module.cpp @@ -483,9 +483,10 @@ namespace { DenseSet<Type*> VisitedTypes; std::vector<StructType*> &StructTypes; + bool OnlyNamed; public: - TypeFinder(std::vector<StructType*> &structTypes) - : StructTypes(structTypes) {} + TypeFinder(std::vector<StructType*> &structTypes, bool onlyNamed) + : StructTypes(structTypes), OnlyNamed(onlyNamed) {} void run(const Module &M) { // Get types from global variables. @@ -545,7 +546,8 @@ namespace { // If this is a structure or opaque type, add a name for the type. if (StructType *STy = dyn_cast<StructType>(Ty)) - StructTypes.push_back(STy); + if (!OnlyNamed || STy->hasName()) + StructTypes.push_back(STy); // Recursively walk all contained types. for (Type::subtype_iterator I = Ty->subtype_begin(), @@ -590,6 +592,7 @@ namespace { }; } // end anonymous namespace -void Module::findUsedStructTypes(std::vector<StructType*> &StructTypes) const { - TypeFinder(StructTypes).run(*this); +void Module::findUsedStructTypes(std::vector<StructType*> &StructTypes, + bool OnlyNamed) const { + TypeFinder(StructTypes, OnlyNamed).run(*this); } |