Skip to content

LLVM backend miscompilation

This Cmm program produces different result when compiled using the NCG and LLVM backends:

test() {
  return (%zx64(%lobits16(%zx32(%lobits8((%lobits16(%shl((1 :: bits32), (45 :: bits64))) ^ (1 :: bits16)))))));
}

The NCG returns 1 while LLVM returns 0 with -O0 and 0x7ff3a69bc010 with -O1. I believe 1 is correct.

Edited by Ben Gamari
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information