aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/iresolve.c
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-08-29 15:22:55 +0000
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-08-29 15:22:55 +0000
commited8315d5fcd7a86afc791a2643ef329aa599b2f5 (patch)
tree774547a136c573b57623fceaa8560b1cbbe1cd1b /gcc/fortran/iresolve.c
parentc3f07bd6a09f916ff4497db5b7675b5891a5627d (diff)
downloadgcc-ed8315d5fcd7a86afc791a2643ef329aa599b2f5.zip
gcc-ed8315d5fcd7a86afc791a2643ef329aa599b2f5.tar.gz
gcc-ed8315d5fcd7a86afc791a2643ef329aa599b2f5.tar.bz2
re PR libfortran/32989 (GETARG intrinsic)
PR fortran/32989 * iresolve.c (gfc_resolve_getarg): Handle non-default integer kinds. * check.c (gfc_check_getarg): New function * intrinsic.h: Add prototype for gfc_check_getarg. * intrinsic.c (add_subroutines): Add reference to gfc_check_getarg. * intrinsic.texi (GETARG): Adjust documentation. * gfortran.fortran-torture/execute/getarg_1.f90: Add check for non-default integer kind arguments. From-SVN: r127905
Diffstat (limited to 'gcc/fortran/iresolve.c')
-rw-r--r--gcc/fortran/iresolve.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index 7948b14..73f5d73 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -2675,9 +2675,18 @@ void
gfc_resolve_getarg (gfc_code *c)
{
const char *name;
- int kind;
- kind = gfc_default_integer_kind;
- name = gfc_get_string (PREFIX ("getarg_i%d"), kind);
+
+ if (c->ext.actual->expr->ts.kind != gfc_default_integer_kind)
+ {
+ gfc_typespec ts;
+
+ ts.type = BT_INTEGER;
+ ts.kind = gfc_default_integer_kind;
+
+ gfc_convert_type (c->ext.actual->expr, &ts, 2);
+ }
+
+ name = gfc_get_string (PREFIX ("getarg_i%d"), gfc_default_integer_kind);
c->resolved_sym = gfc_get_intrinsic_sub_symbol (name);
}