mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	Disable excessive FP optimization by recent versions of gcc.
Suggested solution from Tom Lane. Problem discovered, probably not for the first time, while testing the mingw-w64 32 bit compiler. Backpatched to all live branches.
This commit is contained in:
		
							parent
							
								
									fb0eca0695
								
							
						
					
					
						commit
						5878a328e3
					
				
							
								
								
									
										61
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @ -4366,6 +4366,67 @@ if test x"$pgac_cv_prog_cc_cflags__fwrapv" = x"yes"; then | ||||
|   CFLAGS="$CFLAGS -fwrapv" | ||||
| fi | ||||
| 
 | ||||
|   # Disable FP optimizations that cause various errors on gcc 4.5+ or maybe 4.6+ | ||||
|   { $as_echo "$as_me:$LINENO: checking whether $CC supports -fexcess-precision=standard" >&5 | ||||
| $as_echo_n "checking whether $CC supports -fexcess-precision=standard... " >&6; } | ||||
| if test "${pgac_cv_prog_cc_cflags__fexcess_precision_standard+set}" = set; then | ||||
|   $as_echo_n "(cached) " >&6 | ||||
| else | ||||
|   pgac_save_CFLAGS=$CFLAGS | ||||
| CFLAGS="$pgac_save_CFLAGS -fexcess-precision=standard" | ||||
| ac_save_c_werror_flag=$ac_c_werror_flag | ||||
| ac_c_werror_flag=yes | ||||
| cat >conftest.$ac_ext <<_ACEOF | ||||
| /* confdefs.h.  */ | ||||
| _ACEOF | ||||
| cat confdefs.h >>conftest.$ac_ext | ||||
| cat >>conftest.$ac_ext <<_ACEOF | ||||
| /* end confdefs.h.  */ | ||||
| 
 | ||||
| int | ||||
| main () | ||||
| { | ||||
| 
 | ||||
|   ; | ||||
|   return 0; | ||||
| } | ||||
| _ACEOF | ||||
| rm -f conftest.$ac_objext | ||||
| if { (ac_try="$ac_compile" | ||||
| case "(($ac_try" in | ||||
|   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; | ||||
|   *) ac_try_echo=$ac_try;; | ||||
| esac | ||||
| eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" | ||||
| $as_echo "$ac_try_echo") >&5 | ||||
|   (eval "$ac_compile") 2>conftest.er1 | ||||
|   ac_status=$? | ||||
|   grep -v '^ *+' conftest.er1 >conftest.err | ||||
|   rm -f conftest.er1 | ||||
|   cat conftest.err >&5 | ||||
|   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 | ||||
|   (exit $ac_status); } && { | ||||
| 	 test -z "$ac_c_werror_flag" || | ||||
| 	 test ! -s conftest.err | ||||
|        } && test -s conftest.$ac_objext; then | ||||
|   pgac_cv_prog_cc_cflags__fexcess_precision_standard=yes | ||||
| else | ||||
|   $as_echo "$as_me: failed program was:" >&5 | ||||
| sed 's/^/| /' conftest.$ac_ext >&5 | ||||
| 
 | ||||
| 	pgac_cv_prog_cc_cflags__fexcess_precision_standard=no | ||||
| fi | ||||
| 
 | ||||
| rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||||
| ac_c_werror_flag=$ac_save_c_werror_flag | ||||
| CFLAGS="$pgac_save_CFLAGS" | ||||
| fi | ||||
| { $as_echo "$as_me:$LINENO: result: $pgac_cv_prog_cc_cflags__fexcess_precision_standard" >&5 | ||||
| $as_echo "$pgac_cv_prog_cc_cflags__fexcess_precision_standard" >&6; } | ||||
| if test x"$pgac_cv_prog_cc_cflags__fexcess_precision_standard" = x"yes"; then | ||||
|   CFLAGS="$CFLAGS -fexcess-precision=standard" | ||||
| fi | ||||
| 
 | ||||
| elif test "$ICC" = yes; then | ||||
|   # Intel's compiler has a bug/misoptimization in checking for | ||||
|   # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS. | ||||
|  | ||||
| @ -437,6 +437,8 @@ if test "$GCC" = yes -a "$ICC" = no; then | ||||
|   PGAC_PROG_CC_CFLAGS_OPT([-fno-strict-aliasing]) | ||||
|   # Disable optimizations that assume no overflow; needed for gcc 4.3+ | ||||
|   PGAC_PROG_CC_CFLAGS_OPT([-fwrapv]) | ||||
|   # Disable FP optimizations that cause various errors on gcc 4.5+ or maybe 4.6+ | ||||
|   PGAC_PROG_CC_CFLAGS_OPT([-fexcess-precision=standard]) | ||||
| elif test "$ICC" = yes; then | ||||
|   # Intel's compiler has a bug/misoptimization in checking for | ||||
|   # division by NAN (NaN == 0), -mp1 fixes it, so add it to the CFLAGS. | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user