Make GVN be more intelligent about redundant load
authorChris Lattner <sabre@nondot.org>
Mon, 1 Dec 2008 01:31:36 +0000 (01:31 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 1 Dec 2008 01:31:36 +0000 (01:31 +0000)
commit978796eaad4f6cefc2069dc5183679ac7dd8f666
tree19632a766b1909b14a74e2c295897a76052ac510
parentbf145d6e2ba01f5099ccaa1b58ed3619406928a0
Make GVN be more intelligent about redundant load
elimination: when finding dependent load/stores, realize that
they are the same if aliasing claims must alias instead of relying
on the pointers to be exactly equal.  This makes load elimination
more aggressive.  For example, on 403.gcc, we had:

<     68 gvn    - Number of instructions PRE'd
< 152718 gvn    - Number of instructions deleted
<  49699 gvn    - Number of loads deleted
<   6153 memdep - Number of dirty cached non-local responses
< 169336 memdep - Number of fully cached non-local responses
< 162428 memdep - Number of uncached non-local responses

now we have:

>     64 gvn    - Number of instructions PRE'd
> 153623 gvn    - Number of instructions deleted
>  49856 gvn    - Number of loads deleted
>   5022 memdep - Number of dirty cached non-local responses
> 159030 memdep - Number of fully cached non-local responses
> 162443 memdep - Number of uncached non-local responses

That's an extra 157 loads deleted and extra 905 other instructions nuked.

This slows down GVN very slightly, from 3.91 to 3.96s.

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