[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)
commit921f0b1d6695241f5e3ac4af0ac3a6c677055d7c
tree053039321fc17c060b96026887497f2225ac2e2b
parentefbd8e5fc0055ed8193f6749361b6c9b4638069f
[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>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201121 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/CodeGenPrepare.cpp