From: Chris Lattner Date: Sun, 1 Mar 2009 00:32:33 +0000 (+0000) Subject: walk type symbol table also, so we get: X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=884858608b0107df56e671406d280e9617988f36;p=oota-llvm.git walk type symbol table also, so we get: type opaque ; type %0 %C = type { %0, %0 } instead of: %C = type { opaque, opaque } when appropriate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65742 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 1e744a9233b..5f418408bc2 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -332,6 +332,13 @@ namespace { : TP(tp), NumberedTypes(numberedTypes) {} void Run(const Module &M) { + // Get types from the type symbol table. This gets opaque types referened + // only through derived named types. + const TypeSymbolTable &ST = M.getTypeSymbolTable(); + for (TypeSymbolTable::const_iterator TI = ST.begin(), E = ST.end(); + TI != E; ++TI) + IncorporateType(TI->second); + // Get types from global variables. for (Module::const_global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I) { @@ -368,11 +375,12 @@ namespace { private: void IncorporateType(const Type *Ty) { // Check to see if we're already visited this type. - if (!VisitedTypes.insert(Ty).second || TP.hasTypeName(Ty)) + if (!VisitedTypes.insert(Ty).second) return; // If this is a structure or opaque type, add a name for the type. - if (isa(Ty) || isa(Ty)) { + if ((isa(Ty) || isa(Ty)) + && !TP.hasTypeName(Ty)) { TP.addTypeName(Ty, "%"+utostr(unsigned(NumberedTypes.size()))); NumberedTypes.push_back(Ty); }