Compiler crashes when doing long multiplications. The crash is caused by convilong (SDCCopt.c) is trashing the operands used by other long multiplications. In other words the first multiply is converted to a library call and at the same time trashing the operands. When converting the second multiply the compiler crashes. This bug is possibly affecting other ports as well.
sdcc -mstm8 -I /somepath/include/ -L /somepath/device/lib/build/stm8/ -c test_convilong_bug.c test_convilong_bug.c:13: error 9: FATAL Compiler Internal Error in file '../../src/SDCCopt.c' line number '804' : 0 Contact Author with source code
Test was done on latest trunk version.
This issue seems specific to backends that have support for 16x16->32 multiplications. Backends that only support 32x32->32 do not seem affected.
Philipp
Fixed in [r10258].
Philipp