Commit dcdc83a1 by Tobias Schlüter

re PR fortran/33626 (Parentheses get wrong kind during matching)

PR fortran/33626
fortran/
* resolve.c (resolve_operator): Always copy the type for
expressions in parentheses.
testsuite/
* gfortran.dg/parens_6.f90: New.

From-SVN: r129002
parent 40700892
2007-10-04 Tobias Schlter <tobi@gcc.gnu.org>
PR fortran/33626
* resolve.c (resolve_operator): Always copy the type for
expressions in parentheses.
2007-10-04 Paul Thomas <pault@gcc.gnu.org> 2007-10-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/33542 PR fortran/33542
......
...@@ -2942,6 +2942,9 @@ resolve_operator (gfc_expr *e) ...@@ -2942,6 +2942,9 @@ resolve_operator (gfc_expr *e)
goto bad_op; goto bad_op;
case INTRINSIC_PARENTHESES: case INTRINSIC_PARENTHESES:
e->ts = op1->ts;
if (e->ts.type == BT_CHARACTER)
e->ts.cl = op1->ts.cl;
break; break;
default: default:
...@@ -3026,14 +3029,6 @@ resolve_operator (gfc_expr *e) ...@@ -3026,14 +3029,6 @@ resolve_operator (gfc_expr *e)
break; break;
case INTRINSIC_PARENTHESES: case INTRINSIC_PARENTHESES:
/* This is always correct and sometimes necessary! */
if (e->ts.type == BT_UNKNOWN)
e->ts = op1->ts;
if (e->ts.type == BT_CHARACTER && !e->ts.cl)
e->ts.cl = op1->ts.cl;
case INTRINSIC_NOT: case INTRINSIC_NOT:
case INTRINSIC_UPLUS: case INTRINSIC_UPLUS:
case INTRINSIC_UMINUS: case INTRINSIC_UMINUS:
......
2007-10-04 Tobias Schlter <tobi@gcc.gnu.org>
PR fortran/33626
* gfortran.dg/parens_6.f90: New.
2007-10-04 Paul Thomas <pault@gcc.gnu.org> 2007-10-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/33542 PR fortran/33542
! { dg-do run }
! PR fortran/33626
! Types were not always propagated correctly
logical(kind=1) :: i, j
integer(kind=1) :: a, b
character*1 :: c, d
if (any( (/ kind(i .and. j), kind(.not. (i .and. j)), kind((a + b)), &
kind((42_1)), kind((j .and. i)), kind((.true._1)), &
kind(c // d), kind((c) // d), kind((c//d)) /) /= 1 )) call abort()
if (any( (/ len(c // d), len((c) // d), len ((c // d)) /) /= 2)) call abort()
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment