Teach instcombine's visitLoad to scan back several instructions
authorDan Gohman <gohman@apple.com>
Wed, 15 Oct 2008 23:19:35 +0000 (23:19 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 15 Oct 2008 23:19:35 +0000 (23:19 +0000)
commit2276a7bc8e0af6cc759ba1b5cfe8e7cfd03c3c4c
tree244ff1bd6ce582bad2886e1350e8952fb162000d
parent95c2cc51ebb2a58ccd66a1465d5c8ed89b381bc9
Teach instcombine's visitLoad to scan back several instructions
to find opportunities for store-to-load forwarding or load CSE,
in the same way that visitStore scans back to do DSE. Also, define
a new helper function for testing whether the addresses of two
memory accesses are known to have the same value, and use it in
both visitStore and visitLoad.

These two changes allow instcombine to eliminate loads in code
produced by front-ends that frequently emit obviously redundant
addressing for memory references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57608 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/InstructionCombining.cpp
test/Transforms/InstCombine/load.ll
test/Transforms/InstCombine/load3.ll [new file with mode: 0644]