diff options
author | Fangrui Song <maskray@gcc.gnu.org> | 2024-01-30 20:41:12 -0800 |
---|---|---|
committer | Fangrui Song <maskray@gcc.gnu.org> | 2024-02-21 17:20:33 -0800 |
commit | 9ca4c1bf082a4691482ca9f4814fea68f04e2cb3 (patch) | |
tree | f8d9d16e3e47513753249df4886d8af318d85841 | |
parent | 98004ca00e4bf7a513cf3de65d3c3d9ad373872e (diff) | |
download | gcc-9ca4c1bf082a4691482ca9f4814fea68f04e2cb3.zip gcc-9ca4c1bf082a4691482ca9f4814fea68f04e2cb3.tar.gz gcc-9ca4c1bf082a4691482ca9f4814fea68f04e2cb3.tar.bz2 |
RISC-V: Add tests for constraints "i" and "s"
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.
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c | 14 |
1 files changed, 14 insertions, 0 deletions
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 0000000..28305a8 --- /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" } } */ |