[compiler] Improve --trace-turbo-scheduler printing of blocks

The output was utterly confusing because block identities were printed
in different ways:

- "id:5" for a block with id 5
- "B5" for a block with rpo number 5
- also (!!!) "B5" for a block with id 5


With this CL, the last case above is eliminated such that there is no
ambiguity. I originally wanted to unify the prefix syntax as well (e.g.
"id:5" and "rpo:5"), but the prefixes are hard-coded in countless
places including CodeGenerator, Turbolizer, and Verifier. Many of these
are format strings that are painful to write more generically.

Change-Id: I0eb70731c7b1ef9a9999e0bcb58b673288932e93
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2940890
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75092}
This commit is contained in:
Georg Neis 2021-06-11 10:53:20 +02:00 committed by V8 LUCI CQ
parent 118b1b0098
commit d9726d1aec

View File

@ -107,7 +107,7 @@ BasicBlock* BasicBlock::GetCommonDominator(BasicBlock* b1, BasicBlock* b2) {
void BasicBlock::Print() { StdoutStream{} << *this << "\n"; }
std::ostream& operator<<(std::ostream& os, const BasicBlock& block) {
os << "B" << block.id();
os << "id:" << block.id();
#if DEBUG
AssemblerDebugInfo info = block.debug_info();
if (info.name) os << info;
@ -117,7 +117,7 @@ std::ostream& operator<<(std::ostream& os, const BasicBlock& block) {
const BasicBlock* current_block = &block;
while (current_block->PredecessorCount() > 0 && i++ < kMaxDisplayedBlocks) {
current_block = current_block->predecessors().front();
os << " <= B" << current_block->id();
os << " <= id:" << current_block->id();
info = current_block->debug_info();
if (info.name) os << info;
}
@ -200,8 +200,8 @@ BasicBlock* Schedule::NewBasicBlock() {
void Schedule::PlanNode(BasicBlock* block, Node* node) {
if (FLAG_trace_turbo_scheduler) {
StdoutStream{} << "Planning #" << node->id() << ":"
<< node->op()->mnemonic() << " for future add to B"
<< block->id() << "\n";
<< node->op()->mnemonic()
<< " for future add to id:" << block->id() << "\n";
}
DCHECK_NULL(this->block(node));
SetBlockForNode(block, node);
@ -210,7 +210,7 @@ void Schedule::PlanNode(BasicBlock* block, Node* node) {
void Schedule::AddNode(BasicBlock* block, Node* node) {
if (FLAG_trace_turbo_scheduler) {
StdoutStream{} << "Adding #" << node->id() << ":" << node->op()->mnemonic()
<< " to B" << block->id() << "\n";
<< " to id:" << block->id() << "\n";
}
DCHECK(this->block(node) == nullptr || this->block(node) == block);
block->AddNode(node);
@ -465,7 +465,7 @@ std::ostream& operator<<(std::ostream& os, const Schedule& s) {
((s.RpoBlockCount() == 0) ? *s.all_blocks() : *s.rpo_order())) {
if (block == nullptr) continue;
if (block->rpo_number() == -1) {
os << "--- BLOCK id:" << block->id().ToInt();
os << "--- BLOCK id:" << block->id();
} else {
os << "--- BLOCK B" << block->rpo_number();
}
@ -476,7 +476,7 @@ std::ostream& operator<<(std::ostream& os, const Schedule& s) {
if (comma) os << ", ";
comma = true;
if (predecessor->rpo_number() == -1) {
os << "id:" << predecessor->id().ToInt();
os << "id:" << predecessor->id();
} else {
os << "B" << predecessor->rpo_number();
}
@ -503,7 +503,7 @@ std::ostream& operator<<(std::ostream& os, const Schedule& s) {
if (comma) os << ", ";
comma = true;
if (successor->rpo_number() == -1) {
os << "id:" << successor->id().ToInt();
os << "id:" << successor->id();
} else {
os << "B" << successor->rpo_number();
}