diff options
author | Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2007-08-29 15:22:55 +0000 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2007-08-29 15:22:55 +0000 |
commit | ed8315d5fcd7a86afc791a2643ef329aa599b2f5 (patch) | |
tree | 774547a136c573b57623fceaa8560b1cbbe1cd1b /gcc/fortran/iresolve.c | |
parent | c3f07bd6a09f916ff4497db5b7675b5891a5627d (diff) | |
download | gcc-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.c | 15 |
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); } |