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:
parent
03b3e2712c
commit
f5dce7973f
gcc
@ -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.
|
||||
|
55
gcc/testsuite/gfortran.dg/index_2.f90
Normal file
55
gcc/testsuite/gfortran.dg/index_2.f90
Normal file
@ -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" } }
|
Loading…
x
Reference in New Issue
Block a user