In C, every operation is perfomed with at least int, even if all the operands have a smaller type.
Ask google for "Usual Arithmetic Conversions" for details.
The compiler is right that (unsigned short)-(unsigned short) is a int for the Coldfire processor.
For the HC08, as the unsigned short has the same size as int, the result it a unsigned int.
I guess because short and int have the same size, the HC08 compiler did not issue a warning, but for the CF compiler it makes sence to issue it.
Daniel