Comment by fweimer

Comment by fweimer a day ago

4 replies

The LLVM x86-64 ABI requires the top bits to be zero. GCC treats them as undefined. Until a recent clarification, the x86-64 psABI made the upper bits undefined by omission only, which is why I think most people followed the GCC interpretation.

https://github.com/llvm/llvm-project/issues/12579 https://groups.google.com/g/x86-64-abi/c/h7FFh30oS3s/m/Gksan... https://gitlab.com/x86-psABIs/x86-64-ABI/-/merge_requests/61

account42 20 hours ago

GCC is the one defining the effective ABI here so LLVM was always buggy no matter what the spec said / didn't say.

  • gpderetta 19 hours ago

    Actually not, the ABI is a cross vendor initiative.

    • account42 2 hours ago

      In theory. In practice the vast majority of Linux userland programs are compiled with GCC so unless GCC did something particularly braindead they are unlikely to break compatibility with that and so it's the ABI everyone needs to target. Which is also what happened in this case: The standard was updated to mandate the GCC behavior.

mattgodbolt 9 hours ago

Ahhh! Thanks: that helps me understand where I picked up my misinformation!