Bug 109228 - warning: implicit declaration of function '__riscv_vlenb'
Summary: warning: implicit declaration of function '__riscv_vlenb'
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 13.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-03-21 08:54 UTC by Mathieu Malaterre
Modified: 2023-03-23 06:58 UTC (History)
3 users (show)

See Also:
Host:
Target: riscv64
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mathieu Malaterre 2023-03-21 08:54:43 UTC
On riscv64 I am getting the following error with gcc-13:

% cat t.c
#include <riscv_vector.h>

unsigned long test_vlenb(void) {
  return __riscv_vlenb();
}

Leads to:


% LIBRARY_PATH=/usr/lib/gcc-snapshot/lib /usr/lib/gcc-snapshot/bin/gcc  -march=rv64gcv1p0  -c -v t.c
Using built-in specs.
COLLECT_GCC=/usr/lib/gcc-snapshot/bin/gcc
Target: riscv64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 20230315-1' --with-bugurl=file:///usr/share/doc/gcc-snapshot/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust --prefix=/usr/lib/gcc-snapshot --with-gcc-major-version-only --program-prefix= --enable-shared --enable-linker-build-id --disable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-multilib --with-arch=rv64gc --with-abi=lp64d --enable-checking=yes --build=riscv64-linux-gnu --host=riscv64-linux-gnu --target=riscv64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.0.1 20230315 (experimental) [master r13-6680-ga9ae16db8cb] (Debian 20230315-1)
COLLECT_GCC_OPTIONS='-march=rv64gcv1p0' '-c' '-v' '-mabi=lp64d' '-misa-spec=20191213' '-march=rv64imafdc_v1p0_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b'
 /usr/lib/gcc-snapshot/libexec/gcc/riscv64-linux-gnu/13/cc1 -quiet -v -imultilib . -imultiarch riscv64-linux-gnu t.c -quiet -dumpbase t.c -dumpbase-ext .c -march=rv64gcv1p0 -mabi=lp64d -misa-spec=20191213 -march=rv64imafdc_v1p0_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b -version -o /tmp/ccJgYXea.s
GNU C17 (Debian 20230315-1) version 13.0.1 20230315 (experimental) [master r13-6680-ga9ae16db8cb] (riscv64-linux-gnu)
        compiled by GNU C version 13.0.1 20230315 (experimental) [master r13-6680-ga9ae16db8cb], GMP version 6.2.1, MPFR version 4.2.0, MPC version 1.3.1, isl version isl-0.25-GMP

GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
ignoring nonexistent directory "/usr/local/include/riscv64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc-snapshot/lib/gcc/riscv64-linux-gnu/13/include-fixed/riscv64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc-snapshot/lib/gcc/riscv64-linux-gnu/13/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc-snapshot/lib/gcc/riscv64-linux-gnu/13/../../../../riscv64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc-snapshot/lib/gcc/riscv64-linux-gnu/13/include
 /usr/local/include
 /usr/lib/gcc-snapshot/include
 /usr/include/riscv64-linux-gnu
 /usr/include
End of search list.
Compiler executable checksum: 81700f2a313a464c1070ea0a35a4372b
t.c: In function 'test_vlenb':
t.c:4:10: warning: implicit declaration of function '__riscv_vlenb'; did you mean '__riscv_vlm_v_b1'? [-Wimplicit-function-declaration]
    4 |   return __riscv_vlenb();
      |          ^~~~~~~~~~~~~
      |          __riscv_vlm_v_b1
COLLECT_GCC_OPTIONS='-march=rv64gcv1p0' '-c' '-v' '-mabi=lp64d' '-misa-spec=20191213' '-march=rv64imafdc_v1p0_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b'
 as -v --traditional-format -march=rv64gcv1p0 -march=rv64imafdc_v1p0_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b -mabi=lp64d -misa-spec=20191213 -o t.o /tmp/ccJgYXea.s
GNU assembler version 2.40 (riscv64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.40
COMPILER_PATH=/usr/lib/gcc-snapshot/libexec/gcc/riscv64-linux-gnu/13/:/usr/lib/gcc-snapshot/libexec/gcc/riscv64-linux-gnu/13/:/usr/lib/gcc-snapshot/libexec/gcc/riscv64-linux-gnu/:/usr/lib/gcc-snapshot/lib/gcc/riscv64-linux-gnu/13/:/usr/lib/gcc-snapshot/lib/gcc/riscv64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc-snapshot/lib/:/usr/lib/gcc-snapshot/lib/gcc/riscv64-linux-gnu/13/:/lib/riscv64-linux-gnu/:/lib/:/usr/lib/riscv64-linux-gnu/:/usr/lib/
COLLECT_GCC_OPTIONS='-march=rv64gcv1p0' '-c' '-v' '-mabi=lp64d' '-misa-spec=20191213' '-march=rv64imafdc_v1p0_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b'
Comment 1 Kito Cheng 2023-03-21 10:27:53 UTC
Thanks for report! we definitely missed that...
Comment 2 Mathieu Malaterre 2023-03-21 11:09:06 UTC
For later reference:

* https://github.com/riscv-non-isa/rvv-intrinsic-doc/pull/216/files
Comment 3 JuzheZhong 2023-03-22 05:07:53 UTC
Fixed by the following patch:
https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614397.html

Let's wait for review and merged.

Thanks.
Comment 4 GCC Commits 2023-03-23 03:22:50 UTC
The master branch has been updated by Kito Cheng <kito@gcc.gnu.org>:

https://gcc.gnu.org/g:116a8678840f9f52ec14639ff07e302a8c429f32

commit r13-6822-g116a8678840f9f52ec14639ff07e302a8c429f32
Author: Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
Date:   Wed Mar 22 13:06:23 2023 +0800

    RISC-V: Implement __riscv_vlenb PR109228
    
    __riscv_vlenb is defined in RVV intrinsic spec 0.11 and used in some project
    like google/highway.
    
    gcc/ChangeLog:
    
            PR target/109228
            * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
            __riscv_vlenb support.
            (BASE): Ditto.
            * config/riscv/riscv-vector-builtins-bases.h: Ditto.
            * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
            * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
            (SHAPE): Ditto.
            * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
            * config/riscv/riscv-vector-builtins.cc: Ditto.
    
    gcc/testsuite/ChangeLog:
    
            PR target/109228
            * gcc.target/riscv/rvv/base/vlenb-1.c: New test.
Comment 5 Kito Cheng 2023-03-23 03:24:19 UTC
Fixed!
Comment 6 Jan Wassenberg 2023-03-23 06:58:35 UTC
Nice, thank you Mathieu, Kito and JuzheZhong!