mirror of git://gcc.gnu.org/git/gcc.git
re PR fortran/54608 (Wrong-code with SCAN and VERIFY)
2012-09-17 Tobias Burnus <burnus@net-b.de>
PR fortran/54608
* simplify.c (gfc_simplify_scan, gfc_simplify_verify):
Fix handling of BACK=variable.
2012-09-17 Tobias Burnus <burnus@net-b.de>
PR fortran/54608
* gfortran.dg/scan_2.f90: New.
From-SVN: r191403
This commit is contained in:
parent
f588eb27dd
commit
61aa9333ba
|
|
@ -1,3 +1,9 @@
|
|||
2012-09-17 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/54608
|
||||
* simplify.c (gfc_simplify_scan, gfc_simplify_verify):
|
||||
Fix handling of BACK=variable.
|
||||
|
||||
2012-09-17 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/54285
|
||||
|
|
|
|||
|
|
@ -5247,7 +5247,8 @@ gfc_simplify_scan (gfc_expr *e, gfc_expr *c, gfc_expr *b, gfc_expr *kind)
|
|||
if (k == -1)
|
||||
return &gfc_bad_expr;
|
||||
|
||||
if (e->expr_type != EXPR_CONSTANT || c->expr_type != EXPR_CONSTANT)
|
||||
if (e->expr_type != EXPR_CONSTANT || c->expr_type != EXPR_CONSTANT
|
||||
|| ( b != NULL && b->expr_type != EXPR_CONSTANT))
|
||||
return NULL;
|
||||
|
||||
if (b != NULL && b->value.logical != 0)
|
||||
|
|
@ -6335,7 +6336,8 @@ gfc_simplify_verify (gfc_expr *s, gfc_expr *set, gfc_expr *b, gfc_expr *kind)
|
|||
if (k == -1)
|
||||
return &gfc_bad_expr;
|
||||
|
||||
if (s->expr_type != EXPR_CONSTANT || set->expr_type != EXPR_CONSTANT)
|
||||
if (s->expr_type != EXPR_CONSTANT || set->expr_type != EXPR_CONSTANT
|
||||
|| ( b != NULL && b->expr_type != EXPR_CONSTANT))
|
||||
return NULL;
|
||||
|
||||
if (b != NULL && b->value.logical != 0)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
2012-09-14 Jason Merrill <jason@redhat.com>
|
||||
2012-09-17 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/54608
|
||||
* gfortran.dg/scan_2.f90: New.
|
||||
|
||||
2012-09-17 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/53661
|
||||
* g++.dg/init/aggr9.C: New.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
! { dg-do compile }
|
||||
! { dg-options "-fdump-tree-original" }
|
||||
!
|
||||
! PR fortran/54608
|
||||
!
|
||||
! Contributed by James Van Buskirk
|
||||
!
|
||||
module m1
|
||||
implicit none
|
||||
contains
|
||||
subroutine s1(A)
|
||||
logical A
|
||||
integer iscan, iverify
|
||||
character(7), parameter :: tf(2) = ['.FALSE.','.TRUE. ']
|
||||
|
||||
iscan = scan('AA','A',back=A)
|
||||
iverify = verify('xx','A',back=A)
|
||||
if (iscan /= 2 .or. iverify /= 2) call abort ()
|
||||
print *, iverify, iscan
|
||||
! write(*,'(a)') 'SCAN test: A = '//trim(tf(iscan)) ! should print true
|
||||
! write(*,'(a)') 'VERIFY test: A = '//trim(tf(iverify)) ! should print true
|
||||
end subroutine s1
|
||||
end module m1
|
||||
|
||||
program p1
|
||||
use m1
|
||||
implicit none
|
||||
logical B
|
||||
|
||||
call s1(.TRUE.)
|
||||
end program p1
|
||||
|
||||
! { dg-final { scan-tree-dump-times "iscan = _gfortran_string_scan \\(2," 1 "original" } }
|
||||
! { dg-final { scan-tree-dump-times "iverify = _gfortran_string_verify \\(2," 1 "original" } }
|
||||
! { dg-final { cleanup-tree-dump "original" } }
|
||||
Loading…
Reference in New Issue