2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-04-13 15:01:21 +08:00

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
This commit is contained in:
Rainer Orth 2018-11-25 15:59:44 +00:00 committed by Rainer Orth
parent 12422bc85c
commit 6d9434e595
7 changed files with 51 additions and 0 deletions

@ -1,3 +1,8 @@
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>
PR bootstrap/88157

@ -2106,6 +2106,9 @@ Target provides a full C99 runtime.
Target @code{string.h} and @code{wchar.h} headers provide C++ required
overloads for @code{strchr} etc. functions.
@item d_runtime
Target provides the D runtime.
@item dummy_wcsftime
Target uses a dummy @code{wcsftime} function that always returns zero.

@ -1,3 +1,12 @@
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>
PR fortran/88143

@ -36,6 +36,11 @@ if { ![check_effective_target_lto] } {
return
}
# Likewise if the D runtime library is missing.
if { ![check_effective_target_d_runtime] } {
return
}
lto_init no-mathlib
# Define an identifier for use with this suite to avoid name conflicts

@ -1,5 +1,6 @@
// { dg-additional-sources "imports/runnable.d" }
// { dg-do run { target hw } }
// { dg-skip-if "needs gcc/config.d" { ! d_runtime } }
module runnable;

@ -19,6 +19,19 @@ load_lib gcc-dg.exp
# Define gdc callbacks for dg.exp.
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 \
[gcc-dg-test-1 gdc_target_compile $prog $do_what $extra_tool_flags]

@ -31,6 +31,7 @@
# Assume by default that CONTENTS is C code.
# Otherwise, code should contain:
# "// C++" for c++,
# "// D" for D,
# "! Fortran" for Fortran code,
# "/* ObjC", for ObjC
# "// ObjC++" for ObjC++
@ -58,6 +59,7 @@ proc check_compile {basename type contents args} {
switch -glob -- $contents {
"*! Fortran*" { set src ${basename}[pid].f90 }
"*// C++*" { set src ${basename}[pid].cc }
"*// D*" { set src ${basename}[pid].d }
"*// ObjC++*" { set src ${basename}[pid].mm }
"*/* ObjC*" { set src ${basename}[pid].m }
"*// Go*" { set src ${basename}[pid].go }
@ -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.
proc check_effective_target_4byte_wchar_t { } {