add a note
authorChris Lattner <sabre@nondot.org>
Fri, 28 Dec 2007 04:42:05 +0000 (04:42 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 28 Dec 2007 04:42:05 +0000 (04:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45377 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/README.txt

index 37c0a359a2b28584d8ad3c80ab776669169a388d..b94bdeac94ed98f4192495dc937a56a3b6e5178b 100644 (file)
@@ -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];
+  }
+}
+
+
+
 //===---------------------------------------------------------------------===//