[Bug target/102143] ABI incompatibility with clang when passing 32bit vectors on 32bit i686
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Sep 1 07:24:03 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102143
--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to H.J. Lu from comment #1)
> 16-bit and 32-bit vector pass and return are not specified in i386 psABI.
> 64-bit vector is specified, not really usable. Any suggestions?
With -mno-sse, clang creates:
foo:
movzwl 16(%esp), %edx
movzwl 12(%esp), %eax
addw 4(%esp), %ax
addw 8(%esp), %dx
retl
So, it is incompatible with itself for -msse/-mno-sse differences. The ABI
should be ISA agnostic, so using integer ABI as implemented by gcc is IMO the
way to go.
More information about the Gcc-bugs
mailing list