@@ -2756,10 +2756,19 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query, TypeResults &results) {
2756
2756
if (results.AlreadySearched (this ))
2757
2757
return ;
2758
2758
2759
+ auto type_basename = query.GetTypeBasename ();
2760
+
2761
+ Log *log = GetLog (DWARFLog::Lookups);
2762
+ if (log) {
2763
+ GetObjectFile ()->GetModule ()->LogMessage (
2764
+ log, " SymbolFileDWARF::FindTypes(type_basename=\" {0}\" )" ,
2765
+ type_basename);
2766
+ }
2767
+
2759
2768
std::lock_guard<std::recursive_mutex> guard (GetModuleMutex ());
2760
2769
2761
2770
bool have_index_match = false ;
2762
- m_index->GetTypes (query. GetTypeBasename () , [&](DWARFDIE die) {
2771
+ m_index->GetTypes (type_basename , [&](DWARFDIE die) {
2763
2772
// Check the language, but only if we have a language filter.
2764
2773
if (query.HasLanguage ()) {
2765
2774
if (!query.LanguageMatches (GetLanguageFamily (*die.GetCU ())))
@@ -2798,8 +2807,14 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query, TypeResults &results) {
2798
2807
return !results.Done (query); // Keep iterating if we aren't done.
2799
2808
});
2800
2809
2801
- if (results.Done (query))
2810
+ if (results.Done (query)) {
2811
+ if (log) {
2812
+ GetObjectFile ()->GetModule ()->LogMessage (
2813
+ log, " SymbolFileDWARF::FindTypes(type_basename=\" {0}\" ) => {1}" ,
2814
+ type_basename, results.GetTypeMap ().GetSize ());
2815
+ }
2802
2816
return ;
2817
+ }
2803
2818
2804
2819
// With -gsimple-template-names, a templated type's DW_AT_name will not
2805
2820
// contain the template parameters. Try again stripping '<' and anything
@@ -2814,10 +2829,10 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query, TypeResults &results) {
2814
2829
// it trims any context items down by removing template parameter names.
2815
2830
TypeQuery query_simple (query);
2816
2831
if (UpdateCompilerContextForSimpleTemplateNames (query_simple)) {
2817
-
2832
+ auto type_basename_simple = query_simple. GetTypeBasename ();
2818
2833
// Copy our match's context and update the basename we are looking for
2819
2834
// so we can use this only to compare the context correctly.
2820
- m_index->GetTypes (query_simple. GetTypeBasename () , [&](DWARFDIE die) {
2835
+ m_index->GetTypes (type_basename_simple , [&](DWARFDIE die) {
2821
2836
// Check the language, but only if we have a language filter.
2822
2837
if (query.HasLanguage ()) {
2823
2838
if (!query.LanguageMatches (GetLanguageFamily (*die.GetCU ())))
@@ -2853,8 +2868,17 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query, TypeResults &results) {
2853
2868
}
2854
2869
return !results.Done (query); // Keep iterating if we aren't done.
2855
2870
});
2856
- if (results.Done (query))
2871
+ if (results.Done (query)) {
2872
+ if (log) {
2873
+ GetObjectFile ()->GetModule ()->LogMessage (
2874
+ log,
2875
+ " SymbolFileDWARF::FindTypes(type_basename=\" {0}\" ) => {1} "
2876
+ " (simplified as \" {2}\" )" ,
2877
+ type_basename, results.GetTypeMap ().GetSize (),
2878
+ type_basename_simple);
2879
+ }
2857
2880
return ;
2881
+ }
2858
2882
}
2859
2883
}
2860
2884
@@ -2866,8 +2890,11 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query, TypeResults &results) {
2866
2890
for (const auto &pair : m_external_type_modules) {
2867
2891
if (ModuleSP external_module_sp = pair.second ) {
2868
2892
external_module_sp->FindTypes (query, results);
2869
- if (results.Done (query))
2893
+ if (results.Done (query)) {
2894
+ // We don't log the results here as they are already logged in the
2895
+ // nested FindTypes call
2870
2896
return ;
2897
+ }
2871
2898
}
2872
2899
}
2873
2900
}
0 commit comments