diff options
author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-06-12 16:16:39 +0000 |
---|---|---|
committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-06-12 16:16:39 +0000 |
commit | 24f1d2c4dcff1de943e875ebfc584e3dd155fd9c (patch) | |
tree | 98b993f8af06ed0a8880cb201683b0ba8738cfde /gcc/fortran/trans-intrinsic.c | |
parent | 53457e369f5eb795ecb838888a5d1869d508d23c (diff) | |
download | gcc-24f1d2c4dcff1de943e875ebfc584e3dd155fd9c.tar.gz |
2008-06-12 Tobias Burnus <burnus@net-b.de>
PR fortran/36462
* trans-intrinsic.c (gfc_conv_intrinsic_index_scan_verify):
Fix passing of the BACK= argument.
2008-06-12 Tobias Burnus <burnus@net-b.de>
PR fortran/36462
* gfortran.dg/index_2.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136712 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/trans-intrinsic.c')
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index f1223933080..c032675cfcb 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -2751,11 +2751,17 @@ gfc_conv_intrinsic_index_scan_verify (gfc_se * se, gfc_expr * expr, tree *args; unsigned int num_args; - num_args = gfc_intrinsic_argument_list_length (expr); args = alloca (sizeof (tree) * 5); - gfc_conv_intrinsic_function_args (se, expr, args, - num_args >= 5 ? 5 : num_args); + /* Get number of arguments; characters count double due to the + string length argument. Kind= is not passed to the libary + and thus ignored. */ + if (expr->value.function.actual->next->next->expr == NULL) + num_args = 4; + else + num_args = 5; + + gfc_conv_intrinsic_function_args (se, expr, args, num_args); type = gfc_typenode_for_spec (&expr->ts); if (num_args == 4) |