Don't clear most significant bits for <32bit return types on Intel [breaks Ubuntu 8.10]

Description

A bug exposed in Ubuntu 8.10 is that return types smaller than a word are treated as words so:

return (result == CPNATIVE_OK) ? 1 : 0

becomes:

test edi, edi
sete al

without eax having been cleared. As we look at eax we see both the least significant byte (of 0 or 1) and junk in the most significant 3 bytes. This is sufficient to not allow Jikes RVM to run several of the DaCapo benchmarks on Ubuntu 8.10.

Environment

Ubuntu 8.10 x86-64-linux

Assignee

Ian Rogers

Reporter

Ian Rogers

Labels

None

Fix versions

Priority

Highest
Configure