Also, I came across the bug you fix in part 2 for my cond-optab work.
2009-04-15 Sandra Loosemore <sandra@codesourcery.com>
gcc/
* optabs.c (prepare_float_lib_cmp): Test that the comparison,
swapped, and reversed optabs exist before trying to use them.
This will actually be unnecessary after the cond-optab merge. The bug
here is that can_compare_p tries widening the operand and says "we can
do UNLT by going through SFmode", so that UNLT is not split into
UNORDERED and LT. Then however prepare_cmp_insn does not try widening
and prepare_float_lib_cmp crashes when it tries HFmode because UNLT does
not have a libcall and hence an optab. On the branch, widening is tried
before libcalls, which works.
If I beat you to committing the branch, I'll ask you to try reverting
that part. If (as it is likely) you're first, I'll test whether I can
change this to an assert.