Skip to content

Commit 68eefe6

Browse files
authored
Merge pull request #4915 from martin-frbg/issue4907
Support LoongArch64 compilation with LLVM
2 parents de421b7 + 4f00f02 commit 68eefe6

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

Makefile.system

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1720,8 +1720,8 @@ LAPACK_FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx
17201720
override FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS))
17211721
endif
17221722
ifeq ($(F_COMPILER),FLANGNEW)
1723-
LAPACK_FFLAGS := $(filter-out -m32 -m64 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 -mtune=% ,$(FFLAGS))
1724-
override FFLAGS := $(filter-out -m32 -m64 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 -mtune=% ,$(FFLAGS))
1723+
LAPACK_FFLAGS := $(filter-out -m32 -m64 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 -mtune=% -mabi=% ,$(FFLAGS))
1724+
override FFLAGS := $(filter-out -m32 -m64 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 -mtune=% -mabi=% ,$(FFLAGS))
17251725
endif
17261726

17271727
LAPACK_CFLAGS = $(CFLAGS)

cmake/fc.cmake

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,25 @@ if (${F_COMPILER} STREQUAL "GFORTRAN" OR ${F_COMPILER} STREQUAL "F95" OR CMAKE_F
6161
endif ()
6262
if (LOONGARCH64)
6363
if (BINARY64)
64-
CHECK_C_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI)
65-
if(COMPILER_SUPPORT_LP64D_ABI)
66-
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64d")
67-
else()
68-
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64")
69-
endif ()
64+
if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*")
65+
CHECK_C_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI)
66+
if(COMPILER_SUPPORT_LP64D_ABI)
67+
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64d")
68+
else()
69+
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64")
70+
endif ()
71+
endif ()
7072
if (INTERFACE64)
7173
set(FCOMMON_OPT "${FCOMMON_OPT} -fdefault-integer-8")
7274
endif ()
7375
else ()
74-
CHECK_C_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI)
75-
if(COMPILER_SUPPORT_ILP32D_ABI)
76-
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=ilp32d")
77-
else()
78-
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp32")
76+
if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*")
77+
CHECK_C_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI)
78+
if(COMPILER_SUPPORT_ILP32D_ABI)
79+
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=ilp32d")
80+
else()
81+
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp32")
82+
endif ()
7983
endif ()
8084
endif ()
8185
endif ()

common_loongarch64.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,9 +281,13 @@ REALNAME: ;\
281281
#define GNUSTACK
282282
#endif /* defined(__linux__) && defined(__ELF__) */
283283

284+
#ifdef __clang__
285+
#define EPILOGUE .end
286+
#else
284287
#define EPILOGUE \
285288
.end REALNAME ;\
286289
GNUSTACK
290+
#endif
287291

288292
#define PROFCODE
289293

0 commit comments

Comments
 (0)