From: Tobias Burnus Date: Sun, 10 Jul 2011 14:28:48 +0000 (+0200) Subject: re PR fortran/49690 (ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1019) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=89560a3c2c5046489930c3532e128fdc2f77e24e;p=gcc.git re PR fortran/49690 (ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1019) 2011-07-10 Tobias Burnus PR fortran/49690 * intrinsic.c (add_functions): Use BT_VOID for 2nd argument of * SIGNAL. 2011-07-10 Tobias Burnus PR fortran/49690 * gfortran.dg/intrinsic_signal.f90: New. From-SVN: r176121 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 484315f9c99..2f0b50889f4 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2011-07-10 Tobias Burnus + + PR fortran/49690 + * intrinsic.c (add_functions): Use BT_VOID for 2nd argument of SIGNAL. + 2011-07-09 Uros Bizjak PR fortran/48926 diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index a72da91defc..5946ddd8be2 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -2594,7 +2594,7 @@ add_functions (void) add_sym_2 ("signal", GFC_ISYM_SIGNAL, CLASS_IMPURE, ACTUAL_NO, BT_INTEGER, di, GFC_STD_GNU, gfc_check_signal, NULL, gfc_resolve_signal, - num, BT_INTEGER, di, REQUIRED, han, BT_UNKNOWN, 0, REQUIRED); + num, BT_INTEGER, di, REQUIRED, han, BT_VOID, 0, REQUIRED); make_generic ("signal", GFC_ISYM_SIGNAL, GFC_STD_GNU); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cfc09f049a2..edeffaa1248 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-07-10 Tobias Burnus + + PR fortran/49690 + * gfortran.dg/intrinsic_signal.f90: New. + 2011-07-09 Jason Merrill * g++.dg/cpp0x/regress/regress6.C: New. diff --git a/gcc/testsuite/gfortran.dg/intrinsic_signal.f90 b/gcc/testsuite/gfortran.dg/intrinsic_signal.f90 new file mode 100644 index 00000000000..cb57c952a29 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/intrinsic_signal.f90 @@ -0,0 +1,21 @@ +! { dg-do compile } +! +! PR fortran/49690 +! +! Reduced test case, based on the one of Debian bug #631204 +! + +subroutine ctrlc_ast + common /xinterrupt/ interrupted + logical interrupted + interrupted = .true. +end subroutine ctrlc_ast + +subroutine set_ctrl_c(ctrlc_ast) + external ctrlc_ast + intrinsic signal + integer old_handle + common /xinterrupt/ interrupted + logical interrupted + old_handler = signal(2, ctrlc_ast) +end subroutine set_ctrl_c