Skip to content

Commit 92d72c4

Browse files
committed
[SelectionDAG] Add a flag to sort DAGs before showing in debug prints
1 parent 7a42fb8 commit 92d72c4

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
147153
static cl::opt<std::string>
148154
FilterDAGBasicBlockName("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+
906920
void SelectionDAGISel::CodeGenAndEmitDAG() {
907921
StringRef GroupName = "sdag";
908922
StringRef GroupDescription = "Instruction Selection and Scheduling";
@@ -930,7 +944,7 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
930944
ISEL_DUMP(dbgs() << "\nInitial 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() << "\nOptimized 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() << "\nType-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() << "\nOptimized 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() << "\nVector-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() << "\nVector/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() << "\nOptimized 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() << "\nLegalized 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() << "\nOptimized 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() << "\nSelected 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

Comments
 (0)