The pic16 port is broken the same way that the stm8 port was broken (bug 2170#, fixed in revision #8914): genIFx with float operand doesn't handle the sign bit correctly, and thus fails for negative zero. Fixing this should make the pic16 port pass some float regression tests, probably float_single.
Philipp