From: Zhijin Zeng <[email protected]> The RISC-V vector function name mangling specification decorated with OpenMP has been merged.
``` mangled-vector-name := "_ZGV" <isa> <mask> <len> <parameters> "_" <func-name> isa := r<lmul> ``` More details in https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/455 To support ISA mangles such as `r1`, `r2`, I add a new `extend_isa_mangle` array. When `vecsize_mangle` is set to `W`, `extend_isa_mangle` is enabled to support ISA mangles longer than one byte. gcc/ChangeLog: * cgraph.h (struct cgraph_simd_clone): * omp-simd-clone.cc (simd_clone_mangle): --- gcc/cgraph.h | 5 +++++ gcc/omp-simd-clone.cc | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/cgraph.h b/gcc/cgraph.h index a7e6ab70b6b..7f8403810d1 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -850,6 +850,11 @@ struct GTY(()) cgraph_simd_clone { Vector ABI. */ unsigned char vecsize_mangle; + /* When the vecsize_mangle character is 'W', it indicates that + the ISA mangle will exceed 1 byte, and is thus used to extend + the ISA mangle. */ + unsigned char extend_isa_mangle[4]; + /* True if this is the masked, in-branch version of the clone, otherwise false. */ unsigned int inbranch : 1; diff --git a/gcc/omp-simd-clone.cc b/gcc/omp-simd-clone.cc index 7564846fac4..de6a0e33963 100644 --- a/gcc/omp-simd-clone.cc +++ b/gcc/omp-simd-clone.cc @@ -539,7 +539,10 @@ simd_clone_mangle (struct cgraph_node *node, gcc_assert (vecsize_mangle && maybe_ne (simdlen, 0U)); pp_string (&pp, "_ZGV"); - pp_character (&pp, vecsize_mangle); + if (vecsize_mangle == 'W') + pp_string (&pp, (const char *) clone_info->extend_isa_mangle); + else + pp_character (&pp, vecsize_mangle); pp_character (&pp, mask); unsigned HOST_WIDE_INT len; -- 2.25.1
