Assertion failure with __builtin_isless

The following program fragment gets me an assertion error:

union anything
{
        long integer;
        float float_number;
};

int is_lt(const union anything *a, const union anything *b)
{
        return __builtin_isless(((float)a->integer), (b->float_number));
}

$ clang -emit-llvm-bc test.c
Assertion failed: (getOperand(0)->getType() == getOperand(1)->getType() && "Both operands to FCmp instruction are not of the same type!"), function FCmpInst, file /usr/tmp/cvs/llvm/include/llvm/Instructions.h, line 776.
[1] 67289 abort (core dumped) clang -emit-llvm-bc test.c
$

But both arguments to __builtin_isless are floats, right?

Currently running llvm tree rev 52681.

Please report this problem in our Bugzilla (http://llvm.org/bugs/), otherwise it may get lost.

Thanks,
Nuno

The following program fragment gets me an assertion error:

Fixed,
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080623/006278.html

-Chris