Commit 6d9434e5 by Rainer Orth Committed by Rainer Orth

Disable gdc execution tests without libphobos

	gcc/testsuite:
	* lib/target-supports.exp (check_compile): Handle D.
	(check_effective_target_d_runtime): New proc.
	* lib/gdc-dg.exp (gdc-dg-test): Demote link and run tests to
	compile unless d_runtime.
	* gdc.dg/runnable.d: Skip unless d_runtime.
	* gdc.dg/lto/lto.exp: Require d_runtime to run tests.

	gcc:
	* doc/sourcebuild.texi (Effective-Target Keywords, Environment
	attributes): Document d_runtime.

From-SVN: r266438
parent 12422bc8
2018-11-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* doc/sourcebuild.texi (Effective-Target Keywords, Environment
attributes): Document d_runtime.
2018-11-25 Vladimir Makarov <vmakarov@redhat.com> 2018-11-25 Vladimir Makarov <vmakarov@redhat.com>
PR bootstrap/88157 PR bootstrap/88157
...@@ -2106,6 +2106,9 @@ Target provides a full C99 runtime. ...@@ -2106,6 +2106,9 @@ Target provides a full C99 runtime.
Target @code{string.h} and @code{wchar.h} headers provide C++ required Target @code{string.h} and @code{wchar.h} headers provide C++ required
overloads for @code{strchr} etc. functions. overloads for @code{strchr} etc. functions.
@item d_runtime
Target provides the D runtime.
@item dummy_wcsftime @item dummy_wcsftime
Target uses a dummy @code{wcsftime} function that always returns zero. Target uses a dummy @code{wcsftime} function that always returns zero.
......
2018-11-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* lib/target-supports.exp (check_compile): Handle D.
(check_effective_target_d_runtime): New proc.
* lib/gdc-dg.exp (gdc-dg-test): Demote link and run tests to
compile unless d_runtime.
* gdc.dg/runnable.d: Skip unless d_runtime.
* gdc.dg/lto/lto.exp: Require d_runtime to run tests.
2018-11-24 Paul Thomas <pault@gcc.gnu.org> 2018-11-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/88143 PR fortran/88143
......
...@@ -36,6 +36,11 @@ if { ![check_effective_target_lto] } { ...@@ -36,6 +36,11 @@ if { ![check_effective_target_lto] } {
return return
} }
# Likewise if the D runtime library is missing.
if { ![check_effective_target_d_runtime] } {
return
}
lto_init no-mathlib lto_init no-mathlib
# Define an identifier for use with this suite to avoid name conflicts # Define an identifier for use with this suite to avoid name conflicts
......
// { dg-additional-sources "imports/runnable.d" } // { dg-additional-sources "imports/runnable.d" }
// { dg-do run { target hw } } // { dg-do run { target hw } }
// { dg-skip-if "needs gcc/config.d" { ! d_runtime } }
module runnable; module runnable;
......
...@@ -19,6 +19,19 @@ load_lib gcc-dg.exp ...@@ -19,6 +19,19 @@ load_lib gcc-dg.exp
# Define gdc callbacks for dg.exp. # Define gdc callbacks for dg.exp.
proc gdc-dg-test { prog do_what extra_tool_flags } { proc gdc-dg-test { prog do_what extra_tool_flags } {
upvar dg-do-what dg-do-what
# Demote link and run tests to compile-only if D runtime is missing.
if ![check_effective_target_d_runtime] {
switch $do_what {
link -
run {
set do_what compile
set dg-do-what compile
}
}
}
set result \ set result \
[gcc-dg-test-1 gdc_target_compile $prog $do_what $extra_tool_flags] [gcc-dg-test-1 gdc_target_compile $prog $do_what $extra_tool_flags]
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
# Assume by default that CONTENTS is C code. # Assume by default that CONTENTS is C code.
# Otherwise, code should contain: # Otherwise, code should contain:
# "// C++" for c++, # "// C++" for c++,
# "// D" for D,
# "! Fortran" for Fortran code, # "! Fortran" for Fortran code,
# "/* ObjC", for ObjC # "/* ObjC", for ObjC
# "// ObjC++" for ObjC++ # "// ObjC++" for ObjC++
...@@ -58,6 +59,7 @@ proc check_compile {basename type contents args} { ...@@ -58,6 +59,7 @@ proc check_compile {basename type contents args} {
switch -glob -- $contents { switch -glob -- $contents {
"*! Fortran*" { set src ${basename}[pid].f90 } "*! Fortran*" { set src ${basename}[pid].f90 }
"*// C++*" { set src ${basename}[pid].cc } "*// C++*" { set src ${basename}[pid].cc }
"*// D*" { set src ${basename}[pid].d }
"*// ObjC++*" { set src ${basename}[pid].mm } "*// ObjC++*" { set src ${basename}[pid].mm }
"*/* ObjC*" { set src ${basename}[pid].m } "*/* ObjC*" { set src ${basename}[pid].m }
"*// Go*" { set src ${basename}[pid].go } "*// Go*" { set src ${basename}[pid].go }
...@@ -7154,6 +7156,19 @@ proc check_effective_target_c99_runtime { } { ...@@ -7154,6 +7156,19 @@ proc check_effective_target_c99_runtime { } {
}] }]
} }
# Return 1 if the target provides the D runtime.
proc check_effective_target_d_runtime { } {
return [check_no_compiler_messages d_runtime executable {
// D
module mod;
extern(C) int main() {
return 0;
}
}]
}
# Return 1 if target wchar_t is at least 4 bytes. # Return 1 if target wchar_t is at least 4 bytes.
proc check_effective_target_4byte_wchar_t { } { proc check_effective_target_4byte_wchar_t { } {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment