aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-05-22 05:54:49 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-05-22 05:54:49 +0000
commit435bcd7f5f988408dd6859e26658ef31d9323081 (patch)
treeb1cf9ef55b3351f77579ef505b38c80479b67f8a
parent0fa145d8b83026b2b0bda8544bf955294afebf73 (diff)
A isel deficiency.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28427 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/README.txt19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt
index 2b7989bbe0..e4a9b55c45 100644
--- a/lib/Target/X86/README.txt
+++ b/lib/Target/X86/README.txt
@@ -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.