Handle i1/i8/i16 constant integer arguments to calls by prepromoting them.
commite03b8d31624b415805940500a40195a540ca94be
authorChris Lattner <sabre@nondot.org>
Tue, 19 Apr 2011 04:42:38 +0000 (19 04:42 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 19 Apr 2011 04:42:38 +0000 (19 04:42 +0000)
treea00dc6a2ad6e4d5e68acd9e9190a3b7fef15fa51
parentc76d12180765782d6abd0fdeb359c3fec7983e2c
Handle i1/i8/i16 constant integer arguments to calls by prepromoting them.
Before we would bail out on i1 arguments all together, now we just bail on
non-constant ones.  Also, we used to emit extraneous code.  e.g. test12 was:

movb $0, %al
movzbl %al, %edi
callq _test12

and test13 was:
movb $0, %al
xorl %edi, %edi
movb %al, 7(%rsp)
callq _test13f

Now we get:

movl $0, %edi
callq _test12
and:
movl $0, %edi
callq _test13f

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