From 2bb6d459e6efa4a5b36283ac02c9a8c388df3338 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Tue, 2 Oct 2007 21:43:06 +0000 Subject: [PATCH] Another missed optimization with LICM. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42552 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/README.txt | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt index 517240480d7..81e9797f05f 100644 --- a/lib/Target/X86/README.txt +++ b/lib/Target/X86/README.txt @@ -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 ] ; [#uses=1] + %maxz.21051.1 = phi i32 [ %maxz.21051.0, %cond_next599 ], [ 0, %cond_true336 ], [ %maxz.2, %bb493 ] ; [#uses=2] + %cnt.01055.1 = phi i32 [ %cnt.01055.0, %cond_next599 ], [ 0, %cond_true336 ], [ %cnt.0, %bb493 ] ; [#uses=2] + %byteptr.9 = phi i8* [ %byteptr.12, %cond_next599 ], [ %byteptr.0, %cond_true336 ], [ %byteptr.10, %bb493 ] ; [#uses=9] + %bitptr.6 = phi i32 [ %tmp5571104.1, %cond_next599 ], [ %tmp4921049, %cond_true336 ], [ %bitptr.7, %bb493 ] ; [#uses=4] + %source.5 = phi i32 [ %tmp602, %cond_next599 ], [ %source.0, %cond_true336 ], [ %source.6, %bb493 ] ; [#uses=7] + %tmp606 = getelementptr %struct.const_tables* @tables, i32 0, i32 0, i32 %cnt.01055.1 ; [#uses=1] + %tmp607 = load i8* %tmp606, align 1 ; [#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 + +//===---------------------------------------------------------------------===//