From 1bc178bb6c6f5c959c9fb0d929734c08ad5aa1d5 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 18 Jan 2021 11:19:01 +0100 Subject: [PATCH] [Ada] Reset x87 FPU to 64-bit precision for floating-point I/O on Linux gcc/ada/ * init.c (__gnat_init_float): Use full version on Linux too. --- gcc/ada/init.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/gcc/ada/init.c b/gcc/ada/init.c index 8efec63d6b34..88a62fd8fa55 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -2749,11 +2749,7 @@ __gnat_install_handler (void) /* __gnat_init_float */ /*********************/ -/* This routine is called as each process thread is created, for possible - initialization of the FP processor. This version is used under INTERIX - and WIN32. */ - -#if defined (_WIN32) || defined (__INTERIX) \ +#if defined (_WIN32) || defined (__INTERIX) || defined (__linux__) \ || defined (__Lynx__) || defined(__NetBSD__) || defined(__FreeBSD__) \ || defined (__OpenBSD__) || defined (__DragonFly__) || defined(__QNX__) @@ -2763,13 +2759,10 @@ void __gnat_init_float (void) { #if defined (__i386__) || defined (__x86_64__) - - /* This is used to properly initialize the FPU on an x86 for each - process thread. */ - + /* This is used to properly initialize the FPU to 64-bit precision on an x86 + for each process thread and also for floating-point I/O. */ asm ("finit"); - -#endif /* Defined __i386__ */ +#endif } #endif -- 2.47.2