[GlobalISel] Set the Selected MF property.

None of GlobalISel requires the property, but this lets us use the
verifier instead of rolling our own "all instructions selected" check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277484 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Ahmed Bougacha 2016-08-02 16:49:25 +00:00
parent 35426be67b
commit 9618468f1c
3 changed files with 23 additions and 14 deletions

View File

@ -37,6 +37,11 @@ public:
.set(MachineFunctionProperties::Property::RegBankSelected);
}
MachineFunctionProperties getSetProperties() const override {
return MachineFunctionProperties().set(
MachineFunctionProperties::Property::Selected);
}
InstructionSelect();
bool runOnMachineFunction(MachineFunction &MF) override;

View File

@ -85,20 +85,6 @@ bool InstructionSelect::runOnMachineFunction(MachineFunction &MF) {
assert(MF.size() == NumBlocks && "Inserting blocks is not supported yet");
// Check that we did select everything. Do this separately to make sure we
// didn't miss any newly inserted instructions.
// FIXME: This (and other checks) should move into a verifier, predicated on
// a "post-isel" MachineFunction property. That would also let us selectively
// enable it depending on build configuration.
for (MachineBasicBlock &MBB : MF) {
for (MachineInstr &MI : MBB) {
if (isPreISelGenericOpcode(MI.getOpcode())) {
reportSelectionError(
MI, "Generic instruction survived instruction selection");
}
}
}
// Now that selection is complete, there are no more generic vregs.
// FIXME: We're still discussing what to do with the vreg->size map:
// it's somewhat redundant (with the def MIs type size), but having to

View File

@ -31,6 +31,8 @@
define void @store_s64_gpr(i64* %addr) { ret void }
define void @store_s32_gpr(i32* %addr) { ret void }
define void @selected_property() { ret void }
...
---
@ -419,3 +421,19 @@ body: |
G_STORE { s32, p0 } %1, %0 :: (store 4 into %ir.addr)
...
---
# Check that we set the "selected" property.
# CHECK-LABEL: name: selected_property
# CHECK: legalized: true
# CHECK-NEXT: regBankSelected: true
# CHECK-NEXT: selected: true
# CHECK-NEXT: isSSA: true
name: selected_property
isSSA: true
legalized: true
regBankSelected: true
selected: false
body: |
bb.0:
...