diff options
author | Tobias Schlüter <tobi@gcc.gnu.org> | 2006-02-10 19:08:27 +0100 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2006-02-10 19:08:27 +0100 |
commit | 083cc29303cc3d27b400b8af8125db3f3ceb930f (patch) | |
tree | eb3ad4ad7e033f8eb204117a20e099e37602a9cd /gcc | |
parent | ac1f3b7e6a5a8e2c64de9a6be9135a7423e95bd5 (diff) | |
download | gcc-083cc29303cc3d27b400b8af8125db3f3ceb930f.zip gcc-083cc29303cc3d27b400b8af8125db3f3ceb930f.tar.gz gcc-083cc29303cc3d27b400b8af8125db3f3ceb930f.tar.bz2 |
re PR fortran/14771 (frontend doesn't record parentheses)
fortran/
PR fortran/14771
* arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
* expr.c (check_intrinsic_op): Likewise.
* module.c (mio_expr): Likewise.
testsuite/
PR fortran/14771
* gfortran.dg/parens_4.f90: New.
* gfortran.dg/parens_5.f90: New.
From-SVN: r110840
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/arith.c | 6 | ||||
-rw-r--r-- | gcc/fortran/expr.c | 3 | ||||
-rw-r--r-- | gcc/fortran/module.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/parens_4.f90 | 12 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/parens_5.f90 | 19 |
7 files changed, 54 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2d71f42..115e3c2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2006-02-10 Tobias Schlter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/14771 + * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES. + * expr.c (check_intrinsic_op): Likewise. + * module.c (mio_expr): Likewise. + 2006-02-09 Tobias Schlter <tobias.schlueter@physik.uni-muenchen.de> * dump-parse-tree.c: Update copyright years. diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c index aac3cb4..a65447a 100644 --- a/gcc/fortran/arith.c +++ b/gcc/fortran/arith.c @@ -1507,6 +1507,12 @@ eval_intrinsic (gfc_intrinsic_op operator, unary = 1; break; + case INTRINSIC_PARENTHESES: + temp.ts = op1->ts; + + unary = 1; + break; + case INTRINSIC_GE: case INTRINSIC_LT: /* Additional restrictions */ case INTRINSIC_LE: /* for ordering relations. */ diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index c72281c..28a2fc8 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -1344,6 +1344,9 @@ check_intrinsic_op (gfc_expr * e, try (*check_function) (gfc_expr *)) break; + case INTRINSIC_PARENTHESES: + break; + default: gfc_error ("Only intrinsic operators can be used in expression at %L", &e->where); diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index b2505cc..c32fe0b 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -2514,6 +2514,7 @@ mio_expr (gfc_expr ** ep) case INTRINSIC_UPLUS: case INTRINSIC_UMINUS: case INTRINSIC_NOT: + case INTRINSIC_PARENTHESES: mio_expr (&e->value.op.op1); break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d28ecef..9862bdb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2006-02-10 Tobias Schlter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/14771 + * gfortran.dg/parens_4.f90: New. + * gfortran.dg/parens_5.f90: New. + 2006-02-10 Richard Guenther <rguenther@suse.de> * testsuite/gcc.dg/pr23372-1.c: Remove empty file. diff --git a/gcc/testsuite/gfortran.dg/parens_4.f90 b/gcc/testsuite/gfortran.dg/parens_4.f90 new file mode 100644 index 0000000..1678ce7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/parens_4.f90 @@ -0,0 +1,12 @@ +! { dg-do compile } +! Fallout from the patch for PR 14771 +! Testcase by Erik Zeek +program test + call bob(5) +contains + subroutine bob(n) + integer, intent(in) :: n + character(len=n) :: temp1 + character(len=(n)) :: temp2 ! Fails here + end subroutine bob +end program test diff --git a/gcc/testsuite/gfortran.dg/parens_5.f90 b/gcc/testsuite/gfortran.dg/parens_5.f90 new file mode 100644 index 0000000..36bba8a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/parens_5.f90 @@ -0,0 +1,19 @@ +! { dg-do run } +! Another case of fallout from the original patch for PR14771 +! Testcase by Erik Zeek +module para +contains + function bobo(n) + integer, intent(in) :: n + character(len=(n)) :: bobo ! Used to fail here + bobo = "1234567890" + end function bobo +end module para + +program test + use para + implicit none + character*5 c + c = bobo(5) + if (c .ne. "12345") call abort +end program test |