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

Reply via email to