Skip to content
Snippets Groups Projects
Commit 7d30b888 authored by Francois-Xavier Coudert's avatar Francois-Xavier Coudert Committed by François-Xavier Coudert
Browse files

re PR libfortran/26712 (gfortran on mac intel runtime floating point exception when printing)

	PR libfortran/26712
	* config/fpu-387.h: Add special case for handling of SSE
	control bit on i386-darwin.

From-SVN: r112546
parent ad3a7ce3
No related branches found
No related tags found
No related merge requests found
2006-03-30 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR libfortran/26712
* config/fpu-387.h: Add special case for handling of SSE
control bit on i386-darwin.
2006-03-30 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/25031
......
......@@ -93,6 +93,17 @@ void set_fpu (void)
/* SSE */
asm volatile ("stmxcsr %0" : "=m" (cw_sse));
cw_sse &= 0xFFFF0000;
#ifdef __APPLE__
cw_sse |= (_FPU_MASK_IM | _FPU_MASK_DM | _FPU_MASK_ZM | _FPU_MASK_OM
| _FPU_MASK_UM | _FPU_MASK_PM ) << 7;
if (options.fpe & GFC_FPE_INVALID) cw_sse &= ~(_FPU_MASK_IM << 7);
if (options.fpe & GFC_FPE_DENORMAL) cw_sse &= ~(_FPU_MASK_DM << 7);
if (options.fpe & GFC_FPE_ZERO) cw_sse &= ~(_FPU_MASK_ZM << 7);
if (options.fpe & GFC_FPE_OVERFLOW) cw_sse &= ~(_FPU_MASK_OM << 7);
if (options.fpe & GFC_FPE_UNDERFLOW) cw_sse &= ~(_FPU_MASK_UM << 7);
if (options.fpe & GFC_FPE_PRECISION) cw_sse &= ~(_FPU_MASK_PM << 7);
asm volatile ("ldmxcsr %0" : : "m" (cw_sse));
#else
if (options.fpe & GFC_FPE_INVALID) cw_sse |= 1 << 7;
if (options.fpe & GFC_FPE_DENORMAL) cw_sse |= 1 << 8;
if (options.fpe & GFC_FPE_ZERO) cw_sse |= 1 << 9;
......@@ -100,5 +111,6 @@ void set_fpu (void)
if (options.fpe & GFC_FPE_UNDERFLOW) cw_sse |= 1 << 11;
if (options.fpe & GFC_FPE_PRECISION) cw_sse |= 1 << 12;
asm volatile ("ldmxcsr %0" : : "m" (cw_sse));
#endif
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment