On Wed, Dec 18, 2024 at 01:19:43PM +0100, Andreas Schwab wrote: > On Dez 12 2024, Jakub Jelinek wrote: > > > The intent was to test %cN because %N doesn't DTRT on various targets. > > I have a patch to add %ccN support which should then work even on riscv > > hopefully, but unfortunately it hasn't been fully reviewed yet. > > That didn't change toplevel-asm-1, so the failure remains.
Yes, I've only committed what was approved. The following patch ought to fix this (and if there are other targets which don't really support %cN for SYMBOL_REFs even with -fno-pic, they can be added there too; I think it is useful to test %cN on the targets where it works though). Tested on x86_64-linux and with cross to riscv64-linux, ok for trunk? 2024-12-18 Jakub Jelinek <ja...@redhat.com> * c-c++-common/toplevel-asm-1.c: Use %cc3 %cc4 instead of %c3 %c4 on riscv. --- gcc/testsuite/c-c++-common/toplevel-asm-1.c.jj 2024-12-05 09:24:54.788005777 +0100 +++ gcc/testsuite/c-c++-common/toplevel-asm-1.c 2024-12-18 19:06:33.567248675 +0100 @@ -8,7 +8,12 @@ enum E { E0, E1 = sizeof (struct S) + 15 int v[42]; void foo (void) {} +/* Not all targets can use %cN even in non-pic code. */ +#if defined(__riscv) +asm ("# %0 %1 %2 %cc3 %cc4 %5 %% %=" +#else asm ("# %0 %1 %2 %c3 %c4 %5 %% %=" +#endif :: "i" (sizeof (struct S)), "i" (__builtin_offsetof (struct S, c)), "i" (E1), Jakub