diff options
author | Harald Anlauf <anlauf@gmx.de> | 2022-12-08 22:50:45 +0100 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2022-12-08 22:50:45 +0100 |
commit | 3a9f6d5a8ee490adf9a18f93feaf86542642be7d (patch) | |
tree | fc2989bdd56999446e2555acace56733be9f3330 | |
parent | 7410032a772a9e77b620b091c2b551b68113a179 (diff) | |
download | gcc-3a9f6d5a8ee490adf9a18f93feaf86542642be7d.zip gcc-3a9f6d5a8ee490adf9a18f93feaf86542642be7d.tar.gz gcc-3a9f6d5a8ee490adf9a18f93feaf86542642be7d.tar.bz2 |
Fortran: diagnose and reject duplicate CONTIGUOUS attribute [PR108025]
gcc/fortran/ChangeLog:
PR fortran/108025
* symbol.cc (gfc_add_contiguous): Diagnose and reject duplicate
CONTIGUOUS attribute.
gcc/testsuite/ChangeLog:
PR fortran/108025
* gfortran.dg/contiguous_12.f90: New test.
-rw-r--r-- | gcc/fortran/symbol.cc | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/contiguous_12.f90 | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/fortran/symbol.cc b/gcc/fortran/symbol.cc index 49fb378..e704e7a 100644 --- a/gcc/fortran/symbol.cc +++ b/gcc/fortran/symbol.cc @@ -1108,6 +1108,12 @@ gfc_add_contiguous (symbol_attribute *attr, const char *name, locus *where) if (check_used (attr, name, where)) return false; + if (attr->contiguous) + { + duplicate_attr ("CONTIGUOUS", where); + return false; + } + attr->contiguous = 1; return gfc_check_conflict (attr, name, where); } diff --git a/gcc/testsuite/gfortran.dg/contiguous_12.f90 b/gcc/testsuite/gfortran.dg/contiguous_12.f90 new file mode 100644 index 0000000..9c477a7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/contiguous_12.f90 @@ -0,0 +1,7 @@ +! { dg-do compile } +! PR fortran/108025 + +subroutine foo (x) + real, contiguous :: x(:) + contiguous :: x ! { dg-error "Duplicate CONTIGUOUS attribute" } +end |