aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-08-09 22:30:57 +0000
committerChris Lattner <sabre@nondot.org>2005-08-09 22:30:57 +0000
commitc7e18a10d412b24fd1054851a8ad277a3a747471 (patch)
tree3570566322785d72e49253bafde9097a415af609 /lib
parent079a27a0deca2501485da55701632cf9ebe4e8c4 (diff)
add a optimization note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22732 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/PowerPC/README.txt18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/Target/PowerPC/README.txt b/lib/Target/PowerPC/README.txt
index be6a5711e8..057a5742e0 100644
--- a/lib/Target/PowerPC/README.txt
+++ b/lib/Target/PowerPC/README.txt
@@ -11,6 +11,24 @@ TODO:
* Support 'update' load/store instructions. These are cracked on the G5, but
are still a codesize win.
+* Add a custom legalizer for the GlobalAddress node, to move the funky darwin
+ stub stuff from the instruction selector to the legalizer (exposing low-level
+ operations to the dag for optzn. For example, we want to codegen this:
+
+ int A = 0;
+ void B() { A++; }
+ as:
+ lis r9,ha16(_A)
+ lwz r2,lo16(_A)(r9)
+ addi r2,r2,1
+ stw r2,lo16(_A)(r9)
+ not:
+ lis r2, ha16(_A)
+ lwz r2, lo16(_A)(r2)
+ addi r2, r2, 1
+ lis r3, ha16(_A)
+ stw r2, lo16(_A)(r3)
+
* should hint to the branch select pass that it doesn't need to print the
second unconditional branch, so we don't end up with things like:
b .LBBl42__2E_expand_function_8_674 ; loopentry.24