Hello!
Attached patch adds -mieee to tests that need full IEEE compliance to
pass. While working on patch, I have noticed that go-test.exp doesn't
pass DEFAULT_GOCFLAGS to go_target_compile procedure in expected
format (so, these simply get ignored). With this issue fixed, we can
add -mieee to DEFAULT_GOCFLAGS. Tests, compiled through torture
procedure, expects their special flags in a separate driver file.
Attached patch fixes all "floating point errors" on
alphaev68-pc-linux-gnu through these two methods.
2012-01-19 Uros Bizjak <[email protected]>
* go.test/go-test.exp (go-gc-tests): Add -mieee to DEFAULT_GOCFLAGS
for alpha*-*-* and sh*-*-* to enable full IEEE compliance mode.
Pass correctly formatted options to go_target_compile.
* go.test/test/fixedbugs/bug321.x: New file.
* go.test/test/zerodivide.x: Ditto.
* go.test/test/floatcmp.x: Ditto.
Patch was tested on alphaev68-pc-linux-gnu and x86_64-pc-linux-gnu.
OK for mainline SVN?
Uros.
Index: test/zerodivide.x
===================================================================
--- test/zerodivide.x (revision 0)
+++ test/zerodivide.x (revision 0)
@@ -0,0 +1,6 @@
+if { [istarget "alpha*-*-*"] || [istarget "sh*-*-*"] } {
+ # alpha and SH require -mieee for this test.
+ set additional_flags "-mieee"
+}
+
+return 0
Index: test/floatcmp.x
===================================================================
--- test/floatcmp.x (revision 0)
+++ test/floatcmp.x (revision 0)
@@ -0,0 +1,6 @@
+if { [istarget "alpha*-*-*"] || [istarget "sh*-*-*"] } {
+ # alpha and SH require -mieee for this test.
+ set additional_flags "-mieee"
+}
+
+return 0
Index: test/fixedbugs/bug321.x
===================================================================
--- test/fixedbugs/bug321.x (revision 0)
+++ test/fixedbugs/bug321.x (revision 0)
@@ -0,0 +1,6 @@
+if { [istarget "alpha*-*-*"] || [istarget "sh*-*-*"] } {
+ # alpha and SH require -mieee for this test.
+ set additional_flags "-mieee"
+}
+
+return 0
Index: go-test.exp
===================================================================
--- go-test.exp (revision 183305)
+++ go-test.exp (working copy)
@@ -208,6 +208,15 @@
set DEFAULT_GOCFLAGS " -pedantic-errors"
}
+ # Enable full IEEE compliance mode.
+ if { [istarget alpha*-*-*]
+ || [istarget sh*-*-*] } then {
+ lappend DEFAULT_GOCFLAGS "-mieee"
+ }
+
+ set options ""
+ lappend options "additional_flags=$DEFAULT_GOCFLAGS"
+
# Set GOARCH for tests that need it.
go-set-goarch
@@ -585,7 +594,7 @@
set dg-do-what-default "link"
set output_file "./[file rootname [file tail $test]].exe"
set comp_output [go_target_compile "$ofile1 $ofile2" \
- $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ $output_file "executable" "$options"]
set comp_output [go-dg-prune $target_triplet $comp_output]
verbose -log $comp_output
set result [go_load "$output_file" "" ""]
@@ -610,7 +619,7 @@
set dg-do-what-default "link"
set output_file "./[file rootname [file tail $test]].exe"
set comp_output [go_target_compile "$ofile1 $ofile2 $ofile3" \
- $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ $output_file "executable" "$options"]
set comp_output [go-dg-prune $target_triplet $comp_output]
if [string match "" $comp_output] {
pass $name
@@ -633,7 +642,7 @@
set ofile2 "[file rootname [file tail $test]].o"
set output_file "./[file rootname [file tail $test]].exe"
set comp_output [go_target_compile "$ofile1 $ofile2" \
- $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ $output_file "executable" "$options"]
set comp_output [go-dg-prune $target_triplet $comp_output]
if [string match "" $comp_output] {
set result [go_load "$output_file" "" ""]
@@ -660,7 +669,7 @@
set dg-do-what-default "link"
set output_file "./[file rootname [file tail $file2]].exe"
set comp_output [go_target_compile "$ofile1 $ofile2" \
- $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ $output_file "executable" "$options"]
set comp_output [go-dg-prune $target_triplet $comp_output]
if [string match "" $comp_output] {
set result [go_load "$output_file" "" ""]
@@ -726,7 +735,7 @@
errchk $file3 ""
set output_file "./[file rootname [file tail $test]].exe"
set comp_output [go_target_compile "$ofile0 $ofile1 $ofile2" \
- $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ $output_file "executable" "$options"]
set comp-output [go-dg-prune $target_triplet $comp_output]
if [string match "" $comp_output] {
set result [go_load "$output_file" "" ""]
@@ -759,7 +768,7 @@
set ofile2 "[file rootname [file tail $test]].o"
set output_file "./[file rootname [file tail $test]].exe"
set comp_output [go_target_compile "$ofile1 $ofile2" \
- $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ $output_file "executable" "$options"]
set comp_output [go-dg-prune $target_triplet $comp_output]
if [string match "" $comp_output] {
set result [go_load "$output_file" "" ""]
@@ -775,7 +784,7 @@
regsub "/\[^/\]*$" $test "/cmplxdivide1.go" test2
set output_file "./[file rootname [file tail $test]].o"
set comp_output [go_target_compile "$test $test2" \
- $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ $output_file "executable" "$options"]
set comp_output [go-dg-prune $target_triplet $comp_output]
if [string match "" $comp_output] {
set result [go_load "$output_file" "" ""]
@@ -853,7 +862,7 @@
set ofile2 "[file rootname [file tail $file2]].o"
set output_file "./[file rootname [file tail $test]].exe"
set comp_output [go_target_compile "$ofile1 $ofile2" \
- $output_file "executable" "$DEFAULT_GOCFLAGS"]
+ $output_file "executable" "$options"]
set comp_output [go-dg-prune $target_triplet $comp_output]
if [string match "" $comp_output] {
setup_xfail "*-*-*"