fix PR8961 - a fast isel miscompilation where we'd insert a new instruction
authorChris Lattner <sabre@nondot.org>
Fri, 14 Jan 2011 00:01:01 +0000 (00:01 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 14 Jan 2011 00:01:01 +0000 (00:01 +0000)
commitd7540414935fb30405ed07a9b193d3f8748f5274
treeef31a6f314c12702e92c24d16f78fc61b3b166ad
parenteea666f216ad3a8f8cd88a969176f86add7228f3
fix PR8961 - a fast isel miscompilation where we'd insert a new instruction
after sext's generated for addressing that got folded.  Previously we compiled
test5 into:

_test5:                                 ## @test5
## BB#0:
        movq    -8(%rsp), %rax          ## 8-byte Reload
        movq    (%rdi,%rax), %rdi
        addq    %rdx, %rdi
        movslq  %esi, %rax
        movq    %rax, -8(%rsp)          ## 8-byte Spill
        movq    %rdi, %rax
        ret

which is insane and wrong.  Now we produce:

_test5:                                 ## @test5
## BB#0:
movslq %esi, %rax
movq (%rdi,%rax), %rax
addq %rdx, %rax
ret

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123414 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86FastISel.cpp
test/CodeGen/X86/fast-isel-gep.ll