@@ -144,6 +144,12 @@ UseMBPI("use-mbpi",
144144 cl::init(true ), cl::Hidden);
145145
146146#ifndef NDEBUG
147+ static cl::opt<bool >
148+ SortDAGBeforeDump (" sort-dags-before-isel-dump" , cl::Hidden,
149+ cl::desc (" Sort SelectionDAGs before showing them in"
150+ " debug prints during SelectionDAGISel." ),
151+ cl::init(false ));
152+
147153static cl::opt<std::string>
148154FilterDAGBasicBlockName (" filter-view-dags" , cl::Hidden,
149155 cl::desc (" Only display the basic block whose name "
@@ -903,6 +909,14 @@ void SelectionDAGISel::ComputeLiveOutVRegInfo() {
903909 } while (!Worklist.empty ());
904910}
905911
912+ #ifndef NDEBUG
913+ static void dumpSelectionDAG (SelectionDAG *DAG) {
914+ if (SortDAGBeforeDump)
915+ DAG->AssignTopologicalOrder ();
916+ DAG->dump ();
917+ }
918+ #endif
919+
906920void SelectionDAGISel::CodeGenAndEmitDAG () {
907921 StringRef GroupName = " sdag" ;
908922 StringRef GroupDescription = " Instruction Selection and Scheduling" ;
@@ -930,7 +944,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
930944 ISEL_DUMP (dbgs () << " \n Initial selection DAG: "
931945 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
932946 << " '\n " ;
933- CurDAG-> dump ( ));
947+ dumpSelectionDAG (CurDAG ));
934948
935949#if !defined(NDEBUG) && LLVM_ENABLE_ABI_BREAKING_CHECKS
936950 if (TTI->hasBranchDivergence ())
@@ -950,7 +964,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
950964 ISEL_DUMP (dbgs () << " \n Optimized lowered selection DAG: "
951965 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
952966 << " '\n " ;
953- CurDAG-> dump ( ));
967+ dumpSelectionDAG (CurDAG ));
954968
955969#if !defined(NDEBUG) && LLVM_ENABLE_ABI_BREAKING_CHECKS
956970 if (TTI->hasBranchDivergence ())
@@ -972,7 +986,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
972986 ISEL_DUMP (dbgs () << " \n Type-legalized selection DAG: "
973987 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
974988 << " '\n " ;
975- CurDAG-> dump ( ));
989+ dumpSelectionDAG (CurDAG ));
976990
977991#if !defined(NDEBUG) && LLVM_ENABLE_ABI_BREAKING_CHECKS
978992 if (TTI->hasBranchDivergence ())
@@ -996,7 +1010,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
9961010 ISEL_DUMP (dbgs () << " \n Optimized type-legalized selection DAG: "
9971011 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
9981012 << " '\n " ;
999- CurDAG-> dump ( ));
1013+ dumpSelectionDAG (CurDAG ));
10001014
10011015#if !defined(NDEBUG) && LLVM_ENABLE_ABI_BREAKING_CHECKS
10021016 if (TTI->hasBranchDivergence ())
@@ -1014,7 +1028,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
10141028 ISEL_DUMP (dbgs () << " \n Vector-legalized selection DAG: "
10151029 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
10161030 << " '\n " ;
1017- CurDAG-> dump ( ));
1031+ dumpSelectionDAG (CurDAG ));
10181032
10191033#if !defined(NDEBUG) && LLVM_ENABLE_ABI_BREAKING_CHECKS
10201034 if (TTI->hasBranchDivergence ())
@@ -1030,7 +1044,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
10301044 ISEL_DUMP (dbgs () << " \n Vector/type-legalized selection DAG: "
10311045 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
10321046 << " '\n " ;
1033- CurDAG-> dump ( ));
1047+ dumpSelectionDAG (CurDAG ));
10341048
10351049#if !defined(NDEBUG) && LLVM_ENABLE_ABI_BREAKING_CHECKS
10361050 if (TTI->hasBranchDivergence ())
@@ -1050,7 +1064,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
10501064 ISEL_DUMP (dbgs () << " \n Optimized vector-legalized selection DAG: "
10511065 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
10521066 << " '\n " ;
1053- CurDAG-> dump ( ));
1067+ dumpSelectionDAG (CurDAG ));
10541068
10551069#if !defined(NDEBUG) && LLVM_ENABLE_ABI_BREAKING_CHECKS
10561070 if (TTI->hasBranchDivergence ())
@@ -1070,7 +1084,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
10701084 ISEL_DUMP (dbgs () << " \n Legalized selection DAG: "
10711085 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
10721086 << " '\n " ;
1073- CurDAG-> dump ( ));
1087+ dumpSelectionDAG (CurDAG ));
10741088
10751089#if !defined(NDEBUG) && LLVM_ENABLE_ABI_BREAKING_CHECKS
10761090 if (TTI->hasBranchDivergence ())
@@ -1090,7 +1104,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
10901104 ISEL_DUMP (dbgs () << " \n Optimized legalized selection DAG: "
10911105 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
10921106 << " '\n " ;
1093- CurDAG-> dump ( ));
1107+ dumpSelectionDAG (CurDAG ));
10941108
10951109#if !defined(NDEBUG) && LLVM_ENABLE_ABI_BREAKING_CHECKS
10961110 if (TTI->hasBranchDivergence ())
@@ -1114,7 +1128,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
11141128 ISEL_DUMP (dbgs () << " \n Selected selection DAG: "
11151129 << printMBBReference (*FuncInfo->MBB ) << " '" << BlockName
11161130 << " '\n " ;
1117- CurDAG-> dump ( ));
1131+ dumpSelectionDAG (CurDAG ));
11181132
11191133 if (ViewSchedDAGs && MatchFilterBB)
11201134 CurDAG->viewGraph (" scheduler input for " + BlockName);
0 commit comments