I was reading the 1.041's back-end code. Here's something that looked wrong to me: in cgelem.c, in function elcmp(), at line 3318:
case 4: if (sz > 2) e = el_una(OPu32_64,TYshort,e); else e = el_una(OP32_16,TYshort,e); break; Specifically the line e = el_una(OPu32_64,TYshort,e); looks wrong, the unary operator type should be 64 bit, not short. Am I missing something?