The motivation behind this patch is to unify some of the outliner logic across architectures. This looks nicer in general and makes fixing issues like this easier.
There are some notable changes here:
- isMetaInstruction() is used directly instead of checking for specific meta-instructions like IMPLICIT_DEF or KILL. This was already done in the RISC-V implementation, but other architectures still did hardcoded checks.
- As an exception to this, CFI instructions are explicitly delegated to the target because RISC-V has different handling for those.
- isTargetIndex() checks are replaced with an assert; none of the architectures supported actually use MO_TargetIndex at this point in time.
- isCFIIndex() and isFI() checks are also replaced with asserts, since these operands should not exist in any context at this stage in the pipeline.
We may need to change \p MI to \p MIT or modify param name.