diff mbox series

[d] Committed merge with upstream dmd

Message ID CABOHX+fJvs-JP+Qnm-BnSde647L9_WyNHbbKz_1_9d=O3hf6_Q@mail.gmail.com
State New
Headers show
Series [d] Committed merge with upstream dmd | expand

Commit Message

Iain Buclaw March 30, 2019, 10:10 p.m. UTC
Hi,

The patch merges the D front-end implementation with dmd upstream 5dd3eccc3.

Aligns the test flags between gcc and upstream, after adding support
to gdc-test.exp to handle extra source and file settings being passed
multiple times.

Regression tested on x86_64-linux-gnu.

Committed to trunk as r270038.
diff mbox series

Patch

diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE
index ffad6cb524d..31ea106965b 100644
--- a/gcc/d/dmd/MERGE
+++ b/gcc/d/dmd/MERGE
@@ -1,4 +1,4 @@ 
-ab702e73e56aefb3b77b8f8f42da94bc22143eeb
+5dd3eccc3b0758346f77bee3cdc3f6bd15de339b
 
 The first line of this file holds the git revision number of the last
 merge done from the dlang/dmd repository.
diff --git a/gcc/testsuite/gdc.test/compilable/test6395.d b/gcc/testsuite/gdc.test/compilable/test6395.d
index 95f1a7eae6e..a1bac8e48f1 100644
--- a/gcc/testsuite/gdc.test/compilable/test6395.d
+++ b/gcc/testsuite/gdc.test/compilable/test6395.d
@@ -1,5 +1,6 @@ 
-// REQUIRED_ARGS: -c -Icompilable/extra-files
+// REQUIRED_ARGS: -Icompilable/extra-files
 // EXTRA_SOURCES: b6395.d
+// EXTRA_FILES: extra-files/c6395.d
 
 // 6395
 
diff --git a/gcc/testsuite/gdc.test/compilable/test7190.d b/gcc/testsuite/gdc.test/compilable/test7190.d
index 5143f55e772..45344f13b8f 100644
--- a/gcc/testsuite/gdc.test/compilable/test7190.d
+++ b/gcc/testsuite/gdc.test/compilable/test7190.d
@@ -1,6 +1,9 @@ 
 // PERMUTE_ARGS:
 // REQUIRED_ARGS: -Icompilable/extra-files
-// EXTRA_FILES: extra-files/example7190/controllers/HomeController.d extra-files/example7190/models/HomeModel.d extra-files/serenity7190/core/Controller.d  extra-files/serenity7190/core/Model.d
+// EXTRA_FILES: extra-files/example7190/controllers/HomeController.d
+// EXTRA_FILES: extra-files/example7190/models/HomeModel.d
+// EXTRA_FILES: extra-files/serenity7190/core/Controller.d
+// EXTRA_FILES: extra-files/serenity7190/core/Model.d
 
 import example7190.controllers.HomeController;
 import example7190.models.HomeModel;
diff --git a/gcc/testsuite/gdc.test/compilable/test9436.d b/gcc/testsuite/gdc.test/compilable/test9436.d
index c80bdc59e82..2baee7c216b 100644
--- a/gcc/testsuite/gdc.test/compilable/test9436.d
+++ b/gcc/testsuite/gdc.test/compilable/test9436.d
@@ -1,4 +1,3 @@ 
-// REQUIRED_ARGS: -c
 // EXTRA_SOURCES: imports/test9436interp.d
 
 // this is a dummy module for test 9436.
diff --git a/gcc/testsuite/gdc.test/compilable/testDIP37.d b/gcc/testsuite/gdc.test/compilable/testDIP37.d
index a612365eaf4..7188758414c 100644
--- a/gcc/testsuite/gdc.test/compilable/testDIP37.d
+++ b/gcc/testsuite/gdc.test/compilable/testDIP37.d
@@ -1,6 +1,9 @@ 
 // PERMUTE_ARGS:
 // REQUIRED_ARGS: -Icompilable/extra-files
