Johan Engelen reports:
import core.stdc.stdio;
void main() {
uint total = 0;
void add(int x) { total += x; }
ubyte popCount() { return 5; }
add(popCount());
add(-popCount());
printf("%u\n", total); // different result from C
}
The trouble is that -popCount() negates the ubyte before promoting to int, instead of after.
Comment #1 by bugzilla — 2017-07-22T09:50:33Z
16997 has a more succint test case.
*** This issue has been marked as a duplicate of issue 16997 ***