From a49218166597b9465519d91f232ee67f143bf625 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 3 Oct 2024 15:58:47 +0200 Subject: [PATCH 1/3] filter out Loongarch -mabi options for flang-new --- Makefile.system | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.system b/Makefile.system index 9587ce4d3..7bae72855 100644 --- a/Makefile.system +++ b/Makefile.system @@ -1720,8 +1720,8 @@ LAPACK_FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx override FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS)) endif ifeq ($(F_COMPILER),FLANGNEW) -LAPACK_FFLAGS := $(filter-out -m32 -m64 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 -mtune=% ,$(FFLAGS)) -override FFLAGS := $(filter-out -m32 -m64 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 -mtune=% ,$(FFLAGS)) +LAPACK_FFLAGS := $(filter-out -m32 -m64 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 -mtune=% -mabi=% ,$(FFLAGS)) +override FFLAGS := $(filter-out -m32 -m64 -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 -mtune=% -mabi=% ,$(FFLAGS)) endif LAPACK_CFLAGS = $(CFLAGS) From f817f260626744221798dbe9562b87602d1b5938 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 3 Oct 2024 16:01:10 +0200 Subject: [PATCH 2/3] Add simpler EPILOGUE for clang --- common_loongarch64.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common_loongarch64.h b/common_loongarch64.h index 367e5df18..2b48450a2 100644 --- a/common_loongarch64.h +++ b/common_loongarch64.h @@ -281,9 +281,13 @@ REALNAME: ;\ #define GNUSTACK #endif /* defined(__linux__) && defined(__ELF__) */ +#ifdef __clang__ +#define EPILOGUE .end +#else #define EPILOGUE \ .end REALNAME ;\ GNUSTACK +#endif #define PROFCODE From 4f00f02567c660c45901b7946d3997735bd54092 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Thu, 3 Oct 2024 16:06:33 +0200 Subject: [PATCH 3/3] Do not add -mabi flags for Loongson when the compiler is flang --- cmake/fc.cmake | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/cmake/fc.cmake b/cmake/fc.cmake index 8798ce8b4..db818e4a0 100644 --- a/cmake/fc.cmake +++ b/cmake/fc.cmake @@ -61,21 +61,25 @@ if (${F_COMPILER} STREQUAL "GFORTRAN" OR ${F_COMPILER} STREQUAL "F95" OR CMAKE_F endif () if (LOONGARCH64) if (BINARY64) - CHECK_C_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI) - if(COMPILER_SUPPORT_LP64D_ABI) - set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64d") - else() - set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64") - endif () + if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*") + CHECK_C_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI) + if(COMPILER_SUPPORT_LP64D_ABI) + set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64d") + else() + set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64") + endif () + endif () if (INTERFACE64) set(FCOMMON_OPT "${FCOMMON_OPT} -fdefault-integer-8") endif () else () - CHECK_C_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI) - if(COMPILER_SUPPORT_ILP32D_ABI) - set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=ilp32d") - else() - set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp32") + if (NOT CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*") + CHECK_C_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI) + if(COMPILER_SUPPORT_ILP32D_ABI) + set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=ilp32d") + else() + set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp32") + endif () endif () endif () endif ()