aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/check.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2018-03-11 21:34:40 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-03-11 21:34:40 +0000
commitfbe1f017435875f9bfd29d250b4ba2eaf4c79047 (patch)
treeb74e8b8a89bebff4e89246bb82fad265f81c3579 /gcc/fortran/check.c
parent6f76317a471e2960343ff94a60620fec76cdc35c (diff)
downloadgcc-fbe1f017435875f9bfd29d250b4ba2eaf4c79047.zip
gcc-fbe1f017435875f9bfd29d250b4ba2eaf4c79047.tar.gz
gcc-fbe1f017435875f9bfd29d250b4ba2eaf4c79047.tar.bz2
check.c (gfc_check_kill): Check pid and sig are scalar.
2018-03-11 Steven G. Kargl <kargls@gcc.gnu.org> * check.c (gfc_check_kill): Check pid and sig are scalar. (gfc_check_kill_sub): Restrict kind to 4 and 8. * intrinsic.c (add_function): Sort keyword list. Add pid and sig keywords for KILL. Remove redundant *back="back" in favor of the original *bck="back". (add_subroutines): Sort keyword list. Add pid and sig keywords for KILL. * intrinsic.texi: Fix documentation to consistently use pid and sig. * iresolve.c (gfc_resolve_kill): Kind can only be 4 or 8. Choose the correct function. (gfc_resolve_rename_sub): Add comment. From-SVN: r258436
Diffstat (limited to 'gcc/fortran/check.c')
-rw-r--r--gcc/fortran/check.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
index dbb1aa0..1971db0 100644
--- a/gcc/fortran/check.c
+++ b/gcc/fortran/check.c
@@ -2755,9 +2755,15 @@ gfc_check_kill (gfc_expr *pid, gfc_expr *sig)
if (!type_check (pid, 0, BT_INTEGER))
return false;
+ if (!scalar_check (pid, 0))
+ return false;
+
if (!type_check (sig, 1, BT_INTEGER))
return false;
+ if (!scalar_check (sig, 1))
+ return false;
+
return true;
}
@@ -2786,6 +2792,13 @@ gfc_check_kill_sub (gfc_expr *pid, gfc_expr *sig, gfc_expr *status)
if (!scalar_check (status, 2))
return false;
+ if (status->ts.kind != 4 && status->ts.kind != 8)
+ {
+ gfc_error ("Invalid kind type parameter for STATUS at %L",
+ &status->where);
+ return false;
+ }
+
return true;
}