[LoopReroll] Alter the data structures used during reroll validation.
authorJames Molloy <james.molloy@arm.com>
Thu, 29 Jan 2015 21:52:03 +0000 (21:52 +0000)
committerJames Molloy <james.molloy@arm.com>
Thu, 29 Jan 2015 21:52:03 +0000 (21:52 +0000)
commit64419d414b468f5f1c49cbc4b4edbab1988fb7a8
treec3080c0a4240f0ea6d6425c8d60878c973c5cee7
parent3c740a36146838ae5c64dc19a52527eee01e9b94
[LoopReroll] Alter the data structures used during reroll validation.

The validation algorithm used an incremental approach, building each
iteration's data structures temporarily, validating them, then
adding them to a global set.

This does not scale well to having multiple sets of Root nodes, as the
set of instructions used in each iteration is the union over all
the root nodes. Therefore, refactor the logic to create a single, simple
container to which later logic then refers. This makes it simpler
control-flow wise to make the creation of the container more complex with
the addition of multiple root sets.

llvm-svn: 227499
llvm/lib/Transforms/Scalar/LoopRerollPass.cpp