re PR fortran/14771 (frontend doesn't record parentheses)
authorTobias Schlüter <tobi@gcc.gnu.org>
Fri, 10 Feb 2006 18:08:27 +0000 (19:08 +0100)
committerTobias Schlüter <tobi@gcc.gnu.org>
Fri, 10 Feb 2006 18:08:27 +0000 (19:08 +0100)
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

gcc/fortran/ChangeLog
gcc/fortran/arith.c
gcc/fortran/expr.c
gcc/fortran/module.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/parens_4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/parens_5.f90 [new file with mode: 0644]

index 2d71f428a496a9af1e3e6485f00ba9c6adff3223..115e3c28291e089c4c13aa82a8b29afafcbd70ec 100644 (file)
@@ -1,3 +1,10 @@
+2006-02-10  Tobias Schl\81üter  <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 Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
 
        * dump-parse-tree.c: Update copyright years.
index aac3cb4f390fb434e4091f548b35d4c0831f2de8..a65447a923332d0505ff8dd12de1c0dd4736f4d1 100644 (file)
@@ -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.  */
index c72281c67583e931f542768902d0edf36c9176ba..28a2fc81a9007a780bd1d46eabc4715746e4ea3c 100644 (file)
@@ -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);
index b2505cc4b5731324277748528993e206207936e9..c32fe0bbd035c6958a87af203d6441e4dadefc24 100644 (file)
@@ -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;
 
index d28ecef43fd36dc47eb18db7e0f5872d8460aa50..9862bdb75e9a6aa5826a86a1585adfa51fd40b3a 100644 (file)
@@ -1,3 +1,9 @@
+2006-02-10  Tobias Schlüter  <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 (file)
index 0000000..1678ce7
--- /dev/null
@@ -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 (file)
index 0000000..36bba8a
--- /dev/null
@@ -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