ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong-double-128

Some compiler versions, e.g. GCC 7, complain when -mlong-double-128 is
used together with -mabi=ibmlongdouble or -mabi=ieeelongdouble,
producing the following error message:

  cc1: error: ‘-mabi=ibmlongdouble’ requires ‘-mlong-double-128’

This patch removes -mlong-double-128 from the compilation lines that
explicitly request -mabi=*longdouble.

Tested for powerpc64le.

Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
This commit is contained in:
Gabriel F. T. Gomes 2019-09-10 08:05:03 -05:00
parent 5d73c96f64
commit 9ae967bf45

View File

@ -258,6 +258,13 @@ ldbl-extra-routines += err \
CFLAGS-ieee128-qefgcvt.c += -mabi=ieeelongdouble -Wno-psabi -mno-gnu-attribute
CFLAGS-ieee128-qefgcvt_r.c += -mabi=ieeelongdouble -Wno-psabi -mno-gnu-attribute
# Remove -mlong-double-128 because it does not work correctly with
# -mabi=ibmlongdoule in some GCC versions, e.g. GCC 7.
$(foreach o,$(all-object-suffixes),$(objpfx)ieee128-qefgcvt$(o)): \
sysdep-CFLAGS := $(filter-out -mlong-double-128, $(sysdep-CFLAGS))
$(foreach o,$(all-object-suffixes),$(objpfx)ieee128-qefgcvt_r$(o)): \
sysdep-CFLAGS := $(filter-out -mlong-double-128, $(sysdep-CFLAGS))
tests-internal += tst-ibm128-warn tst-ieee128-warn
tests-internal += tst-ibm128-error tst-ieee128-error
tests-internal += tst-ibm128-efgcvt tst-ieee128-efgcvt
@ -334,5 +341,12 @@ ldbl-ibm128-files := $(objpfx)test-%-ibm128^ \
$(foreach r,$(ldbl-extra-routines),$(objpfx)$(r)^) \
$(foreach r,$(ldbl-extra-routines),$(objpfx)$(r)-internal^)
obj-suf-foreach = $(foreach suf,$(all-object-suffixes),$(subst ^,$(suf),$(1)))
# Remove -mlong-double-128 because it does not work correctly with
# -mabi=ibmlongdoule in some GCC versions, e.g. GCC 7.
$(call obj-suf-foreach,$(ldbl-ibm128-files)): \
sysdep-CFLAGS := $(filter-out -mlong-double-128, $(sysdep-CFLAGS))
# Explicitly add -mabi=ibm-long-double to required files.
$(call obj-suf-foreach,$(ldbl-ibm128-files)): \
sysdep-CFLAGS += -mabi=ibmlongdouble