From: Jakub Jelinek Date: Mon, 15 Sep 2014 19:46:12 +0000 (+0200) Subject: re PR fortran/56408 (Fix dependency handling of testsuite/gfortran.dg) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f6815e4095ac7b14940d15df33b38154275155ec;p=gcc.git re PR fortran/56408 (Fix dependency handling of testsuite/gfortran.dg) PR fortran/56408 * gfortran.dg/dg.exp (gfortran_test_path, gfortran_aux_module_flags): New global vars. (dg-compile-aux-modules): New procedure. * gfortran.dg/binding_label_tests_10.f03: Remove comment and keep-modules. * gfortran.dg/binding_label_tests_10_main.f03: Remove comment, use dg-compile-aux-modules. * gfortran.dg/binding_label_tests_11.f03: Remove comment and keep-modules. * gfortran.dg/binding_label_tests_11_main.f03: Remove comment, use dg-compile-aux-modules. * gfortran.dg/binding_label_tests_13.f03: Remove comment and keep-modules. * gfortran.dg/binding_label_tests_13_main.f03: Remove comment, use dg-compile-aux-modules. * gfortran.dg/binding_label_tests_26a.f90: Remove comment and keep-modules. * gfortran.dg/binding_label_tests_26b.f90: Remove comment, use dg-compile-aux-modules. * gfortran.dg/class_45a.f03: Remove keep-modules. * gfortran.dg/class_45b.f03: Use dg-compile-aux-modules and cleanup-modules. * gfortran.dg/class_4a.f03: Use dg-do link, use dg-additional-sources and cleanup-modules, remove keep-modules and update comment. * gfortran.dg/class_4b.f03: Don't compile anywhere, remove keep-modules, adjust comment. * gfortran.dg/class_4c.f03: Don't compile anywhere, remove dg-additional-sources and cleanup-modules. * gfortran.dg/coarray_29_1.f90: Remove keep-modules and associated comment. * gfortran.dg/coarray_29_2.f90: Use dg-compile-aux-modules, remove comment. * gfortran.dg/test_common_binding_labels_2.f03: Remove keep-modules. * gfortran.dg/test_common_binding_labels_2_main.f03: Remove comment, use dg-compile-aux-modules. * gfortran.dg/test_common_binding_labels_3.f03: Remove keep-modules. * gfortran.dg/test_common_binding_labels_3_main.f03: Remove comment, use dg-compile-aux-modules. * gfortran.dg/whole_file_28.f90: Remove comment and keep-modules. * gfortran.dg/whole_file_29.f90: Remove comment, use dg-compile-aux-modules. * gfortran.dg/whole_file_30.f90: Remove comment and keep-modules. * gfortran.dg/whole_file_31.f90: Remove comment, use dg-compile-aux-modules. From-SVN: r215275 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d426cd19116..45e2384281f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,52 @@ 2014-09-15 Jakub Jelinek + PR fortran/56408 + * gfortran.dg/dg.exp (gfortran_test_path, gfortran_aux_module_flags): + New global vars. + (dg-compile-aux-modules): New procedure. + * gfortran.dg/binding_label_tests_10.f03: Remove comment + and keep-modules. + * gfortran.dg/binding_label_tests_10_main.f03: Remove comment, + use dg-compile-aux-modules. + * gfortran.dg/binding_label_tests_11.f03: Remove comment + and keep-modules. + * gfortran.dg/binding_label_tests_11_main.f03: Remove comment, + use dg-compile-aux-modules. + * gfortran.dg/binding_label_tests_13.f03: Remove comment + and keep-modules. + * gfortran.dg/binding_label_tests_13_main.f03: Remove comment, + use dg-compile-aux-modules. + * gfortran.dg/binding_label_tests_26a.f90: Remove comment + and keep-modules. + * gfortran.dg/binding_label_tests_26b.f90: Remove comment, + use dg-compile-aux-modules. + * gfortran.dg/class_45a.f03: Remove keep-modules. + * gfortran.dg/class_45b.f03: Use dg-compile-aux-modules + and cleanup-modules. + * gfortran.dg/class_4a.f03: Use dg-do link, use + dg-additional-sources and cleanup-modules, remove keep-modules + and update comment. + * gfortran.dg/class_4b.f03: Don't compile anywhere, remove + keep-modules, adjust comment. + * gfortran.dg/class_4c.f03: Don't compile anywhere, remove + dg-additional-sources and cleanup-modules. + * gfortran.dg/coarray_29_1.f90: Remove keep-modules and + associated comment. + * gfortran.dg/coarray_29_2.f90: Use dg-compile-aux-modules, + remove comment. + * gfortran.dg/test_common_binding_labels_2.f03: Remove keep-modules. + * gfortran.dg/test_common_binding_labels_2_main.f03: Remove comment, + use dg-compile-aux-modules. + * gfortran.dg/test_common_binding_labels_3.f03: Remove keep-modules. + * gfortran.dg/test_common_binding_labels_3_main.f03: Remove comment, + use dg-compile-aux-modules. + * gfortran.dg/whole_file_28.f90: Remove comment and keep-modules. + * gfortran.dg/whole_file_29.f90: Remove comment, use + dg-compile-aux-modules. + * gfortran.dg/whole_file_30.f90: Remove comment and keep-modules. + * gfortran.dg/whole_file_31.f90: Remove comment, use + dg-compile-aux-modules. + * lib/gcc-defs.exp (gcc_parallel_test_run_p, gcc_parallel_test_enable): New procedures. If GCC_RUNTEST_PARALLELIZE_DIR is set in environment, override diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_10.f03 b/gcc/testsuite/gfortran.dg/binding_label_tests_10.f03 index e609d34a520..0809c87f378 100644 --- a/gcc/testsuite/gfortran.dg/binding_label_tests_10.f03 +++ b/gcc/testsuite/gfortran.dg/binding_label_tests_10.f03 @@ -1,9 +1,6 @@ ! { dg-do compile } -! This file must be compiled BEFORE binding_label_tests_10_main.f03, which it -! should be because dejagnu will sort the files. module binding_label_tests_10 use iso_c_binding implicit none integer(c_int), bind(c,name="c_one") :: one end module binding_label_tests_10 -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_10_main.f03 b/gcc/testsuite/gfortran.dg/binding_label_tests_10_main.f03 index 5216fbedf6a..bce5ef68c42 100644 --- a/gcc/testsuite/gfortran.dg/binding_label_tests_10_main.f03 +++ b/gcc/testsuite/gfortran.dg/binding_label_tests_10_main.f03 @@ -1,6 +1,5 @@ ! { dg-do compile } -! This file must be compiled AFTER binding_label_tests_10.f03, which it -! should be because dejagnu will sort the files. +! { dg-compile-aux-modules "binding_label_tests_10.f03" } module binding_label_tests_10_main use iso_c_binding implicit none diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_11.f03 b/gcc/testsuite/gfortran.dg/binding_label_tests_11.f03 index 8dcf99869fc..c1fc98effb6 100644 --- a/gcc/testsuite/gfortran.dg/binding_label_tests_11.f03 +++ b/gcc/testsuite/gfortran.dg/binding_label_tests_11.f03 @@ -1,6 +1,4 @@ ! { dg-do compile } -! This file must be compiled BEFORE binding_label_tests_11_main.f03, which it -! should be because dejagnu will sort the files. module binding_label_tests_11 use iso_c_binding, only: c_int implicit none @@ -10,4 +8,3 @@ contains one = 1 end function one end module binding_label_tests_11 -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_11_main.f03 b/gcc/testsuite/gfortran.dg/binding_label_tests_11_main.f03 index 851c32ce7cd..7ee0c8de473 100644 --- a/gcc/testsuite/gfortran.dg/binding_label_tests_11_main.f03 +++ b/gcc/testsuite/gfortran.dg/binding_label_tests_11_main.f03 @@ -1,6 +1,5 @@ ! { dg-do compile } -! This file must be compiled AFTER binding_label_tests_11.f03, which it -! should be because dejagnu will sort the files. +! { dg-compile-aux-modules "binding_label_tests_11.f03" } module binding_label_tests_11_main use iso_c_binding, only: c_int implicit none diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_13.f03 b/gcc/testsuite/gfortran.dg/binding_label_tests_13.f03 index a8e3179bf37..71aac2dbf37 100644 --- a/gcc/testsuite/gfortran.dg/binding_label_tests_13.f03 +++ b/gcc/testsuite/gfortran.dg/binding_label_tests_13.f03 @@ -1,9 +1,6 @@ ! { dg-do compile } -! This file must be compiled BEFORE binding_label_tests_13_main.f03, which it -! should be because dejagnu will sort the files. module binding_label_tests_13 use, intrinsic :: iso_c_binding, only: c_int integer(c_int) :: c3 bind(c) c3 end module binding_label_tests_13 -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_13_main.f03 b/gcc/testsuite/gfortran.dg/binding_label_tests_13_main.f03 index da93a8bbd87..66ff7cf33cf 100644 --- a/gcc/testsuite/gfortran.dg/binding_label_tests_13_main.f03 +++ b/gcc/testsuite/gfortran.dg/binding_label_tests_13_main.f03 @@ -1,7 +1,5 @@ ! { dg-do compile } -! This file must be compiled AFTER binding_label_tests_13.f03, which it -! should be because dejagnu will sort the files. The module file -! binding_label_tests_13.mod can not be removed until after this test is done. +! { dg-compile-aux-modules "binding_label_tests_13.f03" } module binding_label_tests_13_main use, intrinsic :: iso_c_binding, only: c_int integer(c_int) :: c3 ! { dg-error "Variable c3 from module binding_label_tests_13_main with binding label c3 at .1. uses the same global identifier as entity at .2. from module binding_label_tests_13" } diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90 b/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90 index 32cf07ae7c4..d3f3039a713 100644 --- a/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90 +++ b/gcc/testsuite/gfortran.dg/binding_label_tests_26a.f90 @@ -4,8 +4,6 @@ ! ! Contributed by Andrew Bensons ! -! This file must be compiled BEFORE binding_label_tests_26b.f90, which it -! should be because dejagnu will sort the files. module fg contains @@ -16,5 +14,3 @@ contains end interface end function end module - -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90 b/gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90 index ad8426bc2c6..ca399757dc8 100644 --- a/gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90 +++ b/gcc/testsuite/gfortran.dg/binding_label_tests_26b.f90 @@ -1,11 +1,9 @@ ! { dg-do compile } +! { dg-compile-aux-modules "binding_label_tests_26a.f90" } ! ! PR 58182: [4.9 Regression] ICE with global binding name used as a FUNCTION ! ! Contributed by Andrew Bensons -! -! This file must be compiled AFTER binding_label_tests_26a.f90, which it -! should be because dejagnu will sort the files. module f ! { dg-error "uses the same global identifier" } use fg ! { dg-error "uses the same global identifier" } diff --git a/gcc/testsuite/gfortran.dg/class_45a.f03 b/gcc/testsuite/gfortran.dg/class_45a.f03 index c3c9ac20e80..91f11c4ecce 100644 --- a/gcc/testsuite/gfortran.dg/class_45a.f03 +++ b/gcc/testsuite/gfortran.dg/class_45a.f03 @@ -26,4 +26,3 @@ contains end function basicGet end module G_Nodes -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/class_45b.f03 b/gcc/testsuite/gfortran.dg/class_45b.f03 index 5c047e2c598..90ef467530c 100644 --- a/gcc/testsuite/gfortran.dg/class_45b.f03 +++ b/gcc/testsuite/gfortran.dg/class_45b.f03 @@ -1,5 +1,5 @@ ! { dg-do link } -! { dg-additional-sources class_45a.f03 } +! { dg-compile-aux-modules "class_45a.f03" } ! ! PR 50227: [4.7 Regression] [OOP] ICE-on-valid with allocatable class variable ! @@ -10,3 +10,4 @@ program Test class(t0), allocatable :: c allocate(t1 :: c) end program Test +! { dg-final { cleanup-modules "G_Nodes" } } diff --git a/gcc/testsuite/gfortran.dg/class_4a.f03 b/gcc/testsuite/gfortran.dg/class_4a.f03 index 9441cc79ca8..015e53cbb1b 100644 --- a/gcc/testsuite/gfortran.dg/class_4a.f03 +++ b/gcc/testsuite/gfortran.dg/class_4a.f03 @@ -1,10 +1,11 @@ -! { dg-do compile } +! { dg-do link } +! { dg-additional-sources "class_4b.f03 class_4c.f03" } ! ! Test the fix for PR41583, in which the different source files ! would generate the same 'vindex' for different class declared ! types. ! -! The test comprises class_4a, class_4b class_4c and class_4d.f03 +! The test comprises class_4a, class_4b and class_4c.f03 ! Contributed by Tobias Burnus ! @@ -12,4 +13,4 @@ module m type t end type t end module m -! { dg-final { keep-modules "m" } } +! { dg-final { cleanup-modules "m m2" } } diff --git a/gcc/testsuite/gfortran.dg/class_4b.f03 b/gcc/testsuite/gfortran.dg/class_4b.f03 index a5d914a523d..dda55b5b0ae 100644 --- a/gcc/testsuite/gfortran.dg/class_4b.f03 +++ b/gcc/testsuite/gfortran.dg/class_4b.f03 @@ -1,10 +1,11 @@ -! { dg-do compile } +! Don't compile this anywhere. +! { dg-do compile { target { lp64 && { ! lp64 } } } } ! ! Test the fix for PR41583, in which the different source files ! would generate the same 'vindex' for different class declared ! types. ! -! The test comprises class_4a, class_4b class_4c and class_4d.f03 +! The test comprises class_4a, class_4b class_4c.f03 ! ! Contributed by Tobias Burnus ! @@ -13,4 +14,3 @@ module m2 type, extends(t) :: t2 end type t2 end module m2 -! { dg-final { keep-modules "m2" } } diff --git a/gcc/testsuite/gfortran.dg/class_4c.f03 b/gcc/testsuite/gfortran.dg/class_4c.f03 index 088acae6b34..e78a30966f5 100644 --- a/gcc/testsuite/gfortran.dg/class_4c.f03 +++ b/gcc/testsuite/gfortran.dg/class_4c.f03 @@ -1,5 +1,5 @@ -! { dg-do link } -! { dg-additional-sources class_4a.f03 class_4b.f03 } +! Don't compile this anywhere. +! { dg-do compile { target { lp64 && { ! lp64 } } } } ! ! Test the fix for PR41583, in which the different source files ! would generate the same 'vindex' for different class declared @@ -27,4 +27,3 @@ end select print *, i end -! { dg-final { cleanup-modules "m m2" } } diff --git a/gcc/testsuite/gfortran.dg/coarray_29_1.f90 b/gcc/testsuite/gfortran.dg/coarray_29_1.f90 index 2c49b1c646d..7d04aa8c511 100644 --- a/gcc/testsuite/gfortran.dg/coarray_29_1.f90 +++ b/gcc/testsuite/gfortran.dg/coarray_29_1.f90 @@ -11,6 +11,3 @@ contains integer scalar[*] end subroutine end module - -! DO NOT CLEAN UP THE MODULE FILE - coarray_29_2.f90 does it. -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/coarray_29_2.f90 b/gcc/testsuite/gfortran.dg/coarray_29_2.f90 index 8c0e81f8638..d653f3f6f6e 100644 --- a/gcc/testsuite/gfortran.dg/coarray_29_2.f90 +++ b/gcc/testsuite/gfortran.dg/coarray_29_2.f90 @@ -1,8 +1,6 @@ ! { dg-do compile } ! { dg-options "-fcoarray=single" } - -! Requires that coarray_29.f90 has been compiled before -! and that, thus, co_sum_module is available +! { dg-compile-aux-modules "coarray_29_1.f90" } ! PR fortran/55272 ! diff --git a/gcc/testsuite/gfortran.dg/dg.exp b/gcc/testsuite/gfortran.dg/dg.exp index eb985cbd6e2..e8c39231db0 100644 --- a/gcc/testsuite/gfortran.dg/dg.exp +++ b/gcc/testsuite/gfortran.dg/dg.exp @@ -28,6 +28,21 @@ if ![info exists DEFAULT_FFLAGS] then { # Initialize `dg'. dg-init +global gfortran_test_path +global gfortran_aux_module_flags +set gfortran_test_path $srcdir/$subdir +set gfortran_aux_module_flags $DEFAULT_FFLAGS +proc dg-compile-aux-modules { args } { + global gfortran_test_path + global gfortran_aux_module_flags + if { [llength $args] != 2 } { + error "dg-set-target-env-var: needs one argument" + return + } + dg-test $gfortran_test_path/[lindex $args 1] "" $gfortran_aux_module_flags + # cleanup-modules isn't intentionally invoked here. +} + # Main loop. gfortran-dg-runtest [lsort \ [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03,08} ] ] "" $DEFAULT_FFLAGS diff --git a/gcc/testsuite/gfortran.dg/test_common_binding_labels_2.f03 b/gcc/testsuite/gfortran.dg/test_common_binding_labels_2.f03 index ad654b35db4..8c319028a6d 100644 --- a/gcc/testsuite/gfortran.dg/test_common_binding_labels_2.f03 +++ b/gcc/testsuite/gfortran.dg/test_common_binding_labels_2.f03 @@ -12,4 +12,3 @@ module test_common_binding_labels_2 integer(c_int) :: i bind(c, name="") /com2/ end module test_common_binding_labels_2 -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/test_common_binding_labels_2_main.f03 b/gcc/testsuite/gfortran.dg/test_common_binding_labels_2_main.f03 index fb7778effa0..cd1664137ba 100644 --- a/gcc/testsuite/gfortran.dg/test_common_binding_labels_2_main.f03 +++ b/gcc/testsuite/gfortran.dg/test_common_binding_labels_2_main.f03 @@ -1,9 +1,7 @@ ! { dg-do compile } ! { dg-options "-std=f2003" } +! { dg-compile-aux-modules "test_common_binding_labels_2.f03" } ! -! -! This file depends on the module test_common_binding_labels_2. That module -! must be compiled first and not be removed until after this test. module test_common_binding_labels_2_main use, intrinsic :: iso_c_binding, only: c_double, c_int implicit none diff --git a/gcc/testsuite/gfortran.dg/test_common_binding_labels_3.f03 b/gcc/testsuite/gfortran.dg/test_common_binding_labels_3.f03 index d851b5e7277..87d6c6b78f9 100644 --- a/gcc/testsuite/gfortran.dg/test_common_binding_labels_3.f03 +++ b/gcc/testsuite/gfortran.dg/test_common_binding_labels_3.f03 @@ -8,4 +8,3 @@ module test_common_binding_labels_3 real(c_double) :: s bind(c, name="my_common_block") :: /mycom/ end module test_common_binding_labels_3 -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/test_common_binding_labels_3_main.f03 b/gcc/testsuite/gfortran.dg/test_common_binding_labels_3_main.f03 index 3ccab0c89fe..9ad55156e83 100644 --- a/gcc/testsuite/gfortran.dg/test_common_binding_labels_3_main.f03 +++ b/gcc/testsuite/gfortran.dg/test_common_binding_labels_3_main.f03 @@ -1,6 +1,5 @@ ! { dg-do compile } -! This file depends on the module test_common_binding_labels_3. That module -! must be compiled first and not be removed until after this test. +! { dg-compile-aux-modules "test_common_binding_labels_3.f03" } module test_common_binding_labels_3_main use, intrinsic :: iso_c_binding, only: c_int integer(c_int), bind(c, name="my_common_block") :: my_int ! { dg-error "COMMON block at .1. with binding label my_common_block uses the same global identifier as entity at .2." } diff --git a/gcc/testsuite/gfortran.dg/whole_file_28.f90 b/gcc/testsuite/gfortran.dg/whole_file_28.f90 index ec9efb2d4dc..681b123f4ee 100644 --- a/gcc/testsuite/gfortran.dg/whole_file_28.f90 +++ b/gcc/testsuite/gfortran.dg/whole_file_28.f90 @@ -1,6 +1,5 @@ ! { dg-do compile } ! Test the fix for the problem described in PR45077 comments #4 and #5. -! Note that the module file is kept for whole_file_29.f90 ! ! Contributed by Tobias Burnus ! @@ -9,5 +8,3 @@ module iso_red character(LEN=1), dimension(:), allocatable :: chars end type varying_string end module iso_red -! DO NOT CLEAN UP THE MODULE FILE - whole_file_29.f90 does it. -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/whole_file_29.f90 b/gcc/testsuite/gfortran.dg/whole_file_29.f90 index 703754c649d..86d84cf8d27 100644 --- a/gcc/testsuite/gfortran.dg/whole_file_29.f90 +++ b/gcc/testsuite/gfortran.dg/whole_file_29.f90 @@ -1,7 +1,6 @@ ! { dg-do compile } +! { dg-compile-aux-modules "whole_file_28.f90" } ! Test the fix for the problem described in PR45077 comments #4 and #5. -! Note that the module file from whole_file_28.f90, 'iso_red', is -! needed for this test. ! ! Contributed by Tobias Burnus ! diff --git a/gcc/testsuite/gfortran.dg/whole_file_30.f90 b/gcc/testsuite/gfortran.dg/whole_file_30.f90 index d8e401eeb20..551f2e801a8 100644 --- a/gcc/testsuite/gfortran.dg/whole_file_30.f90 +++ b/gcc/testsuite/gfortran.dg/whole_file_30.f90 @@ -1,6 +1,5 @@ ! { dg-do compile } ! Test the fix for the problem described in PR46818. -! Note that the module file is kept for whole_file_31.f90 ! ! Contributed by Martien Hulsen ! and reduced by Tobias Burnus @@ -12,5 +11,3 @@ module system_defs_m real, allocatable, dimension(:) :: u end type sysvector_t end module system_defs_m -! DO NOT CLEAN UP THE MODULE FILE - whole_file_31.f90 does it. -! { dg-final { keep-modules "" } } diff --git a/gcc/testsuite/gfortran.dg/whole_file_31.f90 b/gcc/testsuite/gfortran.dg/whole_file_31.f90 index eb77055b91f..1ed661dd8e3 100644 --- a/gcc/testsuite/gfortran.dg/whole_file_31.f90 +++ b/gcc/testsuite/gfortran.dg/whole_file_31.f90 @@ -1,7 +1,6 @@ ! { dg-do compile } +! { dg-compile-aux-modules "whole_file_30.f90" } ! Test the fix for the problem described in PR46818. -! Note that the module file from whole_file_30.f90, 'system_defs_m', -! is needed for this test. ! ! Contributed by Martien Hulsen ! and reduced by Tobias Burnus