!305 [sync] PR-288: [Sync] Sync patch from openeuler/gcc

From: @openeuler-sync-bot 
Reviewed-by: @li-yancheng 
Signed-off-by: @li-yancheng
This commit is contained in:
openeuler-ci-bot 2023-06-20 12:54:47 +00:00 committed by Gitee
commit 5d9cde876f
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 798 additions and 1 deletions

View File

@ -0,0 +1,474 @@
From 95dc65ad458a6c781536e30e65fdeec42349a0c9 Mon Sep 17 00:00:00 2001
From: eastb233 <xiezhiheng@huawei.com>
Date: Wed, 31 May 2023 10:39:56 +0800
Subject: [PATCH 1/3] [libquadmath] Revert "Enable libquadmath on kunpeng"
This reverts commit 85740d3cc56fda699beae689b5d73233d16097af.
Revert original libquadmath feature to refactor it.
---
libquadmath/Makefile.in | 353 ++++++++++++++++++++--------------------
libquadmath/quadmath.h | 6 +-
2 files changed, 178 insertions(+), 181 deletions(-)
diff --git a/libquadmath/Makefile.in b/libquadmath/Makefile.in
index 66df9c922..8c0112122 100644
--- a/libquadmath/Makefile.in
+++ b/libquadmath/Makefile.in
@@ -90,7 +90,7 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
-#libquadmath_la_DEPENDENCIES =
+@BUILD_LIBQUADMATH_FALSE@libquadmath_la_DEPENDENCIES =
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
@@ -147,68 +147,68 @@ am__installdirs = "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(infodir)" \
"$(DESTDIR)$(libsubincludedir)"
LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
am__dirstamp = $(am__leading_dot)dirstamp
-am_libquadmath_la_OBJECTS = math/x2y2m1q.lo \
- math/acoshq.lo math/fmodq.lo \
- math/acosq.lo math/frexpq.lo \
- math/rem_pio2q.lo math/asinhq.lo \
- math/hypotq.lo math/remainderq.lo \
- math/asinq.lo math/rintq.lo \
- math/atan2q.lo math/isinfq.lo \
- math/roundq.lo math/atanhq.lo \
- math/isnanq.lo math/scalblnq.lo \
- math/atanq.lo math/j0q.lo \
- math/scalbnq.lo math/cbrtq.lo \
- math/j1q.lo math/signbitq.lo \
- math/ceilq.lo math/jnq.lo \
- math/sincos_table.lo math/complex.lo \
- math/ldexpq.lo math/sincosq.lo \
- math/copysignq.lo math/lgammaq.lo \
- math/sincosq_kernel.lo math/coshq.lo \
- math/llroundq.lo math/sinhq.lo \
- math/cosq.lo math/log10q.lo \
- math/sinq.lo math/cosq_kernel.lo \
- math/log1pq.lo math/sinq_kernel.lo \
- math/erfq.lo math/logq.lo \
- math/sqrtq.lo math/expm1q.lo \
- math/lroundq.lo math/tanhq.lo \
- math/expq.lo math/modfq.lo \
- math/tanq.lo math/fabsq.lo \
- math/nanq.lo math/tgammaq.lo \
- math/finiteq.lo math/nextafterq.lo \
- math/truncq.lo math/floorq.lo \
- math/powq.lo math/fmaq.lo \
- math/logbq.lo math/exp2q.lo \
- math/issignalingq.lo \
- math/lgammaq_neg.lo \
- math/lgammaq_product.lo \
- math/tanq_kernel.lo \
- math/tgammaq_product.lo \
- math/casinhq_kernel.lo math/cacoshq.lo \
- math/cacosq.lo math/casinhq.lo \
- math/casinq.lo math/catanhq.lo \
- math/catanq.lo math/cimagq.lo \
- math/conjq.lo math/cprojq.lo \
- math/crealq.lo math/fdimq.lo \
- math/fmaxq.lo math/fminq.lo \
- math/ilogbq.lo math/llrintq.lo \
- math/log2q.lo math/lrintq.lo \
- math/nearbyintq.lo math/remquoq.lo \
- math/ccoshq.lo math/cexpq.lo \
- math/clog10q.lo math/clogq.lo \
- math/csinq.lo math/csinhq.lo \
- math/csqrtq.lo math/ctanq.lo \
- math/ctanhq.lo printf/addmul_1.lo \
- printf/add_n.lo printf/cmp.lo \
- printf/divrem.lo printf/flt1282mpn.lo \
- printf/fpioconst.lo printf/lshift.lo \
- printf/mul_1.lo printf/mul_n.lo \
- printf/mul.lo printf/printf_fphex.lo \
- printf/printf_fp.lo \
- printf/quadmath-printf.lo \
- printf/rshift.lo printf/submul_1.lo \
- printf/sub_n.lo strtod/strtoflt128.lo \
- strtod/mpn2flt128.lo \
- strtod/tens_in_limb.lo
+@BUILD_LIBQUADMATH_TRUE@am_libquadmath_la_OBJECTS = math/x2y2m1q.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/acoshq.lo math/fmodq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/acosq.lo math/frexpq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/rem_pio2q.lo math/asinhq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/hypotq.lo math/remainderq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/asinq.lo math/rintq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/atan2q.lo math/isinfq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/roundq.lo math/atanhq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/isnanq.lo math/scalblnq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/atanq.lo math/j0q.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/scalbnq.lo math/cbrtq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/j1q.lo math/signbitq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/ceilq.lo math/jnq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/sincos_table.lo math/complex.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/ldexpq.lo math/sincosq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/copysignq.lo math/lgammaq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/sincosq_kernel.lo math/coshq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/llroundq.lo math/sinhq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/cosq.lo math/log10q.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/sinq.lo math/cosq_kernel.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/log1pq.lo math/sinq_kernel.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/erfq.lo math/logq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/sqrtq.lo math/expm1q.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/lroundq.lo math/tanhq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/expq.lo math/modfq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/tanq.lo math/fabsq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/nanq.lo math/tgammaq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/finiteq.lo math/nextafterq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/truncq.lo math/floorq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/powq.lo math/fmaq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/logbq.lo math/exp2q.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/issignalingq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/lgammaq_neg.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/lgammaq_product.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/tanq_kernel.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/tgammaq_product.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/casinhq_kernel.lo math/cacoshq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/cacosq.lo math/casinhq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/casinq.lo math/catanhq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/catanq.lo math/cimagq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/conjq.lo math/cprojq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/crealq.lo math/fdimq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/fmaxq.lo math/fminq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/ilogbq.lo math/llrintq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/log2q.lo math/lrintq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/nearbyintq.lo math/remquoq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/ccoshq.lo math/cexpq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/clog10q.lo math/clogq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/csinq.lo math/csinhq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/csqrtq.lo math/ctanq.lo \
+@BUILD_LIBQUADMATH_TRUE@ math/ctanhq.lo printf/addmul_1.lo \
+@BUILD_LIBQUADMATH_TRUE@ printf/add_n.lo printf/cmp.lo \
+@BUILD_LIBQUADMATH_TRUE@ printf/divrem.lo printf/flt1282mpn.lo \
+@BUILD_LIBQUADMATH_TRUE@ printf/fpioconst.lo printf/lshift.lo \
+@BUILD_LIBQUADMATH_TRUE@ printf/mul_1.lo printf/mul_n.lo \
+@BUILD_LIBQUADMATH_TRUE@ printf/mul.lo printf/printf_fphex.lo \
+@BUILD_LIBQUADMATH_TRUE@ printf/printf_fp.lo \
+@BUILD_LIBQUADMATH_TRUE@ printf/quadmath-printf.lo \
+@BUILD_LIBQUADMATH_TRUE@ printf/rshift.lo printf/submul_1.lo \
+@BUILD_LIBQUADMATH_TRUE@ printf/sub_n.lo strtod/strtoflt128.lo \
+@BUILD_LIBQUADMATH_TRUE@ strtod/mpn2flt128.lo \
+@BUILD_LIBQUADMATH_TRUE@ strtod/tens_in_limb.lo
libquadmath_la_OBJECTS = $(am_libquadmath_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -218,8 +218,8 @@ libquadmath_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(AM_CFLAGS) $(CFLAGS) $(libquadmath_la_LDFLAGS) $(LDFLAGS) -o \
$@
-am_libquadmath_la_rpath = -rpath \
- $(toolexeclibdir)
+@BUILD_LIBQUADMATH_TRUE@am_libquadmath_la_rpath = -rpath \
+@BUILD_LIBQUADMATH_TRUE@ $(toolexeclibdir)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -337,7 +337,7 @@ CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@ -D__float128="long double"
+DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
@@ -409,7 +409,7 @@ datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
-enable_shared = yes
+enable_shared = @enable_shared@
enable_static = @enable_static@
exec_prefix = @exec_prefix@
get_gcc_base_ver = @get_gcc_base_ver@
@@ -451,109 +451,109 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign info-in-builddir
-ACLOCAL_AMFLAGS = -I .. -I ../config
-AM_CPPFLAGS = -I $(top_srcdir)/../include
-AM_CFLAGS = $(XCFLAGS)
-gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
-@LIBQUAD_USE_SYMVER_FALSE@version_arg =
-@LIBQUAD_USE_SYMVER_GNU_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=$(srcdir)/quadmath.map
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_arg = -Wl,-M,quadmath.map-sun
-@LIBQUAD_USE_SYMVER_FALSE@version_dep =
-@LIBQUAD_USE_SYMVER_GNU_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_dep = $(srcdir)/quadmath.map
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_dep = quadmath.map-sun
-toolexeclib_LTLIBRARIES = libquadmath.la
-libquadmath_la_LIBADD =
-libquadmath_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(version_arg) $(lt_host_flags) -lm
-
-libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD)
-nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h
-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
-libquadmath_la_SOURCES = \
- math/x2y2m1q.c math/acoshq.c math/fmodq.c \
- math/acosq.c math/frexpq.c \
- math/rem_pio2q.c math/asinhq.c math/hypotq.c math/remainderq.c \
- math/asinq.c math/rintq.c math/atan2q.c math/isinfq.c \
- math/roundq.c math/atanhq.c math/isnanq.c math/scalblnq.c math/atanq.c \
- math/j0q.c math/scalbnq.c math/cbrtq.c math/j1q.c math/signbitq.c \
- math/ceilq.c math/jnq.c math/sincos_table.c math/complex.c math/ldexpq.c \
- math/sincosq.c math/copysignq.c math/lgammaq.c math/sincosq_kernel.c \
- math/coshq.c math/llroundq.c math/sinhq.c math/cosq.c math/log10q.c \
- math/sinq.c math/cosq_kernel.c math/log1pq.c math/sinq_kernel.c \
- math/erfq.c math/logq.c math/sqrtq.c math/expm1q.c math/lroundq.c \
- math/tanhq.c math/expq.c math/modfq.c math/tanq.c math/fabsq.c \
- math/nanq.c math/tgammaq.c math/finiteq.c math/nextafterq.c \
- math/truncq.c math/floorq.c math/powq.c math/fmaq.c math/logbq.c \
- math/exp2q.c math/issignalingq.c math/lgammaq_neg.c math/lgammaq_product.c \
- math/tanq_kernel.c math/tgammaq_product.c math/casinhq_kernel.c \
- math/cacoshq.c math/cacosq.c math/casinhq.c math/casinq.c \
- math/catanhq.c math/catanq.c math/cimagq.c math/conjq.c math/cprojq.c \
- math/crealq.c math/fdimq.c math/fmaxq.c math/fminq.c math/ilogbq.c \
- math/llrintq.c math/log2q.c math/lrintq.c math/nearbyintq.c math/remquoq.c \
- math/ccoshq.c math/cexpq.c math/clog10q.c math/clogq.c math/csinq.c \
- math/csinhq.c math/csqrtq.c math/ctanq.c math/ctanhq.c \
- printf/addmul_1.c printf/add_n.c printf/cmp.c printf/divrem.c \
- printf/flt1282mpn.c printf/fpioconst.c printf/lshift.c printf/mul_1.c \
- printf/mul_n.c printf/mul.c printf/printf_fphex.c printf/printf_fp.c \
- printf/quadmath-printf.c printf/rshift.c printf/submul_1.c printf/sub_n.c \
- strtod/strtoflt128.c strtod/mpn2flt128.c strtod/tens_in_limb.c
+@BUILD_LIBQUADMATH_TRUE@ACLOCAL_AMFLAGS = -I .. -I ../config
+@BUILD_LIBQUADMATH_TRUE@AM_CPPFLAGS = -I $(top_srcdir)/../include
+@BUILD_LIBQUADMATH_TRUE@AM_CFLAGS = $(XCFLAGS)
+@BUILD_LIBQUADMATH_TRUE@gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_FALSE@version_arg =
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_GNU_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=$(srcdir)/quadmath.map
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_arg = -Wl,-M,quadmath.map-sun
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_FALSE@version_dep =
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_GNU_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_dep = $(srcdir)/quadmath.map
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@version_dep = quadmath.map-sun
+@BUILD_LIBQUADMATH_TRUE@toolexeclib_LTLIBRARIES = libquadmath.la
+@BUILD_LIBQUADMATH_TRUE@libquadmath_la_LIBADD =
+@BUILD_LIBQUADMATH_TRUE@libquadmath_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+@BUILD_LIBQUADMATH_TRUE@ $(version_arg) $(lt_host_flags) -lm
+
+@BUILD_LIBQUADMATH_TRUE@libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD)
+@BUILD_LIBQUADMATH_TRUE@nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h
+@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
+@BUILD_LIBQUADMATH_TRUE@libquadmath_la_SOURCES = \
+@BUILD_LIBQUADMATH_TRUE@ math/x2y2m1q.c math/acoshq.c math/fmodq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/acosq.c math/frexpq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/rem_pio2q.c math/asinhq.c math/hypotq.c math/remainderq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/asinq.c math/rintq.c math/atan2q.c math/isinfq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/roundq.c math/atanhq.c math/isnanq.c math/scalblnq.c math/atanq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/j0q.c math/scalbnq.c math/cbrtq.c math/j1q.c math/signbitq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/ceilq.c math/jnq.c math/sincos_table.c math/complex.c math/ldexpq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/sincosq.c math/copysignq.c math/lgammaq.c math/sincosq_kernel.c \
+@BUILD_LIBQUADMATH_TRUE@ math/coshq.c math/llroundq.c math/sinhq.c math/cosq.c math/log10q.c \
+@BUILD_LIBQUADMATH_TRUE@ math/sinq.c math/cosq_kernel.c math/log1pq.c math/sinq_kernel.c \
+@BUILD_LIBQUADMATH_TRUE@ math/erfq.c math/logq.c math/sqrtq.c math/expm1q.c math/lroundq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/tanhq.c math/expq.c math/modfq.c math/tanq.c math/fabsq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/nanq.c math/tgammaq.c math/finiteq.c math/nextafterq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/truncq.c math/floorq.c math/powq.c math/fmaq.c math/logbq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/exp2q.c math/issignalingq.c math/lgammaq_neg.c math/lgammaq_product.c \
+@BUILD_LIBQUADMATH_TRUE@ math/tanq_kernel.c math/tgammaq_product.c math/casinhq_kernel.c \
+@BUILD_LIBQUADMATH_TRUE@ math/cacoshq.c math/cacosq.c math/casinhq.c math/casinq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/catanhq.c math/catanq.c math/cimagq.c math/conjq.c math/cprojq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/crealq.c math/fdimq.c math/fmaxq.c math/fminq.c math/ilogbq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/llrintq.c math/log2q.c math/lrintq.c math/nearbyintq.c math/remquoq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/ccoshq.c math/cexpq.c math/clog10q.c math/clogq.c math/csinq.c \
+@BUILD_LIBQUADMATH_TRUE@ math/csinhq.c math/csqrtq.c math/ctanq.c math/ctanhq.c \
+@BUILD_LIBQUADMATH_TRUE@ printf/addmul_1.c printf/add_n.c printf/cmp.c printf/divrem.c \
+@BUILD_LIBQUADMATH_TRUE@ printf/flt1282mpn.c printf/fpioconst.c printf/lshift.c printf/mul_1.c \
+@BUILD_LIBQUADMATH_TRUE@ printf/mul_n.c printf/mul.c printf/printf_fphex.c printf/printf_fp.c \
+@BUILD_LIBQUADMATH_TRUE@ printf/quadmath-printf.c printf/rshift.c printf/submul_1.c printf/sub_n.c \
+@BUILD_LIBQUADMATH_TRUE@ strtod/strtoflt128.c strtod/mpn2flt128.c strtod/tens_in_limb.c
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
# friends when we are called from the top level Makefile.
-AM_MAKEFLAGS = \
- "AR_FLAGS=$(AR_FLAGS)" \
- "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
- "CFLAGS=$(CFLAGS)" \
- "CXXFLAGS=$(CXXFLAGS)" \
- "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
- "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
- "INSTALL=$(INSTALL)" \
- "INSTALL_DATA=$(INSTALL_DATA)" \
- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
- "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
- "JC1FLAGS=$(JC1FLAGS)" \
- "LDFLAGS=$(LDFLAGS)" \
- "LIBCFLAGS=$(LIBCFLAGS)" \
- "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
- "MAKE=$(MAKE)" \
- "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
- "PICFLAG=$(PICFLAG)" \
- "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
- "SHELL=$(SHELL)" \
- "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
- "exec_prefix=$(exec_prefix)" \
- "infodir=$(infodir)" \
- "libdir=$(libdir)" \
- "prefix=$(prefix)" \
- "includedir=$(includedir)" \
- "AR=$(AR)" \
- "AS=$(AS)" \
- "CC=$(CC)" \
- "CXX=$(CXX)" \
- "LD=$(LD)" \
- "LIBCFLAGS=$(LIBCFLAGS)" \
- "NM=$(NM)" \
- "PICFLAG=$(PICFLAG)" \
- "RANLIB=$(RANLIB)" \
- "DESTDIR=$(DESTDIR)"
+@BUILD_LIBQUADMATH_TRUE@AM_MAKEFLAGS = \
+@BUILD_LIBQUADMATH_TRUE@ "AR_FLAGS=$(AR_FLAGS)" \
+@BUILD_LIBQUADMATH_TRUE@ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+@BUILD_LIBQUADMATH_TRUE@ "CFLAGS=$(CFLAGS)" \
+@BUILD_LIBQUADMATH_TRUE@ "CXXFLAGS=$(CXXFLAGS)" \
+@BUILD_LIBQUADMATH_TRUE@ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+@BUILD_LIBQUADMATH_TRUE@ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+@BUILD_LIBQUADMATH_TRUE@ "INSTALL=$(INSTALL)" \
+@BUILD_LIBQUADMATH_TRUE@ "INSTALL_DATA=$(INSTALL_DATA)" \
+@BUILD_LIBQUADMATH_TRUE@ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+@BUILD_LIBQUADMATH_TRUE@ "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
+@BUILD_LIBQUADMATH_TRUE@ "JC1FLAGS=$(JC1FLAGS)" \
+@BUILD_LIBQUADMATH_TRUE@ "LDFLAGS=$(LDFLAGS)" \
+@BUILD_LIBQUADMATH_TRUE@ "LIBCFLAGS=$(LIBCFLAGS)" \
+@BUILD_LIBQUADMATH_TRUE@ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
+@BUILD_LIBQUADMATH_TRUE@ "MAKE=$(MAKE)" \
+@BUILD_LIBQUADMATH_TRUE@ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
+@BUILD_LIBQUADMATH_TRUE@ "PICFLAG=$(PICFLAG)" \
+@BUILD_LIBQUADMATH_TRUE@ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
+@BUILD_LIBQUADMATH_TRUE@ "SHELL=$(SHELL)" \
+@BUILD_LIBQUADMATH_TRUE@ "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
+@BUILD_LIBQUADMATH_TRUE@ "exec_prefix=$(exec_prefix)" \
+@BUILD_LIBQUADMATH_TRUE@ "infodir=$(infodir)" \
+@BUILD_LIBQUADMATH_TRUE@ "libdir=$(libdir)" \
+@BUILD_LIBQUADMATH_TRUE@ "prefix=$(prefix)" \
+@BUILD_LIBQUADMATH_TRUE@ "includedir=$(includedir)" \
+@BUILD_LIBQUADMATH_TRUE@ "AR=$(AR)" \
+@BUILD_LIBQUADMATH_TRUE@ "AS=$(AS)" \
+@BUILD_LIBQUADMATH_TRUE@ "CC=$(CC)" \
+@BUILD_LIBQUADMATH_TRUE@ "CXX=$(CXX)" \
+@BUILD_LIBQUADMATH_TRUE@ "LD=$(LD)" \
+@BUILD_LIBQUADMATH_TRUE@ "LIBCFLAGS=$(LIBCFLAGS)" \
+@BUILD_LIBQUADMATH_TRUE@ "NM=$(NM)" \
+@BUILD_LIBQUADMATH_TRUE@ "PICFLAG=$(PICFLAG)" \
+@BUILD_LIBQUADMATH_TRUE@ "RANLIB=$(RANLIB)" \
+@BUILD_LIBQUADMATH_TRUE@ "DESTDIR=$(DESTDIR)"
# Subdir rules rely on $(FLAGS_TO_PASS)
-FLAGS_TO_PASS = $(AM_MAKEFLAGS)
-MAKEOVERRIDES =
-@GENINSRC_FALSE@STAMP_GENINSRC =
+@BUILD_LIBQUADMATH_TRUE@FLAGS_TO_PASS = $(AM_MAKEFLAGS)
+@BUILD_LIBQUADMATH_TRUE@MAKEOVERRIDES =
+@BUILD_LIBQUADMATH_TRUE@@GENINSRC_FALSE@STAMP_GENINSRC =
# AM_CONDITIONAL on configure option --generated-files-in-srcdir
-@GENINSRC_TRUE@STAMP_GENINSRC = stamp-geninsrc
-ALL_LOCAL_DEPS = $(STAMP_GENINSRC)
-@BUILD_INFO_FALSE@STAMP_BUILD_INFO =
+@BUILD_LIBQUADMATH_TRUE@@GENINSRC_TRUE@STAMP_GENINSRC = stamp-geninsrc
+@BUILD_LIBQUADMATH_TRUE@ALL_LOCAL_DEPS = $(STAMP_GENINSRC)
+@BUILD_INFO_FALSE@@BUILD_LIBQUADMATH_TRUE@STAMP_BUILD_INFO =
# AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO])
-@BUILD_INFO_TRUE@STAMP_BUILD_INFO = stamp-build-info
-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO)
-MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info
+@BUILD_INFO_TRUE@@BUILD_LIBQUADMATH_TRUE@STAMP_BUILD_INFO = stamp-build-info
+@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO)
+@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info
# Automake Documentation:
# If your package has Texinfo files in many directories, you can use the
@@ -564,8 +564,8 @@ TEXINFO_TEX = ../gcc/doc/include/texinfo.tex
# Defines info, dvi, pdf and html targets
MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
-info_TEXINFOS =
-info_TEXINFOS = libquadmath.texi
+@BUILD_LIBQUADMATH_FALSE@info_TEXINFOS =
+@BUILD_LIBQUADMATH_TRUE@info_TEXINFOS = libquadmath.texi
libquadmath_TEXINFOS = libquadmath-vers.texi
MULTISRCTOP =
MULTIBUILDTOP =
@@ -1187,7 +1187,6 @@ distclean-tags:
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
check-am: all-am
check: check-am
-#all-local
all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(HEADERS) config.h \
all-local
installdirs:
@@ -1426,22 +1425,22 @@ uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
.PRECIOUS: Makefile
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@quadmath.map-sun : $(srcdir)/quadmath.map \
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ $(top_srcdir)/../contrib/make_sunver.pl \
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ $(libquadmath_la_OBJECTS) $(libquadmath_la_LIBADD)
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ perl $(top_srcdir)/../contrib/make_sunver.pl \
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ $(srcdir)/quadmath.map \
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ `echo $(libquadmath_la_OBJECTS) $(libquadmath_la_LIBADD) | \
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \
-@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ > $@ || (rm -f $@ ; exit 1)
-
-stamp-geninsrc: libquadmath.info
- cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info
- @touch $@
-
-stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS)
- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi
- @touch $@
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@quadmath.map-sun : $(srcdir)/quadmath.map \
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ $(top_srcdir)/../contrib/make_sunver.pl \
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ $(libquadmath_la_OBJECTS) $(libquadmath_la_LIBADD)
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ perl $(top_srcdir)/../contrib/make_sunver.pl \
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ $(srcdir)/quadmath.map \
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ `echo $(libquadmath_la_OBJECTS) $(libquadmath_la_LIBADD) | \
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \
+@BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ > $@ || (rm -f $@ ; exit 1)
+
+@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: libquadmath.info
+@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info
+@BUILD_LIBQUADMATH_TRUE@ @touch $@
+
+@BUILD_LIBQUADMATH_TRUE@stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS)
+@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi
+@BUILD_LIBQUADMATH_TRUE@ @touch $@
all-local: $(ALL_LOCAL_DEPS)
diff --git a/libquadmath/quadmath.h b/libquadmath/quadmath.h
index faa5977cb..81eb957d2 100644
--- a/libquadmath/quadmath.h
+++ b/libquadmath/quadmath.h
@@ -27,9 +27,6 @@ Boston, MA 02110-1301, USA. */
extern "C" {
#endif
-#ifdef AARCH64_QUADMATH
-typedef long double __float128;
-#endif
/* Define the complex type corresponding to __float128
("_Complex __float128" is not allowed) */
#if (!defined(_ARCH_PPC)) || defined(__LONG_DOUBLE_IEEE128__)
@@ -163,9 +160,10 @@ extern int quadmath_snprintf (char *str, size_t size,
#define FLT128_MAX_10_EXP 4932
+#define HUGE_VALQ __builtin_huge_valq()
/* The following alternative is valid, but brings the warning:
(floating constant exceeds range of __float128) */
- #define HUGE_VALQ (__extension__ 0x1.0p32767Q)
+/* #define HUGE_VALQ (__extension__ 0x1.0p32767Q) */
#define M_Eq 2.718281828459045235360287471352662498Q /* e */
#define M_LOG2Eq 1.442695040888963407359924681001892137Q /* log_2 e */
--
2.33.0

View File

@ -0,0 +1,197 @@
From 60e80a17a7019026dc7e2da9dc597c9fdf426e33 Mon Sep 17 00:00:00 2001
From: eastb233 <xiezhiheng@huawei.com>
Date: Wed, 31 May 2023 10:48:47 +0800
Subject: [PATCH 2/3] [libquadmath][refactor] Enable libquadmath on kunpeng
This enable libquadmath on kunpeng platform to convenient
users that migrating from x86 platform. libquadmath uses "__float128"
as quad precision floating point type and with math functions with "q"
suffix like "cosq". For those who do not need to adapt to x86 platform,
you can use "long double" as quad precision floating point type and math
functions with "l" suffix like "cosl" in libm for quad precision math.
---
libquadmath/Makefile.am | 4 ++++
libquadmath/Makefile.in | 3 ++-
libquadmath/configure | 28 ++++++++++++++++++++++++++--
libquadmath/configure.ac | 7 +++++++
libquadmath/quadmath.h | 13 +++++++++++--
5 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/libquadmath/Makefile.am b/libquadmath/Makefile.am
index 35dffb46f..bf0398d9c 100644
--- a/libquadmath/Makefile.am
+++ b/libquadmath/Makefile.am
@@ -2,6 +2,10 @@
AUTOMAKE_OPTIONS = foreign info-in-builddir
+if ARCH_AARCH64
+DEFS += -D__float128="long double"
+endif
+
## Skip over everything if the quadlib is not available:
if BUILD_LIBQUADMATH
ACLOCAL_AMFLAGS = -I .. -I ../config
diff --git a/libquadmath/Makefile.in b/libquadmath/Makefile.in
index 8c0112122..449cc8a06 100644
--- a/libquadmath/Makefile.in
+++ b/libquadmath/Makefile.in
@@ -90,6 +90,7 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
+@ARCH_AARCH64_TRUE@am__append_1 = -D__float128="long double"
@BUILD_LIBQUADMATH_FALSE@libquadmath_la_DEPENDENCIES =
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -337,7 +338,7 @@ CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
+DEFS = @DEFS@ $(am__append_1)
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
diff --git a/libquadmath/configure b/libquadmath/configure
index b5b212c06..da41959ee 100644
--- a/libquadmath/configure
+++ b/libquadmath/configure
@@ -633,6 +633,8 @@ am__EXEEXT_TRUE
LTLIBOBJS
LIBOBJS
get_gcc_base_ver
+ARCH_AARCH64_FALSE
+ARCH_AARCH64_TRUE
GENINSRC_FALSE
GENINSRC_TRUE
XCFLAGS
@@ -10816,7 +10818,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10819 "configure"
+#line 10821 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10922,7 +10924,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10925 "configure"
+#line 10927 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12715,6 +12717,11 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+ #if defined(__aarch64__)
+ typedef long double __float128;
+ #define __builtin_huge_valq() (__extension__ 0x1.0p32767Q)
+ #endif
+
#if (!defined(_ARCH_PPC)) || defined(__LONG_DOUBLE_IEEE128__)
typedef _Complex float __attribute__((mode(TC))) __complex128;
#else
@@ -12766,6 +12773,11 @@ fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+ #if defined(__aarch64__)
+ typedef long double __float128;
+ #define __builtin_huge_valq() (__extension__ 0x1.0p32767Q)
+ #endif
+
#if (!defined(_ARCH_PPC)) || defined(__LONG_DOUBLE_IEEE128__)
typedef _Complex float __attribute__((mode(TC))) __complex128;
#else
@@ -13224,6 +13236,14 @@ else
GENINSRC_FALSE=
fi
+ if expr "$target_cpu" : "aarch64.*" > /dev/null; then
+ ARCH_AARCH64_TRUE=
+ ARCH_AARCH64_FALSE='#'
+else
+ ARCH_AARCH64_TRUE='#'
+ ARCH_AARCH64_FALSE=
+fi
+
# Determine what GCC version number to use in filesystem paths.
@@ -13407,6 +13427,10 @@ if test -z "${GENINSRC_TRUE}" && test -z "${GENINSRC_FALSE}"; then
as_fn_error $? "conditional \"GENINSRC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${ARCH_AARCH64_TRUE}" && test -z "${ARCH_AARCH64_FALSE}"; then
+ as_fn_error $? "conditional \"ARCH_AARCH64\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
diff --git a/libquadmath/configure.ac b/libquadmath/configure.ac
index f9d745e60..0b8511f04 100644
--- a/libquadmath/configure.ac
+++ b/libquadmath/configure.ac
@@ -218,6 +218,11 @@ AM_CONDITIONAL(LIBQUAD_USE_SYMVER_SUN, [test "x$quadmath_use_symver" = xsun])
AC_CACHE_CHECK([whether __float128 is supported], [libquad_cv_have_float128],
[GCC_TRY_COMPILE_OR_LINK([
+ #if defined(__aarch64__)
+ typedef long double __float128;
+ #define __builtin_huge_valq() (__extension__ 0x1.0p32767Q)
+ #endif
+
#if (!defined(_ARCH_PPC)) || defined(__LONG_DOUBLE_IEEE128__)
typedef _Complex float __attribute__((mode(TC))) __complex128;
#else
@@ -380,6 +385,8 @@ AS_HELP_STRING([--enable-generated-files-in-srcdir],
[enable_generated_files_in_srcdir=no])
AC_MSG_RESULT($enable_generated_files_in_srcdir)
AM_CONDITIONAL(GENINSRC, test "$enable_generated_files_in_srcdir" = yes)
+AM_CONDITIONAL(ARCH_AARCH64,
+ [expr "$target_cpu" : "aarch64.*" > /dev/null])
# Determine what GCC version number to use in filesystem paths.
GCC_BASE_VER
diff --git a/libquadmath/quadmath.h b/libquadmath/quadmath.h
index 81eb957d2..bb1b49df6 100644
--- a/libquadmath/quadmath.h
+++ b/libquadmath/quadmath.h
@@ -27,6 +27,12 @@ Boston, MA 02110-1301, USA. */
extern "C" {
#endif
+#if defined(__aarch64__)
+#ifndef __float128
+typedef long double __float128;
+#endif
+#endif
+
/* Define the complex type corresponding to __float128
("_Complex __float128" is not allowed) */
#if (!defined(_ARCH_PPC)) || defined(__LONG_DOUBLE_IEEE128__)
@@ -160,10 +166,13 @@ extern int quadmath_snprintf (char *str, size_t size,
#define FLT128_MAX_10_EXP 4932
-#define HUGE_VALQ __builtin_huge_valq()
+#if defined(__aarch64__)
/* The following alternative is valid, but brings the warning:
(floating constant exceeds range of __float128) */
-/* #define HUGE_VALQ (__extension__ 0x1.0p32767Q) */
+# define HUGE_VALQ (__extension__ 0x1.0p32767Q)
+#else
+# define HUGE_VALQ __builtin_huge_valq()
+#endif
#define M_Eq 2.718281828459045235360287471352662498Q /* e */
#define M_LOG2Eq 1.442695040888963407359924681001892137Q /* log_2 e */
--
2.33.0

View File

@ -0,0 +1,114 @@
From 4a0b942c8f6643509e6e9a605c99a258a6523308 Mon Sep 17 00:00:00 2001
From: d00573793 <dingguangya1@huawei.com>
Date: Wed, 31 May 2023 17:00:24 +0800
Subject: [PATCH 3/3] [AArch64] Rewrite the tsv110 option
Reset the more appropriate options for tsv110.
---
gcc/common/config/aarch64/aarch64-common.c | 76 ++++++++++++++++++++++
1 file changed, 76 insertions(+)
diff --git a/gcc/common/config/aarch64/aarch64-common.c b/gcc/common/config/aarch64/aarch64-common.c
index 51bd319d6..2a23a605d 100644
--- a/gcc/common/config/aarch64/aarch64-common.c
+++ b/gcc/common/config/aarch64/aarch64-common.c
@@ -44,6 +44,8 @@
#undef TARGET_OPTION_INIT_STRUCT
#define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct
+#define INVALID_IMP ((unsigned) -1)
+
/* Set default optimization options. */
static const struct default_options aarch_option_optimization_table[] =
{
@@ -65,6 +67,77 @@ static const struct default_options aarch_option_optimization_table[] =
{ OPT_LEVELS_NONE, 0, NULL, 0 }
};
+/* CPU vendor id. */
+static unsigned vendor_id = INVALID_IMP;
+
+/* The part number of the CPU. */
+static unsigned part_id = INVALID_IMP;
+
+/* Return the hex integer that is after ':' for the FIELD.
+ Return -1 if there was problem parsing the integer. */
+static unsigned
+parse_cpuinfo (char *field)
+{
+ if (field == NULL)
+ return INVALID_IMP;
+ const char *rest = strchr (field, ':');
+
+ if (rest == NULL)
+ return INVALID_IMP;
+
+ char *after;
+ unsigned fint = strtol (rest + 1, &after, 16);
+ if (after == rest + 1)
+ return INVALID_IMP;
+ return fint;
+}
+
+/* Read CPU vendor_id and part_id. */
+
+static void
+read_cpuinfo ()
+{
+ FILE *fp = fopen ("/proc/cpuinfo", "r");
+ if (fp == NULL)
+ return;
+
+ /* Read 1024-byte data from /proc/cpuinfo. */
+ char cpuinfo[1024];
+ fread(cpuinfo, sizeof(char), sizeof(cpuinfo) - 1, fp);
+
+ char *vendor = strstr(cpuinfo, "CPU implementer");
+ vendor_id = parse_cpuinfo(vendor);
+
+ char *part = strstr(cpuinfo, "CPU part");
+ part_id = parse_cpuinfo(part);
+
+ fclose(fp);
+}
+
+/* Reset the tsv110 option. After checking the platform information,
+ this function can reset the more appropriate options.
+ TODO: Currently, this function is not applicable to the cross
+ compilation scenario. */
+
+static void
+reset_tsv110_option ()
+{
+ /* Read CPU Information. */
+ if (vendor_id == INVALID_IMP)
+ read_cpuinfo ();
+
+ if (vendor_id == 0x48 && part_id == 0xd01)
+ {
+ /* Outline-atomics is enabled by default and
+ aarch64_flag_outline_atomics defaults to 2. Therefore, the current
+ modification affects only the default scenario. When the option
+ moutline-atomics is added, the value of aarch64_flag_outline_atomics is 1,
+ that is, aarch64_flag_outline_atomics is not reset to 0. */
+ if (aarch64_flag_outline_atomics == 2)
+ aarch64_flag_outline_atomics = 0;
+ }
+}
+
/* Implement TARGET_HANDLE_OPTION.
This function handles the target specific options for CPU/target selection.
@@ -83,6 +156,9 @@ aarch64_handle_option (struct gcc_options *opts,
const char *arg = decoded->arg;
int val = decoded->value;
+ /* Reset the tsv110 options. */
+ reset_tsv110_option ();
+
switch (code)
{
case OPT_march_:
--
2.33.0

View File

@ -61,7 +61,7 @@
Summary: Various compilers (C, C++, Objective-C, ...)
Name: gcc
Version: %{gcc_version}
Release: 31
Release: 32
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
URL: https://gcc.gnu.org
@ -204,6 +204,9 @@ Patch92: 0092-gimple-Factor-the-code-to-avoid-depending-auto-featu.patch
Patch93: 0093-StructReorg-Fix-escape_cast_another_ptr-check-bug.patch
Patch94: 0094-Backport-Fix-zero-masking-for-vcvtps2ph-when-dest-op.patch
Patch95: 0095-Struct-reorg-Fix-the-use-of-as_a.patch
Patch96: 0096-libquadmath-Revert-Enable-libquadmath-on-kunpeng.patch
Patch97: 0097-libquadmath-refactor-Enable-libquadmath-on-kunpeng.patch
Patch98: 0098-AArch64-Rewrite-the-tsv110-option.patch
%global gcc_target_platform %{_arch}-linux-gnu
@ -753,6 +756,9 @@ not stable, so plugins must be rebuilt any time GCC is updated.
%patch93 -p1
%patch94 -p1
%patch95 -p1
%patch96 -p1
%patch97 -p1
%patch98 -p1
%build
@ -2777,6 +2783,12 @@ end
%doc rpm.doc/changelogs/libcc1/ChangeLog*
%changelog
* Thu Jun 8 2023 huangxiaoquan <huangxiaoquan1@huawei.com> - 10.3.1-32
- Type:Sync
- ID:NA
- SUG:NA
- DESC:Sync patch from openeuler/gcc
* Sat Jun 3 2023 Wang Ding <wangding16@huawei.com> - 10.3.1-31
- Type:Sync
- ID:NA