Physregs may hold multiple stack slot values at the same time. Keep track
authorChris Lattner <sabre@nondot.org>
Fri, 3 Feb 2006 00:36:31 +0000 (00:36 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 3 Feb 2006 00:36:31 +0000 (00:36 +0000)
commit07cf14112dcdb9c6b20a4f8e17de717b5219dad8
tree607e3d59e078cea51b06559c79b5eea13e1d1728
parent39b248b79e7842dce6c71e50c557ebaf325d55e1
Physregs may hold multiple stack slot values at the same time.  Keep track
of this, and use it to our advantage (bwahahah).  This allows us to eliminate another
60 instructions from smg2000 on PPC (probably significantly more on X86).  A common
old-new diff looks like this:

        stw r2, 3304(r1)
-       lwz r2, 3192(r1)
        stw r2, 3300(r1)
-       lwz r2, 3192(r1)
        stw r2, 3296(r1)
-       lwz r2, 3192(r1)
        stw r2, 3200(r1)
-       lwz r2, 3192(r1)
        stw r2, 3196(r1)
-       lwz r2, 3192(r1)
+       or r2, r2, r2
        stw r2, 3188(r1)

and

-       lwz r31, 604(r1)
-       lwz r13, 604(r1)
-       lwz r14, 604(r1)
-       lwz r15, 604(r1)
-       lwz r16, 604(r1)
-       lwz r30, 604(r1)
+       or r31, r30, r30
+       or r13, r30, r30
+       or r14, r30, r30
+       or r15, r30, r30
+       or r16, r30, r30
+       or r30, r30, r30

Removal of the R = R copies is coming next...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25919 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/VirtRegMap.cpp