[AliasSet] Fix UnknownInstructions printing

Summary:
AliasSet::print uses `I->printAsOperand` to print UnknownInstructions. The problem is that not all UnknownInstructions have names (e.g. call instructions). When such instructions are printed, they appear as `<badref>` in AliasSets, which is very confusing, as the values are perfectly valid.

This patch fixes that by printing UnknownInstructions without a name using `print` instead of `printAsOperand`.

Reviewers: asbirlea, chandlerc, sanjoy, grosser

Reviewed By: asbirlea

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D48609

llvm-svn: 335751
This commit is contained in:
Jakub Kuderski 2018-06-27 16:34:30 +00:00
parent 7b7b5eb60d
commit 555e41bbf2
1 changed files with 6 additions and 2 deletions

View File

@ -639,8 +639,12 @@ void AliasSet::print(raw_ostream &OS) const {
OS << "\n " << UnknownInsts.size() << " Unknown instructions: "; OS << "\n " << UnknownInsts.size() << " Unknown instructions: ";
for (unsigned i = 0, e = UnknownInsts.size(); i != e; ++i) { for (unsigned i = 0, e = UnknownInsts.size(); i != e; ++i) {
if (i) OS << ", "; if (i) OS << ", ";
if (auto *I = getUnknownInst(i)) if (auto *I = getUnknownInst(i)) {
if (I->hasName())
I->printAsOperand(OS); I->printAsOperand(OS);
else
I->print(OS);
}
} }
} }
OS << "\n"; OS << "\n";