re PR fortran/71795 (Two Bugs in array constructors (optimization))
2016-07-22 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/71795 * frontend-passes.c (combine_array_constructor): Don't do anything if the expression is inside an array iterator. 2016-07-22 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/71795 * gfortran.dg/constructor_50.f90: New test. From-SVN: r238638
This commit is contained in:
parent
bc91c43615
commit
1603ebe016
@ -1,3 +1,9 @@
|
||||
2016-07-22 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/71795
|
||||
* frontend-passes.c (combine_array_constructor): Don't
|
||||
do anything if the expression is inside an array iterator.
|
||||
|
||||
2016-07-22 Andre Vehreschild <vehre@gcc.gnu.org>
|
||||
|
||||
* expr.c (gfc_find_stat_co): Fixed whitespaces.
|
||||
|
@ -1255,6 +1255,11 @@ combine_array_constructor (gfc_expr *e)
|
||||
if (forall_level > 0)
|
||||
return false;
|
||||
|
||||
/* Inside an iterator, things can get hairy; we are likely to create
|
||||
an invalid temporary variable. */
|
||||
if (iterator_level > 0)
|
||||
return false;
|
||||
|
||||
op1 = e->value.op.op1;
|
||||
op2 = e->value.op.op2;
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2016-07-22 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/71795
|
||||
* gfortran.dg/constructor_50.f90: New test.
|
||||
|
||||
2016-07-22 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR gcov-profile/69028
|
||||
|
21
gcc/testsuite/gfortran.dg/array_constructor_50.f90
Normal file
21
gcc/testsuite/gfortran.dg/array_constructor_50.f90
Normal file
@ -0,0 +1,21 @@
|
||||
! { dg-do run }
|
||||
! PR 71795 - wrong result when putting an array constructor
|
||||
! instide an iterator.
|
||||
program test
|
||||
|
||||
implicit none
|
||||
integer :: i,n
|
||||
logical, dimension(1) :: ra
|
||||
logical :: rs
|
||||
integer, allocatable :: a(:)
|
||||
|
||||
allocate ( a(1) )
|
||||
|
||||
n = 1
|
||||
a = 2
|
||||
|
||||
ra = (/ (any(a(i).eq.(/1,2,3/)) ,i=1,n) /)
|
||||
if (.not. all(ra)) call abort
|
||||
rs = any ( (/ (any(a(i).eq.(/1,2,3/)) ,i=1,n) /) )
|
||||
if (.not. rs) call abort
|
||||
end program test
|
Loading…
Reference in New Issue
Block a user