Another missed optimization with LICM.
authorBill Wendling <isanbard@gmail.com>
Tue, 2 Oct 2007 21:43:06 +0000 (21:43 +0000)
committerBill Wendling <isanbard@gmail.com>
Tue, 2 Oct 2007 21:43:06 +0000 (21:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42552 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index 517240480d71fba6798c0e038f106d629a6f2917..81e9797f05facc4c43bcf3f88c2974b8f2b0fb22 100644 (file)
@@ -1283,3 +1283,26 @@ vice-versa).
 
 //===---------------------------------------------------------------------===//
 
+For this code:
+
+cond_next603:          ; preds = %bb493, %cond_true336, %cond_next599
+       %v.21050.1 = phi i32 [ %v.21050.0, %cond_next599 ], [ %tmp344, %cond_true336 ], [ %v.2, %bb493 ]                ; <i32> [#uses=1]
+       %maxz.21051.1 = phi i32 [ %maxz.21051.0, %cond_next599 ], [ 0, %cond_true336 ], [ %maxz.2, %bb493 ]             ; <i32> [#uses=2]
+       %cnt.01055.1 = phi i32 [ %cnt.01055.0, %cond_next599 ], [ 0, %cond_true336 ], [ %cnt.0, %bb493 ]                ; <i32> [#uses=2]
+       %byteptr.9 = phi i8* [ %byteptr.12, %cond_next599 ], [ %byteptr.0, %cond_true336 ], [ %byteptr.10, %bb493 ]             ; <i8*> [#uses=9]
+       %bitptr.6 = phi i32 [ %tmp5571104.1, %cond_next599 ], [ %tmp4921049, %cond_true336 ], [ %bitptr.7, %bb493 ]             ; <i32> [#uses=4]
+       %source.5 = phi i32 [ %tmp602, %cond_next599 ], [ %source.0, %cond_true336 ], [ %source.6, %bb493 ]             ; <i32> [#uses=7]
+       %tmp606 = getelementptr %struct.const_tables* @tables, i32 0, i32 0, i32 %cnt.01055.1           ; <i8*> [#uses=1]
+       %tmp607 = load i8* %tmp606, align 1             ; <i8> [#uses=1]
+
+We produce this:
+
+LBB4_70:       # cond_next603
+       movl    -20(%ebp), %esi
+       movl    L_tables$non_lazy_ptr-"L4$pb"(%esi), %esi
+
+However, ICC caches this information before the loop and produces this:
+
+        movl      88(%esp), %eax                                #481.12
+
+//===---------------------------------------------------------------------===//