to Brian and the Sun compiler for pointing out that the obvious works :)
This also enables folding all long comparisons into setcc and branch
instructions: before we could only do == and !=
For example, for:
void test(unsigned long long A, unsigned long long B) {
if (A < B) foo();
}
We now generate:
test:
subl $4, %esp
movl %esi, (%esp)
movl 8(%esp), %eax
movl 12(%esp), %ecx
movl 16(%esp), %edx
movl 20(%esp), %esi
subl %edx, %eax
sbbl %esi, %ecx
jae .LBBtest_2 # UnifiedReturnBlock
.LBBtest_1: # then
call foo
movl (%esp), %esi
addl $4, %esp
ret
.LBBtest_2: # UnifiedReturnBlock
movl (%esp), %esi
addl $4, %esp
ret
Instead of:
test:
subl $12, %esp
movl %esi, 8(%esp)
movl %ebx, 4(%esp)
movl 16(%esp), %eax
movl 20(%esp), %ecx
movl 24(%esp), %edx
movl 28(%esp), %esi
cmpl %edx, %eax
setb %al
cmpl %esi, %ecx
setb %bl
cmove %ax, %bx
testb %bl, %bl
je .LBBtest_2 # UnifiedReturnBlock
.LBBtest_1: # then
call foo
movl 4(%esp), %ebx
movl 8(%esp), %esi
addl $12, %esp
ret
.LBBtest_2: # UnifiedReturnBlock
movl 4(%esp), %ebx
movl 8(%esp), %esi
addl $12, %esp
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18330 91177308-0d34-0410-b5e6-96231b3b80d8
* Get rid of appending -lbz2 and -lz to ExtraLibs now that we don't need
them any more.
* Fix the dist-check target so that EXTRA_DIST can be defined AFTER the
include of Makefile.common. This is needed because Makefile.common
provides variable definitions that may need to be used in computing the
value of EXTRA_DIST.
* Clean up some "distdir" target output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18329 91177308-0d34-0410-b5e6-96231b3b80d8
* organize programs we test for properly
* add new programs needed for documentation generation
* Adjust install paths so llvm stuff doesn't muck up /usr/local or /usr if
$prefix is set to those.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18327 91177308-0d34-0410-b5e6-96231b3b80d8
* Ensure things installed to same place are all getting there by using a
variable to name that place.
* Make sure missing index.html, images and *.css files get installed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18321 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement installation of doxygen and html documentation
* Fix it so it works with objdir != srcdir.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18318 91177308-0d34-0410-b5e6-96231b3b80d8
This file was originally doxygen.cfg, but it needs to be configured to get
the right srcdir/objdir paths for things. This is needed because building
the doxygen will now be part of the install and dist-check targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18315 91177308-0d34-0410-b5e6-96231b3b80d8
casts through, but they will only be sbyte -> ubyte in this test case so
make sure we don't let any other kinds through.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18313 91177308-0d34-0410-b5e6-96231b3b80d8
* Make sure we handle signed to unsigned conversion correctly
* Move this visitSetCondInst case to its own method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18312 91177308-0d34-0410-b5e6-96231b3b80d8