2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-03-29 07:00:24 +08:00

re PR fortran/36462 ([F03] Audit intrinsics for KIND arguments)

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.

From-SVN: r136712
This commit is contained in:
Tobias Burnus 2008-06-12 18:16:39 +02:00 committed by Tobias Burnus
parent 03b3e2712c
commit f5dce7973f
4 changed files with 75 additions and 3 deletions

@ -1,3 +1,9 @@
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-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* cpp.c: Add copyright notice.

@ -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)

@ -1,3 +1,8 @@
2008-06-12 Tobias Burnus <burnus@net-b.de>
PR fortran/36462
* gfortran.dg/index_2.f90: New.
2008-06-12 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/discr9.ad[sb]: New test.

@ -0,0 +1,55 @@
! { dg-do run }
! { dg-options "-fdump-tree-original" }
! PR fortran/36462
!
implicit none
character(len=10,kind=1) string1
character(len=10,kind=4) string4
string1 = 'ABCDEEDCBA'
string4 = 'ABCDEEDCBA'
if(index(string1,1_'A') /= 1) call abort()
if(index(string4,4_'A') /= 1) call abort()
if(index(string1,1_'A',kind=4) /= 1_4) call abort()
if(index(string4,4_'A',kind=4) /= 1_4) call abort()
if(index(string1,1_'A',kind=1) /= 1_1) call abort()
if(index(string4,4_'A',kind=1) /= 1_1) call abort()
if(index(string1,1_'A',back=.true.) /= 10) call abort()
if(index(string4,4_'A',back=.true.) /= 10) call abort()
if(index(string1,1_'A',kind=4,back=.true.) /= 10_4) call abort()
if(index(string4,4_'A',kind=4,back=.true.) /= 10_4) call abort()
if(index(string1,1_'A',kind=1,back=.true.) /= 10_1) call abort()
if(index(string4,4_'A',kind=1,back=.true.) /= 10_1) call abort()
if(index(string1,1_'A',back=.false.) /= 1) call abort()
if(index(string4,4_'A',back=.false.) /= 1) call abort()
if(index(string1,1_'A',kind=4,back=.false.) /= 1_4) call abort()
if(index(string4,4_'A',kind=4,back=.false.) /= 1_4) call abort()
if(index(string1,1_'A',kind=1,back=.false.) /= 1_1) call abort()
if(index(string4,4_'A',kind=1,back=.false.) /= 1_1) call abort()
if(scan(string1,1_'A') /= 1) call abort()
if(scan(string4,4_'A') /= 1) call abort()
if(scan(string1,1_'A',kind=4) /= 1_4) call abort()
if(scan(string4,4_'A',kind=4) /= 1_4) call abort()
if(scan(string1,1_'A',kind=1) /= 1_1) call abort()
if(scan(string4,4_'A',kind=1) /= 1_1) call abort()
if(scan(string1,1_'A',back=.true.) /= 10) call abort()
if(scan(string4,4_'A',back=.true.) /= 10) call abort()
if(scan(string1,1_'A',kind=4,back=.true.) /= 10_4) call abort()
if(scan(string4,4_'A',kind=4,back=.true.) /= 10_4) call abort()
if(scan(string1,1_'A',kind=1,back=.true.) /= 10_1) call abort()
if(scan(string4,4_'A',kind=1,back=.true.) /= 10_1) call abort()
if(scan(string1,1_'A',back=.false.) /= 1) call abort()
if(scan(string4,4_'A',back=.false.) /= 1) call abort()
if(scan(string1,1_'A',kind=4,back=.false.) /= 1_4) call abort()
if(scan(string4,4_'A',kind=4,back=.false.) /= 1_4) call abort()
if(scan(string1,1_'A',kind=1,back=.false.) /= 1_1) call abort()
if(scan(string4,4_'A',kind=1,back=.false.) /= 1_1) call abort()
end
! { dg-final { scan-tree-dump-times "if ..integer.kind=1.. _gfortran_string_index" 6 "original" } }
! { dg-final { scan-tree-dump-times "if ..integer.kind=1.. _gfortran_string_scan" 6 "original" } }