add a note
authorChris Lattner <sabre@nondot.org>
Tue, 2 Dec 2008 06:32:34 +0000 (06:32 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 2 Dec 2008 06:32:34 +0000 (06:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60404 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/README.txt

index 3c689dbe46e54490efe7446775db2208bd786486..518c9893c8c58dc7e10f7f7d7512f7ce246e59f1 100644 (file)
@@ -1252,3 +1252,24 @@ have the concept of a "C signed subtraction" operator that which is undefined
 on overflow.
 
 //===---------------------------------------------------------------------===//
+
+This was noticed in the entryblock for grokdeclarator in 403.gcc:
+
+        %tmp = icmp eq i32 %decl_context, 4          
+        %decl_context_addr.0 = select i1 %tmp, i32 3, i32 %decl_context 
+        %tmp1 = icmp eq i32 %decl_context_addr.0, 1 
+        %decl_context_addr.1 = select i1 %tmp1, i32 0, i32 %decl_context_addr.0
+
+tmp1 should be simplified to something like:
+  (!tmp || decl_context == 1)
+
+This allows recursive simplifications, tmp1 is used all over the place in
+the function, e.g. by:
+
+        %tmp23 = icmp eq i32 %decl_context_addr.1, 0            ; <i1> [#uses=1]
+        %tmp24 = xor i1 %tmp1, true             ; <i1> [#uses=1]
+        %or.cond8 = and i1 %tmp23, %tmp24               ; <i1> [#uses=1]
+
+later.
+
+