From 166a268656c6e0e2f32c92f7bc021286ad669c9a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 28 Dec 2007 04:42:05 +0000 Subject: [PATCH] add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45377 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/README.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/Target/README.txt b/lib/Target/README.txt index 37c0a359a2b..b94bdeac94e 100644 --- a/lib/Target/README.txt +++ b/lib/Target/README.txt @@ -463,4 +463,23 @@ entry: ret int %tmp3 } +//===---------------------------------------------------------------------===// + +"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]; + } +} + + + //===---------------------------------------------------------------------===//