aboutsummaryrefslogtreecommitdiff
path: root/misc/efgcvt-template.c
diff options
context:
space:
mode:
authorGabriel F. T. Gomes <gabrielftg@linux.ibm.com>2019-11-26 14:48:49 -0300
committerGabriel F. T. Gomes <gabrielftg@linux.ibm.com>2019-12-23 16:32:07 -0300
commitdce425341171ec5784c87165e23883630971bd97 (patch)
tree455190e456492ae6d1afa0632157fec330df903b /misc/efgcvt-template.c
parente18a305777adf60c2378ac864a350319269a29fa (diff)
downloadglibc-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.c19
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;