diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2ba9e874c96e095b39c4ed842faf010828fe48be..e3e1351f41f37d24d1c88d9ef27cac3278c85c2c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -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 diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index fce6db46a87d4936d2e68ae271556a16b5d3ee10..6a5598de5c26d39bde0c7298b179f809c6fdb614 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -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); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9693e4da1aafa1a7ba333508c751bf6ce83349f0..3a207cbc8ddb6093cdc1ab470cb02ec9af65edf6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000000000000000000000000000000000000..b1b59f4ac4c000f582c094fcbe3675e946fad2dd --- /dev/null +++ b/gcc/testsuite/gfortran.dg/conflicts.f90 @@ -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