78
78
#include " llvm/IR/Intrinsics.h"
79
79
#include " llvm/IR/IntrinsicsWebAssembly.h"
80
80
#include " llvm/IR/Metadata.h"
81
+ #include " llvm/IR/PrintPasses.h"
81
82
#include " llvm/IR/Statepoint.h"
82
83
#include " llvm/IR/Type.h"
83
84
#include " llvm/IR/User.h"
113
114
using namespace llvm ;
114
115
115
116
#define DEBUG_TYPE " isel"
117
+ #define ISEL_DUMP_DEBUG_TYPE DEBUG_TYPE " -dump"
116
118
117
119
STATISTIC (NumFastIselFailures, " Number of instructions fast isel failed on" );
118
120
STATISTIC (NumFastIselSuccess, " Number of instructions fast isel selected" );
@@ -180,6 +182,19 @@ static const bool ViewDAGCombine1 = false, ViewLegalizeTypesDAGs = false,
180
182
ViewSchedDAGs = false , ViewSUnitDAGs = false ;
181
183
#endif
182
184
185
+ #ifndef NDEBUG
186
+ #define ISEL_DUMP (X ) \
187
+ do { \
188
+ if (llvm::DebugFlag && \
189
+ (isCurrentDebugType (DEBUG_TYPE) || \
190
+ (isCurrentDebugType (ISEL_DUMP_DEBUG_TYPE) && MatchFilterFuncName))) { \
191
+ X; \
192
+ } \
193
+ } while (false )
194
+ #else
195
+ #define ISEL_DUMP (X ) do { } while (false )
196
+ #endif
197
+
183
198
// ===---------------------------------------------------------------------===//
184
199
// /
185
200
// / RegisterScheduler class - Track the registration of instruction schedulers.
@@ -403,6 +418,13 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
403
418
const Function &Fn = mf.getFunction ();
404
419
MF = &mf;
405
420
421
+ #ifndef NDEBUG
422
+ StringRef FuncName = Fn.getName ();
423
+ MatchFilterFuncName = isFunctionInPrintList (FuncName);
424
+ #else
425
+ (void )MatchFilterFuncName;
426
+ #endif
427
+
406
428
// Decide what flavour of variable location debug-info will be used, before
407
429
// we change the optimisation level.
408
430
bool InstrRef = mf.shouldUseDebugInstrRef ();
@@ -436,7 +458,7 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
436
458
if (isAssignmentTrackingEnabled (*Fn.getParent ()))
437
459
FnVarLocs = getAnalysis<AssignmentTrackingAnalysis>().getResults ();
438
460
439
- LLVM_DEBUG (dbgs () << " \n\n\n === " << Fn. getName () << " \n " );
461
+ ISEL_DUMP (dbgs () << " \n\n\n === " << FuncName << " \n " );
440
462
441
463
UniformityInfo *UA = nullptr ;
442
464
if (auto *UAPass = getAnalysisIfAvailable<UniformityInfoWrapperPass>())
@@ -668,8 +690,8 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
668
690
// at this point.
669
691
FuncInfo->clear ();
670
692
671
- LLVM_DEBUG (dbgs () << " *** MachineFunction at end of ISel ***\n " );
672
- LLVM_DEBUG (MF->print (dbgs ()));
693
+ ISEL_DUMP (dbgs () << " *** MachineFunction at end of ISel ***\n " );
694
+ ISEL_DUMP (MF->print (dbgs ()));
673
695
674
696
return true ;
675
697
}
@@ -777,10 +799,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
777
799
BlockName =
778
800
(MF->getName () + " :" + FuncInfo->MBB ->getBasicBlock ()->getName ()).str ();
779
801
}
780
- LLVM_DEBUG (dbgs () << " \n Initial selection DAG: "
781
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
782
- << " '\n " ;
783
- CurDAG->dump ());
802
+ ISEL_DUMP (dbgs () << " \n Initial selection DAG: "
803
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
804
+ << " '\n " ;
805
+ CurDAG->dump ());
784
806
785
807
#ifndef NDEBUG
786
808
if (TTI.hasBranchDivergence ())
@@ -797,10 +819,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
797
819
CurDAG->Combine (BeforeLegalizeTypes, AA, OptLevel);
798
820
}
799
821
800
- LLVM_DEBUG (dbgs () << " \n Optimized lowered selection DAG: "
801
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
802
- << " '\n " ;
803
- CurDAG->dump ());
822
+ ISEL_DUMP (dbgs () << " \n Optimized lowered selection DAG: "
823
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
824
+ << " '\n " ;
825
+ CurDAG->dump ());
804
826
805
827
#ifndef NDEBUG
806
828
if (TTI.hasBranchDivergence ())
@@ -819,10 +841,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
819
841
Changed = CurDAG->LegalizeTypes ();
820
842
}
821
843
822
- LLVM_DEBUG (dbgs () << " \n Type-legalized selection DAG: "
823
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
824
- << " '\n " ;
825
- CurDAG->dump ());
844
+ ISEL_DUMP (dbgs () << " \n Type-legalized selection DAG: "
845
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
846
+ << " '\n " ;
847
+ CurDAG->dump ());
826
848
827
849
#ifndef NDEBUG
828
850
if (TTI.hasBranchDivergence ())
@@ -843,10 +865,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
843
865
CurDAG->Combine (AfterLegalizeTypes, AA, OptLevel);
844
866
}
845
867
846
- LLVM_DEBUG (dbgs () << " \n Optimized type-legalized selection DAG: "
847
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
848
- << " '\n " ;
849
- CurDAG->dump ());
868
+ ISEL_DUMP (dbgs () << " \n Optimized type-legalized selection DAG: "
869
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
870
+ << " '\n " ;
871
+ CurDAG->dump ());
850
872
851
873
#ifndef NDEBUG
852
874
if (TTI.hasBranchDivergence ())
@@ -861,10 +883,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
861
883
}
862
884
863
885
if (Changed) {
864
- LLVM_DEBUG (dbgs () << " \n Vector-legalized selection DAG: "
865
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
866
- << " '\n " ;
867
- CurDAG->dump ());
886
+ ISEL_DUMP (dbgs () << " \n Vector-legalized selection DAG: "
887
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
888
+ << " '\n " ;
889
+ CurDAG->dump ());
868
890
869
891
#ifndef NDEBUG
870
892
if (TTI.hasBranchDivergence ())
@@ -877,10 +899,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
877
899
CurDAG->LegalizeTypes ();
878
900
}
879
901
880
- LLVM_DEBUG (dbgs () << " \n Vector/type-legalized selection DAG: "
881
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
882
- << " '\n " ;
883
- CurDAG->dump ());
902
+ ISEL_DUMP (dbgs () << " \n Vector/type-legalized selection DAG: "
903
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
904
+ << " '\n " ;
905
+ CurDAG->dump ());
884
906
885
907
#ifndef NDEBUG
886
908
if (TTI.hasBranchDivergence ())
@@ -897,10 +919,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
897
919
CurDAG->Combine (AfterLegalizeVectorOps, AA, OptLevel);
898
920
}
899
921
900
- LLVM_DEBUG (dbgs () << " \n Optimized vector-legalized selection DAG: "
901
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
902
- << " '\n " ;
903
- CurDAG->dump ());
922
+ ISEL_DUMP (dbgs () << " \n Optimized vector-legalized selection DAG: "
923
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
924
+ << " '\n " ;
925
+ CurDAG->dump ());
904
926
905
927
#ifndef NDEBUG
906
928
if (TTI.hasBranchDivergence ())
@@ -917,10 +939,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
917
939
CurDAG->Legalize ();
918
940
}
919
941
920
- LLVM_DEBUG (dbgs () << " \n Legalized selection DAG: "
921
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
922
- << " '\n " ;
923
- CurDAG->dump ());
942
+ ISEL_DUMP (dbgs () << " \n Legalized selection DAG: "
943
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
944
+ << " '\n " ;
945
+ CurDAG->dump ());
924
946
925
947
#ifndef NDEBUG
926
948
if (TTI.hasBranchDivergence ())
@@ -937,10 +959,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
937
959
CurDAG->Combine (AfterLegalizeDAG, AA, OptLevel);
938
960
}
939
961
940
- LLVM_DEBUG (dbgs () << " \n Optimized legalized selection DAG: "
941
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
942
- << " '\n " ;
943
- CurDAG->dump ());
962
+ ISEL_DUMP (dbgs () << " \n Optimized legalized selection DAG: "
963
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
964
+ << " '\n " ;
965
+ CurDAG->dump ());
944
966
945
967
#ifndef NDEBUG
946
968
if (TTI.hasBranchDivergence ())
@@ -961,10 +983,10 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
961
983
DoInstructionSelection ();
962
984
}
963
985
964
- LLVM_DEBUG (dbgs () << " \n Selected selection DAG: "
965
- << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
966
- << " '\n " ;
967
- CurDAG->dump ());
986
+ ISEL_DUMP (dbgs () << " \n Selected selection DAG: "
987
+ << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
988
+ << " '\n " ;
989
+ CurDAG->dump ());
968
990
969
991
if (ViewSchedDAGs && MatchFilterBB)
970
992
CurDAG->viewGraph (" scheduler input for " + BlockName);
0 commit comments