From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7814) id 368503858D1E; Thu, 22 Feb 2024 01:20:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 368503858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708564839; bh=BY9tisUj/eQ52yZbWTXdibPzU2mwKl4RVUUQVU/imWw=; h=From:To:Subject:Date:From; b=hvkQaBrqLEgNbaHoUtRDYmJ4ZBsq76RAon5ykR+ALKrSa0GwGk/SDLIv0dbF83JjA N747On4L5ksQQZmvEgiW8TOsEk/S7QdpKVbdQlRsSdk+j8UqQgNhsXjhD59vk4nroH zyM2/hBZb7s1/DECRQTTmupoA55Rvq4yQyc9B3Bg= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Fangrui Song To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-9127] RISC-V: Add tests for constraints "i" and "s" X-Act-Checkin: gcc X-Git-Author: Fangrui Song X-Git-Refname: refs/heads/master X-Git-Oldrev: 98004ca00e4bf7a513cf3de65d3c3d9ad373872e X-Git-Newrev: 9ca4c1bf082a4691482ca9f4814fea68f04e2cb3 Message-Id: <20240222012039.368503858D1E@sourceware.org> Date: Thu, 22 Feb 2024 01:20:39 +0000 (GMT) List-Id: https://gcc.gnu.org/g:9ca4c1bf082a4691482ca9f4814fea68f04e2cb3 commit r14-9127-g9ca4c1bf082a4691482ca9f4814fea68f04e2cb3 Author: Fangrui Song Date: Tue Jan 30 20:41:12 2024 -0800 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. Diff: --- gcc/testsuite/gcc.target/riscv/asm-raw-symbol.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 000000000000..28305a8b1f0f --- /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" } } */