Skip to content

Conflicting types for target RISCV64_ZVL256B and RISCV64_ZVL128B #5136

@cwt

Description

@cwt

OS: Arch Linux
Compiler: gcc (GCC) 14.2.1 20240910
Hardware: Milk-V(M1) Jupiter (SpacemiT K1/M1)
CFLAGS: quite standard Arch riscv64 makepkg with _zvl256b
Source Tag: v0.3.29

CFLAGS="-march=rv64gcv_zvl256b\
        -mno-strict-align \
        -mabi=lp64d -O2 -pipe -fno-plt -fexceptions \
        -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
        -fstack-clash-protection \
        -fno-omit-frame-pointer"

Errors:

/home/cwt/Projects/Arch/openblas/src/build/kernel/CMakeFiles/strmm_kernel_RN.c:5:15: error: conflicting types for ‘strmm_kernel_RN’; have ‘int(BLASLONG,  BLASLONG,  BLASLONG,
  float,  float *, float *, float *, BLASLONG)’ {aka ‘int(long int,  long int,  long int,  float,  float *, float *, float *, long int)’}                                     
    5 | #define CNAME strmm_kernel_RN                                                                                                                                         
      |               ^~~~~~~~~~~~~~~                                                                                                                                         
/home/cwt/Projects/Arch/openblas/src/OpenBLAS/kernel/riscv64/sgemm_kernel_16x8_zvl256b.c:44:5: note: in expansion of macro ‘CNAME’                                            
   44 | int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, FLOAT* A, FLOAT* B, FLOAT* C, BLASLONG ldc)                                                                
      |     ^~~~~                                                                                                                                                             
In file included from /home/cwt/Projects/Arch/openblas/src/OpenBLAS/common.h:836,                                                                                             
                 from /home/cwt/Projects/Arch/openblas/src/OpenBLAS/kernel/riscv64/sgemm_kernel_16x8_zvl256b.c:41,                                                            
                 from /home/cwt/Projects/Arch/openblas/src/build/kernel/CMakeFiles/strmm_kernel_RN.c:8:                                                                       
/home/cwt/Projects/Arch/openblas/src/OpenBLAS/common_level3.h:164:5: note: previous declaration of ‘strmm_kernel_RN’ with type ‘int(BLASLONG,  BLASLONG,  BLASLONG,  float,  f
loat *, float *, float *, BLASLONG,  BLASLONG)’ {aka ‘int(long int,  long int,  long int,  float,  float *, float *, float *, long int,  long int)’}                          
  164 | int strmm_kernel_RN(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);                                                              
      |     ^~~~~~~~~~~~~~~                                                                                                                                                   
make[2]: *** [kernel/CMakeFiles/kernel.dir/build.make:1899: kernel/CMakeFiles/kernel.dir/CMakeFiles/strmm_kernel_RN.c.o] Error 1                                              
make[2]: *** Waiting for unfinished jobs....

and then

/home/cwt/Projects/Arch/openblas/src/build/kernel/CMakeFiles/strmm_kernel_LN.c:6:15: error: conflicting types for ‘strmm_kernel_LN’; have ‘int(BLASLONG,  BLASLONG,  BLASLONG,
  float,  float *, float *, float *, BLASLONG)’ {aka ‘int(long int,  long int,  long int,  float,  float *, float *, float *, long int)’}
    6 | #define CNAME strmm_kernel_LN
      |               ^~~~~~~~~~~~~~~
/home/cwt/Projects/Arch/openblas/src/OpenBLAS/kernel/riscv64/sgemm_kernel_16x8_zvl256b.c:44:5: note: in expansion of macro ‘CNAME’
   44 | int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, FLOAT* A, FLOAT* B, FLOAT* C, BLASLONG ldc)
      |     ^~~~~
In file included from /home/cwt/Projects/Arch/openblas/src/OpenBLAS/common.h:836,
                 from /home/cwt/Projects/Arch/openblas/src/OpenBLAS/kernel/riscv64/sgemm_kernel_16x8_zvl256b.c:41,
                 from /home/cwt/Projects/Arch/openblas/src/build/kernel/CMakeFiles/strmm_kernel_LN.c:9:
