A isel deficiency.
authorEvan Cheng <evan.cheng@apple.com>
Mon, 22 May 2006 05:54:49 +0000 (05:54 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Mon, 22 May 2006 05:54:49 +0000 (05:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28427 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index 2b7989bbe0531ad0a451f283eb82709d63f5ee8f..e4a9b55c454c6b2cfc11dbd948458ed9ccb7c530 100644 (file)
@@ -586,4 +586,23 @@ as available and put it in some work list. Select other nodes in the normal
 manner. The chain operands are selected after all other nodes are selected. Uses
 of chain nodes are modified after instruction selection is completed.
 
+//===---------------------------------------------------------------------===//
+
+Another instruction selector deficiency:
+
+void %bar() {
+       %tmp = load int (int)** %foo
+       %tmp = tail call int %tmp( int 3 )
+       ret void
+}
+
+_bar:
+       subl $12, %esp
+       movl L_foo$non_lazy_ptr, %eax
+       movl (%eax), %eax
+       call *%eax
+       addl $12, %esp
+       ret
 
+The current isel scheme will not allow the load to be folded in the call since
+the load's chain result is read by the callseq_start.