re PR fortran/29657 (Don't allow SAVE for functions)

fortran/
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.

From-SVN: r118812
This commit is contained in:
Tobias Burnus 2006-11-14 16:35:36 +01:00 committed by Tobias Burnus
parent 995a569727
commit 9c213349ff
4 changed files with 66 additions and 1 deletions

View 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

View 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);
}

View 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

View File

@ -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