diff options
author | Gabriel F. T. Gomes <gabrielftg@linux.ibm.com> | 2019-11-26 14:48:49 -0300 |
---|---|---|
committer | Gabriel F. T. Gomes <gabrielftg@linux.ibm.com> | 2019-12-23 16:32:07 -0300 |
commit | dce425341171ec5784c87165e23883630971bd97 (patch) | |
tree | 455190e456492ae6d1afa0632157fec330df903b /misc/efgcvt-template.c | |
parent | e18a305777adf60c2378ac864a350319269a29fa (diff) | |
download | glibc-dce425341171ec5784c87165e23883630971bd97.zip glibc-dce425341171ec5784c87165e23883630971bd97.tar.gz glibc-dce425341171ec5784c87165e23883630971bd97.tar.bz2 |
Refactor *cvt functions implementation (2/2)
This patch refactors the *cvt functions implementation in a way that
makes it easier to re-use them for implementing the IEEE long double on
powerpc64le. By removing the macros that generate the function names
(APPEND combined with FUNC_PREFIX), the new code makes it easier to
define new function names, such as __qecvtieee128.
Tested that installed stripped binaries for all build-many-glibcs
targets remain identical before and after this patch. Also tested for
powerpc64le and x86_64.
Reviewed-by: Paul E. Murphy <murphyp@linux.ibm.com>
Diffstat (limited to 'misc/efgcvt-template.c')
-rw-r--r-- | misc/efgcvt-template.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/misc/efgcvt-template.c b/misc/efgcvt-template.c index aeb4e1e..7fabdf2 100644 --- a/misc/efgcvt-template.c +++ b/misc/efgcvt-template.c @@ -25,8 +25,6 @@ #define APPEND(a, b) APPEND2 (a, b) #define APPEND2(a, b) a##b -#define __APPEND(a, b) __APPEND2 (a, b) -#define __APPEND2(a, b) __##a##b #define FCVT_BUFFER APPEND (FUNC_PREFIX, fcvt_buffer) @@ -39,13 +37,11 @@ static char ECVT_BUFFER[MAXDIG]; libc_freeres_ptr (static char *FCVT_BUFPTR); char * -__APPEND (FUNC_PREFIX, fcvt) (FLOAT_TYPE value, int ndigit, int *decpt, - int *sign) +__FCVT (FLOAT_TYPE value, int ndigit, int *decpt, int *sign) { if (FCVT_BUFPTR == NULL) { - if (__APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign, - FCVT_BUFFER, MAXDIG) != -1) + if (__FCVT_R (value, ndigit, decpt, sign, FCVT_BUFFER, MAXDIG) != -1) return FCVT_BUFFER; FCVT_BUFPTR = (char *) malloc (FCVT_MAXDIG); @@ -53,25 +49,22 @@ __APPEND (FUNC_PREFIX, fcvt) (FLOAT_TYPE value, int ndigit, int *decpt, return FCVT_BUFFER; } - (void) __APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign, - FCVT_BUFPTR, FCVT_MAXDIG); + (void) __FCVT_R (value, ndigit, decpt, sign, FCVT_BUFPTR, FCVT_MAXDIG); return FCVT_BUFPTR; } char * -__APPEND (FUNC_PREFIX, ecvt) (FLOAT_TYPE value, int ndigit, int *decpt, - int *sign) +__ECVT (FLOAT_TYPE value, int ndigit, int *decpt, int *sign) { - (void) __APPEND (FUNC_PREFIX, ecvt_r) (value, ndigit, decpt, sign, - ECVT_BUFFER, MAXDIG); + (void) __ECVT_R (value, ndigit, decpt, sign, ECVT_BUFFER, MAXDIG); return ECVT_BUFFER; } char * -__APPEND (FUNC_PREFIX, gcvt) (FLOAT_TYPE value, int ndigit, char *buf) +__GCVT (FLOAT_TYPE value, int ndigit, char *buf) { sprintf (buf, "%.*" FLOAT_FMT_FLAG "g", MIN (ndigit, NDIGIT_MAX), value); return buf; |