https://llvm.org/bugs/show_bug.cgi?id=27081
Bug ID: 27081
Summary: invalid instruction generated for atomic store of
__int128 on aarch64
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: Backend: AArch64
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Classification: Unclassified
The following program generates an invalid instruction on llvm trunk.
```
#include <atomic>
#include <stdint.h>
std::atomic<__int128> a;
__attribute__((noinline)) void f(int64_t v)
{
a.store(v);
}
int main()
{
f(1);
return 0;
}
```
The assembly is
```
0000000000400610 <_Z1fl>:
400610: 90000089 adrp x9, 410000 <__FRAME_END__+0xf8a0>
400614: 937ffc08 asr x8, x0, #63
400618: 91278129 add x9, x9, #0x9e0
40061c: c87ffd3f ldaxp xzr, xzr, [x9]
400620: c82aa120 stlxp w10, x0, x8, [x9]
400624: 35ffffca cbnz w10, 40061c <_Z1fl+0xc>
400628: d65f03c0 ret
```
And the `ldaxp` instruction raise a SIGILL.
(GCC raises a linker error in this case...)
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs