LGTM, but I am OoO today, will commit that once I have laptop :p Fangrui Song <mask...@google.com> 於 2024年2月22日 週四 05:54 寫道:
> On Tue, Feb 13, 2024 at 10:36 PM Fangrui Song <mask...@google.com> wrote: > > > > The constraints "i" and "s" can be used with a symbol that binds > > externally, e.g. > > ``` > > namespace ns { extern int var, a[4]; } > > void foo() { > > asm(".pushsection .xxx,\"aw\"; .dc.a %0; .popsection" :: > "s"(&ns::var)); > > asm(".reloc ., BFD_RELOC_NONE, %0" :: "s"(&ns::a[3])); > > } > > ``` > > > > gcc/testsuite/ChangeLog: > > > > * gcc.target/riscv/asm-raw-symbol.c: New test. > > --- > > gcc/doc/md.texi | 2 +- > > gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c | 14 ++++++++++++++ > > 2 files changed, 15 insertions(+), 1 deletion(-) > > create mode 100644 gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c > > > > diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi > > index b0c61925120..c75e5bf259d 100644 > > --- a/gcc/doc/md.texi > > +++ b/gcc/doc/md.texi > > @@ -1947,7 +1947,7 @@ Integer constant that is valid as an immediate > operand in a 64-bit @code{MOV} > > pseudo instruction > > > > @item S > > -An absolute symbolic address or a label reference > > +A symbolic reference or label reference. > > > > @item Y > > Floating point constant zero > > diff --git a/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c > b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c > > new file mode 100644 > > index 00000000000..28305a8b1f0 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c > > @@ -0,0 +1,14 @@ > > +/* { dg-do compile } */ > > +/* { dg-options "-fpic" } */ > > + > > +extern int var, arr[2][2]; > > + > > +void > > +test (void) > > +{ > > + __asm__ ("@ %0" : : "i"(&var)); > > + __asm__ ("@ %0 %1 %2" : : "s"(&var), "s"(&arr[1][1]), "s"(test)); > > +} > > + > > +/* { dg-final { scan-assembler "@ var arr\\+12 test" } } */ > > +/* { dg-final { scan-assembler "@ var" } } */ > > -- > > 2.43.0.687.g38aa6559b0-goog > > > > Ping:) > > > -- > 宋方睿 >