From c7e18a10d412b24fd1054851a8ad277a3a747471 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 9 Aug 2005 22:30:57 +0000 Subject: [PATCH] add a optimization note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22732 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/README.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib/Target/PowerPC/README.txt b/lib/Target/PowerPC/README.txt index be6a5711e81..057a5742e07 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 -- 2.11.0