Let the Module FindType do the stripping of namespace components, that's not expensive

and doing it both at the ModuleList and Module levels means we look 4 times for a negative
search.  Also, don't do the search for the stripped name if that is the same as the original
one.

llvm-svn: 148054
This commit is contained in:
Jim Ingham
2012-01-12 22:35:29 +00:00
parent 0037e08811
commit 50b3d507bd
3 changed files with 8 additions and 45 deletions

View File

@@ -531,8 +531,13 @@ Module::FindTypes (const SymbolContext& sc, const ConstString &name, const Clan
if (retval == 0)
{
const char *stripped = StripTypeName(name.GetCString());
return FindTypes_Impl(sc, ConstString(stripped), namespace_decl, append, max_matches, types);
const char *orig_name = name.GetCString();
const char *stripped = StripTypeName(orig_name);
// Only do this lookup if StripTypeName has stripped the name:
if (stripped != orig_name)
return FindTypes_Impl(sc, ConstString(stripped), namespace_decl, append, max_matches, types);
else
return 0;
}
else
return retval;