Add higher-level API for dealing with bundled MachineInstrs.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 7 Dec 2012 04:23:29 +0000 (04:23 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 7 Dec 2012 04:23:29 +0000 (04:23 +0000)
commitfad649a5b173f8cfdbbbbde8649ed66afd1129c1
treeecea8b1b820f7f9af56836db8635a55e34d8b328
parentf3c0c77bc34706cc3c2bbc5e4aaae984f52d01a7
Add higher-level API for dealing with bundled MachineInstrs.

This is still a work in progress. The purpose is to make bundling and
unbundling operations explicit, and to catch errors where bundles are
broken or created inadvertently.

The old IsInsideBundle flag is replaced by two MI flags: BundledPred
which has the same meaning as IsInsideBundle, and BundledSucc which is
set on instructions that are bundled with a successor. Having two flags
provdes redundancy to detect when a bundle is inadvertently torn by a
splice() or insert(), and it makes it possible to write bundle iterators
that don't need to peek at adjacent instructions.

The new flags can't be manipulated directly (once setIsInsideBundle is
gone). Instead there are MI functions to make and break bundle bonds.

The setIsInsideBundle function will be removed in a future commit. It
should be replaced by bundleWithPred().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169583 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/MachineInstr.h
lib/CodeGen/MachineInstr.cpp