This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/80837] [7/8 regression] x86 accessing a member of a 16-byte atomic object generates terrible code: splitting/merging the bytes
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 12 Dec 2017 12:21:47 +0000
- Subject: [Bug target/80837] [7/8 regression] x86 accessing a member of a 16-byte atomic object generates terrible code: splitting/merging the bytes
- Auto-submitted: auto-generated
- References: <bug-80837-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80837
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Can't reproduce. It is true that we now emit the __atomic_load_16 call, but
that was intentional change, and it can't be easily tail call, because the
tailcall pass doesn't understand that the low 8 bytes of the 16 byte structure
are returned the same as the whole structure; I think that is pretty obscure
detail of the ABI, so I think it isn't worth teaching the tailcall pass about
such arch specific complexities.
But I certainly can't reproduce any significant value masking etc., tried
r235002 (+- gcc 6 branchpoint), r247000 (+- gcc 7 branchpoint) as well as
current trunk.
Unless it is something that has been broken on the 7 branch and later fixed.
But have just tried gcc 7.1.0 release and can't reproduce even there.