diff options
author | Chris Lattner <sabre@nondot.org> | 2007-12-28 04:42:05 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-12-28 04:42:05 +0000 |
commit | 180f0e904437fbb3fe3472523b15b20c03bac2a0 (patch) | |
tree | 1d84038e8bd8f9761010cac565a05b90a6d7f21a | |
parent | 02ac5e87e0d19744abf3aa83c8e357a9a3dec8c8 (diff) | |
download | bcm5719-llvm-180f0e904437fbb3fe3472523b15b20c03bac2a0.tar.gz bcm5719-llvm-180f0e904437fbb3fe3472523b15b20c03bac2a0.zip |
add a note
llvm-svn: 45377
-rw-r--r-- | llvm/lib/Target/README.txt | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/Target/README.txt b/llvm/lib/Target/README.txt index 37c0a359a2b..b94bdeac94e 100644 --- a/llvm/lib/Target/README.txt +++ b/llvm/lib/Target/README.txt @@ -464,3 +464,22 @@ entry: } //===---------------------------------------------------------------------===// + +"basicaa" should know how to look through "or" instructions that act like add +instructions. For example in this code, the x*4+1 is turned into x*4 | 1, and +basicaa can't analyze the array subscript, leading to duplicated loads in the +generated code: + +void test(int X, int Y, int a[]) { +int i; + for (i=2; i<1000; i+=4) { + a[i+0] = a[i-1+0]*a[i-2+0]; + a[i+1] = a[i-1+1]*a[i-2+1]; + a[i+2] = a[i-1+2]*a[i-2+2]; + a[i+3] = a[i-1+3]*a[i-2+3]; + } +} + + + +//===---------------------------------------------------------------------===// |