-// EXTRA_FILES: extra-files/pkgDIP37/datetime/package.d extra-files/pkgDIP37/datetime/common.d extra-files/pkgDIP37/test17629/package.di extra-files/pkgDIP37/test17629/common.di
+// EXTRA_FILES: extra-files/pkgDIP37/datetime/package.d
+// EXTRA_FILES: extra-files/pkgDIP37/datetime/common.d
+// EXTRA_FILES: extra-files/pkgDIP37/test17629/package.di
+// EXTRA_FILES: extra-files/pkgDIP37/test17629/common.di
 
 void test1()
 {
diff --git a/gcc/testsuite/gdc.test/compilable/testDIP37_10302.d b/gcc/testsuite/gdc.test/compilable/testDIP37_10302.d
index 7e76595f06f..3c4a409b709 100644
--- a/gcc/testsuite/gdc.test/compilable/testDIP37_10302.d
+++ b/gcc/testsuite/gdc.test/compilable/testDIP37_10302.d
@@ -1,6 +1,7 @@ 
 // PERMUTE_ARGS:
-// REQUIRED_ARGS: -c -Icompilable/extra-files
-// EXTRA_SOURCES: extra-files/pkgDIP37_10302/liba.d extra-files/pkgDIP37_10302/libb.d
+// REQUIRED_ARGS: -Icompilable/extra-files
+// COMPILED_IMPORTS: extra-files/pkgDIP37_10302/liba.d
+// COMPILED_IMPORTS: extra-files/pkgDIP37_10302/libb.d
 // EXTRA_FILES: extra-files/pkgDIP37_10302/package.d
 
 module test;
diff --git a/gcc/testsuite/gdc.test/compilable/testDIP37_10354.d b/gcc/testsuite/gdc.test/compilable/testDIP37_10354.d
index 2993fa94d39..f9adf86307c 100644
--- a/gcc/testsuite/gdc.test/compilable/testDIP37_10354.d
+++ b/gcc/testsuite/gdc.test/compilable/testDIP37_10354.d
@@ -1,6 +1,8 @@ 
 // PERMUTE_ARGS:
 // REQUIRED_ARGS: -o- -Icompilable/extra-files
-// EXTRA_FILES: extra-files/pkgDIP37_10354/mbar.d extra-files/pkgDIP37_10354/mfoo.d extra-files/pkgDIP37_10354/package.d
+// EXTRA_FILES: extra-files/pkgDIP37_10354/mbar.d
+// EXTRA_FILES: extra-files/pkgDIP37_10354/mfoo.d
+// EXTRA_FILES: extra-files/pkgDIP37_10354/package.d
 
 module testDIP37_10354;
 import pkgDIP37_10354.mfoo;
diff --git a/gcc/testsuite/gdc.test/compilable/testDIP37_10421.d b/gcc/testsuite/gdc.test/compilable/testDIP37_10421.d
index 859347331b1..7da5bcf2d08 100644
--- a/gcc/testsuite/gdc.test/compilable/testDIP37_10421.d
+++ b/gcc/testsuite/gdc.test/compilable/testDIP37_10421.d
@@ -1,6 +1,8 @@ 
 // PERMUTE_ARGS:
 // REQUIRED_ARGS: -Icompilable/extra-files
-// COMPILED_IMPORTS: extra-files/pkgDIP37_10421/algo/package.d extra-files/pkgDIP37_10421/algo/mod.d extra-files/pkgDIP37_10421/except.d
+// COMPILED_IMPORTS: extra-files/pkgDIP37_10421/algo/package.d
+// COMPILED_IMPORTS: extra-files/pkgDIP37_10421/algo/mod.d
+// COMPILED_IMPORTS: extra-files/pkgDIP37_10421/except.d
 
 module testDIP37_10421;
 import pkgDIP37_10421.algo;
diff --git a/gcc/testsuite/gdc.test/gdc-test.exp b/gcc/testsuite/gdc.test/gdc-test.exp
index 59abf74dc89..ab8a4a3cfbd 100644
--- a/gcc/testsuite/gdc.test/gdc-test.exp
+++ b/gcc/testsuite/gdc.test/gdc-test.exp
@@ -153,6 +153,10 @@  proc gdc-copy-extra { base extra } {
     close $fdin
     close $fdout
 
+    # Remove file once test is finished.
+    upvar 2 cleanup_extra_files cleanups
+    lappend cleanups $extra
+
     return $extra
 }
 
@@ -184,6 +188,9 @@  proc dmd2dg { base test } {
     set PERMUTE_ARGS $DEFAULT_DFLAGS
     set GDC_EXECUTE_ARGS ""
 
+    set extra_sources ""
+    set extra_files ""
+
     # Split base, folder/file.
     set type [file dirname $test]
     set name [file tail $test]
@@ -230,46 +237,57 @@  proc dmd2dg { base test } {
 	    regsub -- {REQUIRED_ARGS.*$} $copy_line $new_option out_line
 
 	} elseif [regexp -- {EXTRA_SOURCES\s*:\s*(.*)} $copy_line match sources] {
-	    # Copy all sources to the testsuite build directory.
-	    foreach import $sources {
-		# print "Import: $base $type/$import"
-		gdc-copy-extra $base "$type/$import"
+	    # EXTRA_SOURCES are appended to extra_sources list
+	    foreach srcfile $sources {
+		lappend extra_sources $srcfile
 	    }
-	    set new_option "{ dg-additional-sources \"$sources\" }"
-	    regsub -- {EXTRA_SOURCES.*$} $copy_line $new_option out_line
+	    regsub -- {EXTRA_SOURCES.*$} $copy_line "" out_line
 
 	} elseif [regexp -- {EXTRA_CPP_SOURCES\s*:\s*(.*)} $copy_line match sources] {
-	    # Copy all sources to the testsuite build directory.
-	    foreach import $sources {
-		# print "Import: $base $type/$import"
-		gdc-copy-extra $base "$type/$import"
+	    # EXTRA_CPP_SOURCES are appended to extra_sources list
+	    foreach srcfile $sources {
+		# C++ sources are found in the extra-files directory.
+		lappend extra_sources "extra-files/$srcfile"
 	    }
-	    set new_option "{ dg-additional-sources \"$sources\" }"
-	    regsub -- {EXTRA_CPP_SOURCES.*$} $copy_line $new_option out_line
+	    regsub -- {EXTRA_CPP_SOURCES.*$} $copy_line "" out_line
 
 	} elseif [regexp -- {EXTRA_FILES\s*:\s*(.*)} $copy_line match files] {
-	    # Copy all files to the testsuite build directory.
-	    foreach import $files {
-		# print "Import: $base $type/$import"
-		gdc-copy-extra $base "$type/$import"
+	    # EXTRA_FILES are appended to extra_files list
+	    foreach file $files {
+		lappend extra_files $file
 	    }
-	    set new_option "{ dg-additional-files \"$files\" }"
-	    regsub -- {EXTRA_FILES.*$} $copy_line $new_option out_line
+	    regsub -- {EXTRA_FILES.*$} $copy_line "" out_line
 
 	} elseif [regexp -- {COMPILED_IMPORTS\s*:\s*(.*)} $copy_line match sources] {
-	    # Copy all sources to the testsuite build directory.
+	    # COMPILED_IMPORTS are appended to extra_sources list
 	    foreach import $sources {
-		# print "Import: $base $type/$import"
-		gdc-copy-extra $base "$type/$import"
+		lappend extra_sources $import
 	    }
-	    set new_option "{ dg-additional-sources \"$sources\" }"
-	    regsub -- {COMPILED_IMPORTS.*$} $copy_line $new_option out_line
+	    regsub -- {COMPILED_IMPORTS.*$} $copy_line "" out_line
 
 	}
 
 	puts $fdout $out_line
     }
 
+    # Now that all extra sources and files have been collected, copy them all
+    # to the testsuite build directory.
+    if { [llength $extra_sources] > 0 } {
+	foreach srcfile $extra_sources {
+	    gdc-copy-extra $base "$type/$srcfile"
+	}
+	set out_line "// { dg-additional-sources \"$extra_sources\" }"
+	puts $fdout $out_line
+    }
+
+    if { [llength $extra_files] > 0 } {
+	foreach file $extra_files {
+	    gdc-copy-extra $base "$type/$file"
+	}
+	set out_line "// { dg-additional-files \"$extra_files\" }"
+	puts $fdout $out_line
+    }
+
     # Add specific options for test type
 
     # DMD's testsuite is extremely verbose, compiler messages from constructs
@@ -387,6 +405,7 @@  proc gdc-do-test { } {
 
 	# Convert to DG test.
 	set imports [format "-I%s/%s" $base $dir]
+	set cleanup_extra_files ""
 	# Include $subdir prefix so test names follow DejaGnu conventions.
 	set filename "$subdir/[dmd2dg $base $dir/$name.$ext]"
 
@@ -430,7 +449,10 @@  proc gdc-do-test { } {
 	    }
 	}
 
-	# Cleanup
+	# Cleanup test directory.
+	foreach srcfile $cleanup_extra_files {
+	    file delete $subdir/$srcfile
+	}
 	file delete $filename
     }
 
diff --git a/gcc/testsuite/gdc.test/runnable/cabi1.d b/gcc/testsuite/gdc.test/runnable/cabi1.d
index b58e25ca5dc..3a914cd0e57 100644
--- a/gcc/testsuite/gdc.test/runnable/cabi1.d
+++ b/gcc/testsuite/gdc.test/runnable/cabi1.d
@@ -1,5 +1,5 @@ 
 
-// EXTRA_CPP_SOURCES: extra-files/cabi2.cpp
+// EXTRA_CPP_SOURCES: cabi2.cpp
 
 import core.stdc.stdio;
 import core.stdc.config;
diff --git a/gcc/testsuite/gdc.test/runnable/cpp_abi_tests.d b/gcc/testsuite/gdc.test/runnable/cpp_abi_tests.d
index f0c0c097904..83e1cff10d9 100644
--- a/gcc/testsuite/gdc.test/runnable/cpp_abi_tests.d
+++ b/gcc/testsuite/gdc.test/runnable/cpp_abi_tests.d
@@ -1,4 +1,4 @@ 
-// EXTRA_CPP_SOURCES: extra-files/cpp_abi_tests.cpp
+// EXTRA_CPP_SOURCES: cpp_abi_tests.cpp
 
 extern(C++) {
 
diff --git a/gcc/testsuite/gdc.test/runnable/cppa.d b/gcc/testsuite/gdc.test/runnable/cppa.d
index 6b2bafbe7bc..b9b4832991e 100644
--- a/gcc/testsuite/gdc.test/runnable/cppa.d
+++ b/gcc/testsuite/gdc.test/runnable/cppa.d
@@ -1,5 +1,5 @@ 
 // PERMUTE_ARGS: -g
-// EXTRA_CPP_SOURCES: extra-files/cppb.cpp
+// EXTRA_CPP_SOURCES: cppb.cpp
 
 import core.stdc.stdio;
 import core.stdc.stdarg;
diff --git a/gcc/testsuite/gdc.test/runnable/externmangle.d b/gcc/testsuite/gdc.test/runnable/externmangle.d
index bf80adafe02..9099f94f2d0 100644
--- a/gcc/testsuite/gdc.test/runnable/externmangle.d
+++ b/gcc/testsuite/gdc.test/runnable/externmangle.d
@@ -1,4 +1,4 @@ 
-// EXTRA_CPP_SOURCES: extra-files/externmangle.cpp
+// EXTRA_CPP_SOURCES: externmangle.cpp
 
 extern(C++):
 
diff --git a/gcc/testsuite/gdc.test/runnable/externmangle2.d b/gcc/testsuite/gdc.test/runnable/externmangle2.d
index 7d87fbd67f3..74beb2581f0 100644
--- a/gcc/testsuite/gdc.test/runnable/externmangle2.d
+++ b/gcc/testsuite/gdc.test/runnable/externmangle2.d
@@ -1,4 +1,4 @@ 
-// EXTRA_CPP_SOURCES: extra-files/externmangle2.cpp
+// EXTRA_CPP_SOURCES: externmangle2.cpp
 
 version(Windows)
 {
diff --git a/gcc/testsuite/gdc.test/runnable/ice10086a.d b/gcc/testsuite/gdc.test/runnable/ice10086a.d
index c2f5ae6f729..31a5b568b50 100644
--- a/gcc/testsuite/gdc.test/runnable/ice10086a.d
+++ b/gcc/testsuite/gdc.test/runnable/ice10086a.d
@@ -1,4 +1,5 @@ 
-// EXTRA_SOURCES: imports/ice10086x.d imports/ice10086y.d
+// EXTRA_SOURCES: imports/ice10086x.d
+// EXTRA_SOURCES: imports/ice10086y.d
 
 import imports.ice10086x;
 import imports.ice10086y;
diff --git a/gcc/testsuite/gdc.test/runnable/ice10086b.d b/gcc/testsuite/gdc.test/runnable/ice10086b.d
index 0dc64f84c16..abb6f78a4ac 100644
--- a/gcc/testsuite/gdc.test/runnable/ice10086b.d
+++ b/gcc/testsuite/gdc.test/runnable/ice10086b.d
@@ -1,4 +1,5 @@ 
-// EXTRA_SOURCES: imports/ice10086y.d imports/ice10086x.d
+// EXTRA_SOURCES: imports/ice10086y.d
+// EXTRA_SOURCES: imports/ice10086x.d
 
 import imports.ice10086y;
 import imports.ice10086x;
diff --git a/gcc/testsuite/gdc.test/runnable/ice4481.d b/gcc/testsuite/gdc.test/runnable/ice4481.d
index 638d1518f60..e1467963ee7 100644
--- a/gcc/testsuite/gdc.test/runnable/ice4481.d
+++ b/gcc/testsuite/gdc.test/runnable/ice4481.d
@@ -1,4 +1,5 @@ 
-// EXTRA_SOURCES: imports/ice4481a.d imports/ice4481b.d
+// EXTRA_SOURCES: imports/ice4481a.d
+// EXTRA_SOURCES: imports/ice4481b.d
 
 import imports.ice4481a;
 import imports.ice4481b;
diff --git a/gcc/testsuite/gdc.test/runnable/imports/std12010container.d b/gcc/testsuite/gdc.test/runnable/imports/std12010container.d
index a2288059927..1fe8aff14a9 100644
--- a/gcc/testsuite/gdc.test/runnable/imports/std12010container.d
+++ b/gcc/testsuite/gdc.test/runnable/imports/std12010container.d
@@ -1,4 +1,3 @@ 
-module imports.std12010container;
 struct Array(T)
 {
     private struct Payload
diff --git a/gcc/testsuite/gdc.test/runnable/link11069b.d b/gcc/testsuite/gdc.test/runnable/link11069b.d
index a6253504f98..658f46eb51b 100644
--- a/gcc/testsuite/gdc.test/runnable/link11069b.d
+++ b/gcc/testsuite/gdc.test/runnable/link11069b.d
@@ -1,5 +1,7 @@ 
 // COMPILE_SEPARATELY
-// EXTRA_SOURCES: imports/link11069x.d imports/link11069y.d imports/link11069z.d
+// EXTRA_SOURCES: imports/link11069x.d
+// EXTRA_SOURCES: imports/link11069y.d
+// EXTRA_SOURCES: imports/link11069z.d
 
 import imports.link11069y;
 import imports.link11069z;
diff --git a/gcc/testsuite/gdc.test/runnable/link12010.d b/gcc/testsuite/gdc.test/runnable/link12010.d
index 41fa719f799..49c4eb184b1 100644
--- a/gcc/testsuite/gdc.test/runnable/link12010.d
+++ b/gcc/testsuite/gdc.test/runnable/link12010.d
@@ -1,5 +1,6 @@ 
 // COMPILE_SEPARATELY
-// EXTRA_SOURCES: imports/a12010.d imports/std12010container.d
+// EXTRA_SOURCES: imports/a12010.d
+// EXTRA_FILES: imports/std12010container.d
 // REQUIRED_ARGS: -release
 // -release is necessary to avoid __assert.
 
diff --git a/gcc/testsuite/gdc.test/runnable/link2644.d b/gcc/testsuite/gdc.test/runnable/link2644.d
index bf656f7ef81..f38b8cab8c2 100644
--- a/gcc/testsuite/gdc.test/runnable/link2644.d
+++ b/gcc/testsuite/gdc.test/runnable/link2644.d
@@ -1,5 +1,7 @@ 
 // PERMUTE_ARGS: -version=X -inline -release -g -O
-// EXTRA_SOURCES: imports/link2644a.d imports/link2644b.d imports/link2644c.d
+// EXTRA_SOURCES: imports/link2644a.d
+// EXTRA_SOURCES: imports/link2644b.d
+// EXTRA_SOURCES: imports/link2644c.d
 // COMPILE_SEPARATELY:
 
 module link2644;
diff --git a/gcc/testsuite/gdc.test/runnable/overload.d b/gcc/testsuite/gdc.test/runnable/overload.d
index 73354281df4..f8fa7d5cdda 100644
--- a/gcc/testsuite/gdc.test/runnable/overload.d
+++ b/gcc/testsuite/gdc.test/runnable/overload.d
@@ -1,4 +1,5 @@ 
-// EXTRA_SOURCES: imports/ovs1528a.d imports/ovs1528b.d imports/template_ovs1.d imports/template_ovs2.d imports/template_ovs3.d
+// EXTRA_SOURCES: imports/ovs1528a.d imports/ovs1528b.d
+// EXTRA_SOURCES: imports/template_ovs1.d imports/template_ovs2.d imports/template_ovs3.d
 
 import imports.template_ovs1;
 import imports.template_ovs2;
diff --git a/gcc/testsuite/gdc.test/runnable/test10736.d b/gcc/testsuite/gdc.test/runnable/test10736.d
index 373b536129b..55b6f539887 100644
--- a/gcc/testsuite/gdc.test/runnable/test10736.d
+++ b/gcc/testsuite/gdc.test/runnable/test10736.d
@@ -1,4 +1,5 @@ 
-// EXTRA_SOURCES: imports/test10736a.d imports/test10736b.d
+// EXTRA_SOURCES: imports/test10736a.d
+// EXTRA_SOURCES: imports/test10736b.d
 
 import imports.test10736a;
 import imports.test10736b;
diff --git a/gcc/testsuite/gdc.test/runnable/test11863.d b/gcc/testsuite/gdc.test/runnable/test11863.d
index f42ac45d348..c1285b3bef7 100644
--- a/gcc/testsuite/gdc.test/runnable/test11863.d
+++ b/gcc/testsuite/gdc.test/runnable/test11863.d
@@ -1,5 +1,6 @@ 
 // COMPILE_SEPARATELY
-// EXTRA_SOURCES: imports/std11863conv.d imports/std11863format.d
+// EXTRA_SOURCES: imports/std11863conv.d
+// EXTRA_FILES: imports/std11863format.d
 
 import imports.std11863conv;
 
diff --git a/gcc/testsuite/gdc.test/runnable/test42.d b/gcc/testsuite/gdc.test/runnable/test42.d
index b9619c992ff..87ee7a8e73a 100644
--- a/gcc/testsuite/gdc.test/runnable/test42.d
+++ b/gcc/testsuite/gdc.test/runnable/test42.d
@@ -5676,7 +5676,11 @@  void testreal_to_ulong()
     real adjust = 1.0L/real.epsilon;
     u = r2ulong(adjust);
     //writefln("%s %s", adjust, u);
-    static if(real.mant_dig == 64)
+    static if(real.mant_dig == 113)
+        assert(u == 18446744073709551615UL);
+    else static if(real.mant_dig == 106)
+        assert(u == 18446744073709551615UL);
+    else static if(real.mant_dig == 64)
         assert(u == 9223372036854775808UL);
     else static if(real.mant_dig == 53)
         assert(u == 4503599627370496UL);