[Bug tree-optimization/80292] New: __m64 type-attribute may_alias ignored
bernd.edlinger at hotmail dot de
gcc-bugzilla@gcc.gnu.org
Mon Apr 3 14:57:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80292
Bug ID: 80292
Summary: __m64 type-attribute may_alias ignored
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: bernd.edlinger at hotmail dot de
Target Milestone: ---
In the following program both may_alias attribute
on j, k and the may_alias type-attribute is ignored:
cat t1.c
#include <x86intrin.h>
__m64 j __attribute__((may_alias)), k __attribute__((may_alias));
long *jj,*kk;
__m64 __attribute__((noinline, noclone))
test()
{
j = k;
*jj = *kk;
return j;
}
int main()
{
asm("":"=m"(j), "=m"(k), "=m"(jj), "=m"(kk));
test();
}
gcc -O3 -S t1.c
compiler output:
test:
.LFB4953:
.cfi_startproc
movq kk(%rip), %rax
movq k(%rip), %xmm0
movq %xmm0, j(%rip)
movq (%rax), %rdx
movq jj(%rip), %rax
movq %rdx, (%rax)
ret
.cfi_endproc
but *kk may alias j, thus value in xmm0 is stale.
More information about the Gcc-bugs
mailing list