This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix __GCC_IEC_559 determination for 32-bit x86


On Tue, Nov 05, 2013 at 01:14:46AM +0000, Joseph S. Myers wrote:
> HJ's regression tester shows the new test gcc.dg/iec-559-macros-9.c
> failing for 32-bit x86.  It turns out the excess precision handling
> for determining the value of __GCC_IEC_559 has two problems:
> flag_excess_precision hasn't been initialized at the point it's
> tested, so flag_excess_precision_cmdline (which *has* been updated
> based on flag_iso) needs testing instead, and on x86 with standard
> excess precision enabled there is no adddf3 pattern (because all x87
> arithmetic is in XFmode) so the default hook wrongly thinks it's a
> soft-float target.  This can be fixed by adding an x86-specific hook
> implementation; the issue doesn't affect any other target defining
> TARGET_FLT_EVAL_METHOD, because only x86 makes sure to disable the
> problematic insn patterns for -fexcess-precision=standard.
> 
> Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  OK to
> commit (the x86 target hook addition)?
> 
> 2013-11-05  Joseph Myers  <joseph@codesourcery.com>
> 
> 	* config/i386/i386.c (ix86_float_exceptions_rounding_supported_p):
> 	New function.
> 	(TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P): Define.
> 
> c-family:
> 2013-11-05  Joseph Myers  <joseph@codesourcery.com>
> 
> 	* c-cppbuiltin.c (cpp_iec_559_value): Test
> 	flag_excess_precision_cmdline not flag_excess_precision.

Ok.

Besides:
+FAIL: gcc.dg/iec-559-macros-9.c (test for excess errors)

that this patch supposedly fixes on i686-linux I'm also seeing:

+FAIL: gcc.dg/pch/save-temps-1.c  -O0 -g -I. -Dwith_PCH (test for excess errors)
+FAIL: gcc.dg/pch/save-temps-1.c -O0 -g assembly comparison
+FAIL: gcc.dg/pch/save-temps-1.c   -O0  -I. -Dwith_PCH (test for excess errors)
+FAIL: gcc.dg/pch/save-temps-1.c  -O0  assembly comparison
+FAIL: gcc.dg/pch/save-temps-1.c   -O1  -I. -Dwith_PCH (test for excess errors)
+FAIL: gcc.dg/pch/save-temps-1.c  -O1  assembly comparison
+FAIL: gcc.dg/pch/save-temps-1.c   -O2  -I. -Dwith_PCH (test for excess errors)
+FAIL: gcc.dg/pch/save-temps-1.c  -O2  assembly comparison
+FAIL: gcc.dg/pch/save-temps-1.c   -O3 -fomit-frame-pointer  -I. -Dwith_PCH (test for excess errors)
+FAIL: gcc.dg/pch/save-temps-1.c  -O3 -fomit-frame-pointer  assembly comparison
+FAIL: gcc.dg/pch/save-temps-1.c   -O3 -g  -I. -Dwith_PCH (test for excess errors)
+FAIL: gcc.dg/pch/save-temps-1.c  -O3 -g  assembly comparison
+FAIL: gcc.dg/pch/save-temps-1.c   -Os  -I. -Dwith_PCH (test for excess errors)
+FAIL: gcc.dg/pch/save-temps-1.c  -Os  assembly comparison

and

+FAIL: g++.dg/pch/pch.C  -g -I. -Dwith_PCH (test for excess errors)
+FAIL: g++.dg/pch/pch.C -g assembly comparison
+FAIL: g++.dg/pch/pch.C  -O2 -g -I. -Dwith_PCH (test for excess errors)
+FAIL: g++.dg/pch/pch.C -O2 -g assembly comparison
+FAIL: g++.dg/pch/pch.C  -O2 -I. -Dwith_PCH (test for excess errors)
+FAIL: g++.dg/pch/pch.C -O2 assembly comparison

(but not on x86_64-linux).  Is that going to be fixed by this change too, or is it
something else?  This was about 7h30m later than the previous build that didn't
have these failures, so there is a possibility some different change caused it, but
not very likely.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]