https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64659
Bug ID: 64659
Summary: [SH] Immedate values not used for atomic ops
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: olegendo at gcc dot gnu.org
Target: sh*-*-*
Compiling the following example:
void test4 (volatile int* mem)
{
__atomic_or_fetch (mem, 1, __ATOMIC_ACQ_REL);
}
with -O2 -m4a -m{l|b} -matomic-model=soft-gusa results in:
mov #1,r1
0: movli.l @r4,r0 ! 7 atomic_or_fetchsi_hard [length = 8]
or r1,r0
movco.l r0,@r4
bf 0b
rts
nop
For some reason, the predicates 'atomic_arith_operand' and
'atomic_logical_operand' don't allow immediate values, although they are
supposed to do so.