diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f4c04f117cf..dc457d1e5d2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2006-06-06 Janis Johnson + + * lib/gcc-dg.exp (gcc-dg-test-1): Detect and report ICE. + * lib/gcc-defs.exp (tool_check_compile): Ditto. + * lib/fortran-torture.exp (fortran-torture-compile, + fortran-torture-execute): Ditto. + 2006-06-06 Ulrich Weigand PR target/27842 diff --git a/gcc/testsuite/lib/fortran-torture.exp b/gcc/testsuite/lib/fortran-torture.exp index b4e61941d96..182711553ce 100644 --- a/gcc/testsuite/lib/fortran-torture.exp +++ b/gcc/testsuite/lib/fortran-torture.exp @@ -87,6 +87,12 @@ proc fortran-torture-compile { src option } { return } + if [string match "*internal compiler error*" $comp_output] then { + gfortran_fail $testcase "$option (internal compiler error)" + catch { remote_file build delete $output } + return + } + # We shouldn't get these because of -w, but just in case. if [string match "*95*:*warning:*" $comp_output] then { warning "$testcase: (with warnings) $option" @@ -204,6 +210,12 @@ proc fortran-torture-execute { src } { catch { remote_file build delete $executable } continue } + + if [string match "*internal compiler error*" $comp_output] then { + gfortran_fail $testcase "$option (internal compiler error)" + catch { remote_file build delete $executable } + continue + } # We shouldn't get these because of -w, but just in case. if [string match "*95*:*warning:*" $comp_output] then { diff --git a/gcc/testsuite/lib/gcc-defs.exp b/gcc/testsuite/lib/gcc-defs.exp index 3b60200a600..e1e3b93be76 100644 --- a/gcc/testsuite/lib/gcc-defs.exp +++ b/gcc/testsuite/lib/gcc-defs.exp @@ -34,6 +34,11 @@ proc ${tool}_check_compile {testcase option objname gcc_output} { return 0 } + if [string match "*internal compiler error*" $gcc_output] then { + ${tool}_fail $testcase "$option (internal compiler error)" + return 0 + } + # We shouldn't get these because of -w, but just in case. if [string match "*cc:*warning:*" $gcc_output] then { warning "$testcase: (with warnings) $option" diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index e0640d8a0fc..d790396ab94 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -139,6 +139,14 @@ proc gcc-dg-test-1 { target_compile prog do_what extra_tool_flags } { set comp_output [$target_compile "$prog" "$output_file" "$compile_type" $options] + # Look for an internal compiler error, which sometimes masks the fact + # that we didn't get an expected error message. An ICE always fails, + # there's no way to XFAIL it. + if [string match "*internal compiler error*" $comp_output] { + upvar 2 name name + fail "$name (internal compiler error)" + } + if { $do_what == "repo" } { set object_file "$output_file" set output_file "[file rootname [file tail $prog]].exe"