[multiple changes]
2006-12-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/29821 * resolve.c (resolve_operator): Only return result of gfc_simplify_expr if expression is constant. 2006-12-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/29821 * gfortran.dg/parameter_array_section_1.f90: New test. From-SVN: r119504
This commit is contained in:
parent
c58936b6b7
commit
dd5ecf4155
@ -1,3 +1,9 @@
|
||||
2006-12-04 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/29821
|
||||
* resolve.c (resolve_operator): Only return result of
|
||||
gfc_simplify_expr if expression is constant.
|
||||
|
||||
2006-12-04 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/29916
|
||||
|
@ -2191,7 +2191,14 @@ resolve_operator (gfc_expr * e)
|
||||
|
||||
/* Attempt to simplify the expression. */
|
||||
if (t == SUCCESS)
|
||||
t = gfc_simplify_expr (e, 0);
|
||||
{
|
||||
t = gfc_simplify_expr (e, 0);
|
||||
/* Some calls do not succeed in simplification and return FAILURE
|
||||
even though there is no error; eg. variable references to
|
||||
PARAMETER arrays. */
|
||||
if (!gfc_is_constant_expr (e))
|
||||
t = SUCCESS;
|
||||
}
|
||||
return t;
|
||||
|
||||
bad_op:
|
||||
|
@ -1,3 +1,8 @@
|
||||
2006-12-04 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/29821
|
||||
* gfortran.dg/parameter_array_section_1.f90: New test.
|
||||
|
||||
2006-12-04 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR c++/29733
|
||||
|
24
gcc/testsuite/gfortran.dg/parameter_array_section_1.f90
Normal file
24
gcc/testsuite/gfortran.dg/parameter_array_section_1.f90
Normal file
@ -0,0 +1,24 @@
|
||||
! { dg-do compile }
|
||||
! Tests the fix for PR29821, which was due to failure to simplify the
|
||||
! array section, since the section is not constant, provoking failure
|
||||
! to resolve the argument of SUM and therefore to resolve SUM itself.
|
||||
!
|
||||
! Contributed by Harald Anlauf <anlauf@gmx.de>
|
||||
!
|
||||
module gfcbug45
|
||||
implicit none
|
||||
contains
|
||||
subroutine foo
|
||||
real, external :: mysum
|
||||
integer :: i
|
||||
real :: a
|
||||
real, parameter :: eps(2) = (/ 1, 99 /)
|
||||
i = 1
|
||||
a = sum (eps(i:i+1) * eps)
|
||||
print *, a
|
||||
end subroutine foo
|
||||
end module gfcbug45
|
||||
use gfcbug45
|
||||
call foo
|
||||
end
|
||||
! { dg-final { cleanup-modules "gfcbug45" } }
|
Loading…
Reference in New Issue
Block a user