aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDaniel Franke <franke.daniel@gmail.com>2007-03-08 16:45:22 -0500
committerDaniel Franke <dfranke@gcc.gnu.org>2007-03-08 16:45:22 -0500
commit32af37843c42725d625ee9b4e0bb25273c701c9e (patch)
treed640f5fb27f6ae7143572c76657542cfd963af91 /gcc
parentaeabd15d4578ba6e4aaf05a7aa45686d2c28f32e (diff)
downloadgcc-32af37843c42725d625ee9b4e0bb25273c701c9e.zip
gcc-32af37843c42725d625ee9b4e0bb25273c701c9e.tar.gz
gcc-32af37843c42725d625ee9b4e0bb25273c701c9e.tar.bz2
re PR fortran/30947 (intrinsic: ALARM)
2007-03-08 Daniel Franke <franke.daniel@gmail.com> PR fortran/30947 * check.c (gfc_check_alarm_sub): Added check for default integer kind of status argument. * iresolve.c (gfc_resolve_alarm_sub): Removed conversion of status argument. * intrinsic.texi (ALARM): Extended documentation. From-SVN: r122715
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog9
-rw-r--r--gcc/fortran/check.c3
-rw-r--r--gcc/fortran/intrinsic.texi9
-rw-r--r--gcc/fortran/iresolve.c2
4 files changed, 17 insertions, 6 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 6180319..b3c64b7 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,14 @@
2007-03-08 Daniel Franke <franke.daniel@gmail.com>
+ PR fortran/30947
+ * check.c (gfc_check_alarm_sub): Added check for default integer
+ kind of status argument.
+ * iresolve.c (gfc_resolve_alarm_sub): Removed conversion of
+ status argument.
+ * intrinsic.texi (ALARM): Extended documentation.
+
+2007-03-08 Daniel Franke <franke.daniel@gmail.com>
+
* intrinsic.texi (GERROR, ISATTY, TTYNAM): New.
(ABORT, FLUSH, FNUM, IRAND, MALLOC, SIGNAL, SRAND): Fixed typo.
* intrinsic.c (add_subroutines): Adjusted dummy argument names
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
index 27becfcb..3b1a1a0 100644
--- a/gcc/fortran/check.c
+++ b/gcc/fortran/check.c
@@ -2999,6 +2999,9 @@ gfc_check_alarm_sub (gfc_expr *seconds, gfc_expr *handler, gfc_expr *status)
if (type_check (status, 2, BT_INTEGER) == FAILURE)
return FAILURE;
+ if (kind_value_check (status, 2, gfc_default_integer_kind) == FAILURE)
+ return FAILURE;
+
return SUCCESS;
}
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index b1aa677..2375e00 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -785,7 +785,7 @@ end program test_aint
@table @asis
@item @emph{Description}:
@code{ALARM(SECONDS, HANDLER [, STATUS])} causes external subroutine @var{HANDLER}
-to be executed after a delay of @var{SECONDS} by using @code{alarm(1)} to
+to be executed after a delay of @var{SECONDS} by using @code{alarm(2)} to
set up a signal and @code{signal(2)} to catch it. If @var{STATUS} is
supplied, it will be returned with the number of seconds remaining until
any previously scheduled alarm was due to be delivered, or zero if there
@@ -805,10 +805,11 @@ Subroutine
@item @var{SECONDS} @tab The type of the argument shall be a scalar
@code{INTEGER}. It is @code{INTENT(IN)}.
@item @var{HANDLER} @tab Signal handler (@code{INTEGER FUNCTION} or
-@code{SUBROUTINE}) or dummy/global @code{INTEGER} scalar.
-@code{INTEGER}. It is @code{INTENT(IN)}.
+@code{SUBROUTINE}) or dummy/global @code{INTEGER} scalar. The scalar
+values may be either @code{SIG_IGN=1} to ignore the alarm generated
+or @code{SIG_DFL=0} to set the default action. It is @code{INTENT(IN)}.
@item @var{STATUS} @tab (Optional) @var{STATUS} shall be a scalar
-@code{INTEGER} variable. It is @code{INTENT(OUT)}.
+variable of the default @code{INTEGER} kind. It is @code{INTENT(OUT)}.
@end multitable
@item @emph{Example}:
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index 21897dd..12ecd06 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -2386,8 +2386,6 @@ gfc_resolve_alarm_sub (gfc_code *c)
if (seconds->ts.kind != gfc_c_int_kind)
gfc_convert_type (seconds, &ts, 2);
- if (status != NULL && status->ts.kind != gfc_c_int_kind)
- gfc_convert_type (status, &ts, 2);
c->resolved_sym = gfc_get_intrinsic_sub_symbol (name);
}