From 435bcd7f5f988408dd6859e26658ef31d9323081 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Mon, 22 May 2006 05:54:49 +0000 Subject: [PATCH] A isel deficiency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28427 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/README.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt index 2b7989bbe05..e4a9b55c454 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. -- 2.34.1