target: [PR102941] Fix inline-asm flags with non-REG_P output
authorAndrew Pinski <apinski@marvell.com>
Tue, 26 Oct 2021 07:28:09 +0000 (07:28 +0000)
committerAndrew Pinski <apinski@marvell.com>
Fri, 7 Jan 2022 22:02:44 +0000 (22:02 +0000)
commit997130f778c56466a825627644e510960585521b
tree4a959c3e8275b9c20937e24d0f277143c0f025fa
parent42ae7ebfb2665f8565c8d6c04f6214785a6765ce
target: [PR102941] Fix inline-asm flags with non-REG_P output

So the problem here is that arm_md_asm_adjust would
just create a set directly to the output memory which is wrong.
It needs to output to a temp register first and then do a
move.

OK? Bootstrapped and tested on aarch64-linux-gnu with no regressions.
I have no way to test on arm even though this touches common code.

PR target/102941

gcc/ChangeLog:

* config/arm/aarch-common.c (arm_md_asm_adjust):
Use a temp if !REG_P.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/asm-flag-7.c: New test.
* gcc.target/arm/asm-flag-7.c: New test.
gcc/config/arm/aarch-common.c
gcc/testsuite/gcc.target/aarch64/asm-flag-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/asm-flag-7.c [new file with mode: 0644]