[Bug target/81821] New: [RX] __atomic_test_and_set overwrites adjacent memory
olegendo at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Aug 11 13:35:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81821
Bug ID: 81821
Summary: [RX] __atomic_test_and_set overwrites adjacent memory
Product: gcc
Version: 7.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: olegendo at gcc dot gnu.org
Target Milestone: ---
__atomic_test_and_set is supposed to change only one byte, but on RX it wrongly
overwrites adjacent memory locations:
int test (volatile char* x)
{
return __atomic_test_and_set (x, 0);
}
__Z4testPVc:
mov #1, r14
xchg [r1], r14 // xchg is 32 bit
movu.B r14, r1
rts
It seems a .b or .w specifier can be added to the memory operand of xchg.
More information about the Gcc-bugs
mailing list