[CodeGenPrepare] Undo changes that happened for the profitability check.
authorQuentin Colombet <qcolombet@apple.com>
Tue, 11 Feb 2014 01:59:02 +0000 (01:59 +0000)
committerQuentin Colombet <qcolombet@apple.com>
Tue, 11 Feb 2014 01:59:02 +0000 (01:59 +0000)
commit5a69dda9b0b080e0e82250e2ba0500c1423a9c5d
tree3e02740b189aae9d9312cd0a54b6ec15fa8ad39c
parente0fc1a80cba8b91e3943f3287e7dcf68c6bb9b7f
[CodeGenPrepare] Undo changes that happened for the profitability check.

The addressing mode matcher checks at some point the profitability of folding an
instruction into the addressing mode. When the instruction to be folded has
several uses, it checks that the instruction can be folded in each use.
To do so, it creates a new matcher for each use and check if the instruction is
in the list of the matched instructions of this new matcher.

The new matchers may promote some instructions and this has to be undone to keep
the state of the original matcher consistent.

A test case will follow.

<rdar://problem/16020230>

llvm-svn: 201121
llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp