[GlobalISel] Print/Parse FailedISel MachineFunction property
authorRoman Tereshin <rtereshin@apple.com>
Wed, 28 Feb 2018 17:55:45 +0000 (17:55 +0000)
committerRoman Tereshin <rtereshin@apple.com>
Wed, 28 Feb 2018 17:55:45 +0000 (17:55 +0000)
commit3054ecea3f3a0157db33865683453400f1509efb
treebbc5894c7024247be60874dde3405bdbce56662b
parente768132f94ed86dcf076d52538abea1861cb1e02
[GlobalISel] Print/Parse FailedISel MachineFunction property

FailedISel MachineFunction property is part of the CodeGen pipeline
state as much as every other property, notably, Legalized,
RegBankSelected, and Selected. Let's make that part of the state also
serializable / de-serializable, so if GlobalISel aborts on some of the
functions of a large module, but not the others, it could be easily seen
and the state of the pipeline could be maintained through llc's
invocations with -stop-after / -start-after.

To make MIR printable and generally to not to break it too much too
soon, this patch also defers cleaning up the vreg -> LLT map until
ResetMachineFunctionPass.

To make MIR with FailedISel: true also machine verifiable, machine
verifier is changed so it treats a MIR-module as non-regbankselected and
non-selected if there is FailedISel property set.

Reviewers: qcolombet, ab

Reviewed By: dsanders

Subscribers: javed.absar, rovka, kristof.beyls, llvm-commits

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

llvm-svn: 326343
llvm/include/llvm/CodeGen/MIRYamlMapping.h
llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
llvm/lib/CodeGen/MIRParser/MIRParser.cpp
llvm/lib/CodeGen/MIRPrinter.cpp
llvm/lib/CodeGen/MachineVerifier.cpp
llvm/lib/CodeGen/ResetMachineFunctionPass.cpp
llvm/test/CodeGen/MIR/AArch64/print-parse-verify-failedISel-property.mir [new file with mode: 0644]