This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Remove dead instructions before creating VPT block bundles
ClosedPublic

Authored by dmgreen on Nov 27 2020, 6:19 AM.

Details

Summary

We remove VPNOT instructions in VPT blocks as we create them, turning them into else predicates. We don't remove the dead instructions until after the block has been created though. Because the VPNOT will have killed the vpr register it used, this makes finalizeBundle add "internal" flags to the vpr uses of any instructions after the VPNOT. These incorrect flags can then confuse what is alive and what is not, leading to machine verifier problems.

This patch removes them earlier instead, before the bundle is finalized so that kill flags remain valid.

Diff Detail

Event Timeline

dmgreen created this revision.Nov 27 2020, 6:19 AM
dmgreen requested review of this revision.Nov 27 2020, 6:19 AM
SjoerdMeijer accepted this revision.Dec 8 2020, 5:32 AM

Cheers, looks like a good fix to me.

This revision is now accepted and ready to land.Dec 8 2020, 5:32 AM