allow the offset of a preinc'd load to be the low-part of a global. This
authorChris Lattner <sabre@nondot.org>
Sat, 11 Nov 2006 04:53:30 +0000 (04:53 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 11 Nov 2006 04:53:30 +0000 (04:53 +0000)
commit5b3bbc7cd7bff4275b94003d4bf1fa296c6a10d0
treecba35ceb34d24e60a188da9085bd9d7b72fd694a
parentd181c0120c6c82a6b5370e4d3040b803093e169b
allow the offset of a preinc'd load to be the low-part of a global.  This
produces this clever code:

_millisecs:
        lis r2, ha16(_Time.1182)
        lwzu r3, lo16(_Time.1182)(r2)
        lwz r2, 4(r2)
        addic r4, r2, 1
        addze r3, r3
        blr

instead of this:

_millisecs:
        lis r2, ha16(_Time.1182)
        la r3, lo16(_Time.1182)(r2)
        lwz r2, lo16(_Time.1182)(r2)
        lwz r3, 4(r3)
        addic r4, r3, 1
        addze r3, r2
        blr

for:

long %millisecs() {
        %tmp = load long* %Time.1182            ; <long> [#uses=1]
        %tmp1 = add long %tmp, 1                ; <long> [#uses=1]
        ret long %tmp1
}

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31673 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPCISelDAGToDAG.cpp