https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116883

            Bug ID: 116883
           Summary: Compile cpp code with rv32imafc_zve32f failed
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: fanghuaqi at vip dot qq.com
  Target Milestone: ---

Test code can be found in https://godbolt.org/z/fWWMbTMod

As below

cat tmp.cpp

#include <riscv_vector.h>

int main()
{
    unsigned long arraya[128], arrayb[128], arrayc[128];
    for (int i; i < 128; i++) 
    {
        arraya[i] = arrayb[i] + arrayc[i];
    }
    return 0;
}

riscv64-unknown-elf-gcc -march=rv32imafc_zve32f -mabi=ilp32f -c tmp.cpp

It will report error like this 

/opt/compiler-explorer/riscv32/gcc-trunk-20240928/riscv32-unknown-linux-gnu/lib/gcc/riscv32-unknown-linux-gnu/15.0.0/include/riscv_vector.h:40:25:
error: ambiguating new declaration of 'vint64m4_t __riscv_vle64(vbool16_t,
const long long int*, unsigned int)'
   40 | #pragma riscv intrinsic "vector"
      |                         ^~~~~~~~
/opt/compiler-explorer/riscv32/gcc-trunk-20240928/riscv32-unknown-linux-gnu/lib/gcc/riscv32-unknown-linux-gnu/15.0.0/include/riscv_vector.h:40:25:
note: old declaration 'vint64m1_t __riscv_vle64(vbool64_t, const long long
int*, unsigned int)'
/opt/compiler-explorer/riscv32/gcc-trunk-20240928/riscv32-unknown-linux-gnu/lib/gcc/riscv32-unknown-linux-gnu/15.0.0/include/riscv_vector.h:40:25:
error: ambiguating new declaration of 'vuint64m4_t __riscv_vle64(vbool16_t,
const long long unsigned int*, unsigned int)'
/opt/compiler-explorer/riscv32/gcc-trunk-20240928/riscv32-unknown-linux-gnu/lib/gcc/riscv32-unknown-linux-gnu/15.0.0/include/riscv_vector.h:40:25:
note: old declaration 'vuint64m1_t __riscv_vle64(vbool64_t, const long long
unsigned int*, unsigned int)'


It works in gcc 13.3.0, clang 19.1.0 and clang truck(20), but failed in gcc
14.1.0/14.2.0/truck(15)

Thanks

Reply via email to