The regresion test mentioned above fails to compile (with a proper error message for targets that do not support long long, and with a crash otherwise).
Revision #7477 implements a few more of the needed pieces of long long support in the front end. The assignment "*p2 += *p2" is being transformed into "*p2 = *p2 << 1", but the port struct indicates that the back end can only directly handle shifts with variables of up to 2 bytes. So the shift is being replaced with a call to a support function. Previously sdcc was crashing because it had no internal declaration of a suitable support function. Now the back end is reporting internal errors because it does not know how to handle a function returning a long long.
Returning long long was implemented some time ago. I just tested, and this test passes for me for the ports that support long long, so I enabled the test for them in revision #8108.
Sign up for the SourceForge newsletter:
You seem to have CSS turned off.
Please don't fill out this field.