OSDN Git Service

fortran/
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Nov 2006 15:35:36 +0000 (15:35 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Nov 2006 15:35:36 +0000 (15:35 +0000)
2006-11-14  Tobias Burnus  <burnus@net-b.de>

PR fortran/29657
* symbol.c (check_conflict): Add further conflicts.

testsuite/
2006-11-14  Tobias Burnus  <burnus@net-b.de>

PR fortran/29657
* gfortran.dg/conflicts.f90: Add.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118812 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/symbol.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/conflicts.f90 [new file with mode: 0644]

index 2ba9e87..e3e1351 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-14  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/29657
+       * symbol.c (check_conflict): Add further conflicts.
+
 2006-11-13  Jakub Jelinek  <jakub@redhat.com>
 
        PR fortran/29759
index fce6db4..6a5598d 100644 (file)
@@ -318,6 +318,8 @@ check_conflict (symbol_attribute * attr, const char * name, locus * where)
        }
     }
 
+  conf (dummy, entry);
+  conf (dummy, intrinsic);
   conf (dummy, save);
   conf (dummy, threadprivate);
   conf (pointer, target);
@@ -427,6 +429,7 @@ check_conflict (symbol_attribute * attr, const char * name, locus * where)
     case FL_BLOCK_DATA:
     case FL_MODULE:
     case FL_LABEL:
+      conf2 (dimension);
       conf2 (dummy);
       conf2 (save);
       conf2 (pointer);
@@ -448,15 +451,16 @@ check_conflict (symbol_attribute * attr, const char * name, locus * where)
 
     case FL_PROCEDURE:
       conf2 (intent);
+      conf2(save);
 
       if (attr->subroutine)
        {
-         conf2(save);
          conf2(pointer);
          conf2(target);
          conf2(allocatable);
          conf2(result);
          conf2(in_namelist);
+         conf2(dimension);
          conf2(function);
          conf2(threadprivate);
        }
index 9693e4d..3a207cb 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-14  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/29657
+       * gfortran.dg/conflicts.f90: Add.
+
 2006-11-14  Paolo Bonzini  <bonzini@gnu.org>
 
        PR rtl-optimization/29798
diff --git a/gcc/testsuite/gfortran.dg/conflicts.f90 b/gcc/testsuite/gfortran.dg/conflicts.f90
new file mode 100644 (file)
index 0000000..b1b59f4
--- /dev/null
@@ -0,0 +1,51 @@
+! { dg-do compile }
+! Check for conflicts
+! PR fortran/29657
+
+function f1() ! { dg-error "has no IMPLICIT type" }
+  implicit none
+  real, save :: f1 ! { dg-error "PROCEDURE attribute conflicts with SAVE attribute" }
+  f1 = 1.0
+end function f1
+
+function f2()
+  implicit none
+  real :: f2
+  save f2 ! { dg-error "PROCEDURE attribute conflicts with SAVE attribute" }
+  f2 = 1.0
+end function f2
+
+subroutine f3()
+  implicit none
+  dimension f3(3) ! { dg-error "PROCEDURE attribute conflicts with DIMENSION attribute" }
+end subroutine f3
+
+subroutine f4(b)
+  implicit none
+  real :: b
+  entry b ! { dg-error "DUMMY attribute conflicts with ENTRY attribute" }
+end subroutine f4
+
+function f5(a)
+  implicit none
+  real :: a,f5
+  entry a ! { dg-error "DUMMY attribute conflicts with ENTRY attribute" }
+  f5 = 3.4
+end function f5
+
+subroutine f6(cos)
+  implicit none
+  real :: cos
+  intrinsic cos ! { dg-error "DUMMY attribute conflicts with INTRINSIC attribute" }
+end subroutine f6
+
+subroutine f7(sin)
+  implicit none
+  real :: sin
+  external sin
+end subroutine f7
+
+program test
+  implicit none
+  dimension test(3) ! { dg-error "PROGRAM attribute conflicts with DIMENSION attribute" }
+end program test