int *bar(void);
int foo()
{
if ((*bar() ? *bar() : 0))
return 1;
}
Compiling this code with sdcc test.c -mstm8 results in this output, which goes on for 5391 lines. Tested with commit 11662 :
test.c:5: error 9: FATAL Compiler Internal Error in file 'gen.c' line number '7310' : Unimplemented multibyte sign extension for bit-field.
Contact Author with source code
(same error repeats many times)
Diff:
Apparently the front-end already introduces a variable of type __bit. Such variables are not supported in the stm8 backend (unless directly used in an ifxForOp). So the code generator (not knowing about __bit) assumes it to be a bit-field, resulting in the error.
With revision [r11672] exact duplicates of previously issued diagnostic messages are now suppressed.
Fixed in [r11680]