/home/cwt/Projects/Arch/openblas/src/OpenBLAS/common_level3.h:166:5: note: previous declaration of ‘strmm_kernel_LN’ with type ‘int(BLASLONG,  BLASLONG,  BLASLONG,  float,  f
loat *, float *, float *, BLASLONG,  BLASLONG)’ {aka ‘int(long int,  long int,  long int,  float,  float *, float *, float *, long int,  long int)’}
  166 | int strmm_kernel_LN(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
      |     ^~~~~~~~~~~~~~~
make[2]: *** [kernel/CMakeFiles/kernel.dir/build.make:1913: kernel/CMakeFiles/kernel.dir/CMakeFiles/strmm_kernel_LN.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:633: kernel/CMakeFiles/kernel.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

For target RISCV64_ZVL128, I also got the same error:

/home/cwt/Projects/Arch/openblas/src/build/kernel/CMakeFiles/strmm_kernel_RN.c:5:15: error: conflicting types for ‘strmm_kernel_RN’; have ‘int(BLASLONG,  BLASLONG,  BLASLONG,
  float,  float *, float *, float *, BLASLONG)’ {aka ‘int(long int,  long int,  long int,  float,  float *, float *, float *, long int)’}                                     
    5 | #define CNAME strmm_kernel_RN                                                                                                                                         
      |               ^~~~~~~~~~~~~~~                                                                                                                                         
/home/cwt/Projects/Arch/openblas/src/OpenBLAS/kernel/riscv64/sgemm_kernel_8x8_zvl128b.c:44:5: note: in expansion of macro ‘CNAME’                                             
   44 | int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, FLOAT *A, FLOAT *B, FLOAT *C, BLASLONG ldc)                                                                
      |     ^~~~~                                                                                                                                                             
In file included from /home/cwt/Projects/Arch/openblas/src/OpenBLAS/common.h:836,                                                                                             
                 from /home/cwt/Projects/Arch/openblas/src/OpenBLAS/kernel/riscv64/sgemm_kernel_8x8_zvl128b.c:42,                                                             
                 from /home/cwt/Projects/Arch/openblas/src/build/kernel/CMakeFiles/strmm_kernel_RN.c:8:                                                                       
/home/cwt/Projects/Arch/openblas/src/OpenBLAS/common_level3.h:164:5: note: previous declaration of ‘strmm_kernel_RN’ with type ‘int(BLASLONG,  BLASLONG,  BLASLONG,  float,  f
loat *, float *, float *, BLASLONG,  BLASLONG)’ {aka ‘int(long int,  long int,  long int,  float,  float *, float *, float *, long int,  long int)’}                          
  164 | int strmm_kernel_RN(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);                                                              
      |     ^~~~~~~~~~~~~~~                                                                                                                                                   
make[2]: *** [kernel/CMakeFiles/kernel.dir/build.make:1899: kernel/CMakeFiles/kernel.dir/CMakeFiles/strmm_kernel_RN.c.o] Error 1                                              
make[2]: *** Waiting for unfinished jobs....                                                                                                                                  
[ 20%] Building C object driver/level2/CMakeFiles/driver_level2.dir/CMakeFiles/stpmv_thread_TUU.c.o                                                                           
[ 20%] Building C object CMakeFiles/LAPACKE.dir/lapack-netlib/LAPACKE/src/lapacke_sspcon_work.c.o                                                                             
[ 20%] Building C object interface/CMakeFiles/interface.dir/CMakeFiles/dgemmt.c.o                                                                                             
[ 20%] Building C object CMakeFiles/LAPACKE.dir/lapack-netlib/LAPACKE/src/lapacke_sspev.c.o                                                                                   
/home/cwt/Projects/Arch/openblas/src/build/kernel/CMakeFiles/strmm_kernel_LN.c:6:15: error: conflicting types for ‘strmm_kernel_LN’; have ‘int(BLASLONG,  BLASLONG,  BLASLONG,
  float,  float *, float *, float *, BLASLONG)’ {aka ‘int(long int,  long int,  long int,  float,  float *, float *, float *, long int)’}                                     
    6 | #define CNAME strmm_kernel_LN                                                                                                                                         
      |               ^~~~~~~~~~~~~~~                                                                                                                                         
/home/cwt/Projects/Arch/openblas/src/OpenBLAS/kernel/riscv64/sgemm_kernel_8x8_zvl128b.c:44:5: note: in expansion of macro ‘CNAME’                                             
   44 | int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, FLOAT *A, FLOAT *B, FLOAT *C, BLASLONG ldc)                                                                
      |     ^~~~~                                                                                                                                                             
In file included from /home/cwt/Projects/Arch/openblas/src/OpenBLAS/common.h:836,
                 from /home/cwt/Projects/Arch/openblas/src/OpenBLAS/kernel/riscv64/sgemm_kernel_8x8_zvl128b.c:42,
                 from /home/cwt/Projects/Arch/openblas/src/build/kernel/CMakeFiles/strmm_kernel_LN.c:9:
/home/cwt/Projects/Arch/openblas/src/OpenBLAS/common_level3.h:166:5: note: previous declaration of ‘strmm_kernel_LN’ with type ‘int(BLASLONG,  BLASLONG,  BLASLONG,  float,  f
loat *, float *, float *, BLASLONG,  BLASLONG)’ {aka ‘int(long int,  long int,  long int,  float,  float *, float *, float *, long int,  long int)’}
  166 | int strmm_kernel_LN(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
      |     ^~~~~~~~~~~~~~~
[ 20%] Building C object driver/level3/CMakeFiles/driver_level3.dir/CMakeFiles/dtrsm_LTLU.c.o
[ 20%] Building Fortran object CMakeFiles/LAPACK_OVERRIDES.dir/lapack-netlib/SRC/sgeequb.f.o
make[2]: *** [kernel/CMakeFiles/kernel.dir/build.make:1913: kernel/CMakeFiles/kernel.dir/CMakeFiles/strmm_kernel_LN.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:633: kernel/CMakeFiles/kernel.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions