diff options
author | Tobias Burnus <burnus@net-b.de> | 2013-07-27 16:17:01 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2013-07-27 16:17:01 +0200 |
commit | 9f1930bea87d274cefe24a19098e565c519ee464 (patch) | |
tree | 70a2a0a28ab9cf95185f5cc543e57692db3bd294 /gcc | |
parent | c970dc045949589801863bb6bf25cbfea35da3f5 (diff) | |
download | gcc-9f1930bea87d274cefe24a19098e565c519ee464.zip gcc-9f1930bea87d274cefe24a19098e565c519ee464.tar.gz gcc-9f1930bea87d274cefe24a19098e565c519ee464.tar.bz2 |
re PR fortran/57991 (Enhance "Same actual argument associated" warning (-Waliasing))
2013-07-27 Tobias Burnus <burnus@net-b.de>
PR fortran/57991
* interface.c (check_some_aliasing): Also warn for intent
* OUT/OUT.
2013-07-27 Tobias Burnus <burnus@net-b.de>
PR fortran/57991
* gfortran.dg/warn_alias.f90: New.
From-SVN: r201286
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/interface.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/warn_alias.f90 | 33 |
4 files changed, 45 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6b95a0d..559e688 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-07-27 Tobias Burnus <burnus@net-b.de> + + PR fortran/57991 + * interface.c (check_some_aliasing): Also warn for intent OUT/OUT. + 2013-07-27 Janus Weil <janus@gcc.gnu.org> PR fortran/57285 diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 3c794b2..339dd24 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -3078,7 +3078,8 @@ check_some_aliasing (gfc_formal_arglist *f, gfc_actual_arglist *a) break; f2_intent = p[j].f->sym->attr.intent; if ((f1_intent == INTENT_IN && f2_intent == INTENT_OUT) - || (f1_intent == INTENT_OUT && f2_intent == INTENT_IN)) + || (f1_intent == INTENT_OUT && f2_intent == INTENT_IN) + || (f1_intent == INTENT_OUT && f2_intent == INTENT_OUT)) { gfc_warning ("Same actual argument associated with INTENT(%s) " "argument '%s' and INTENT(%s) argument '%s' at %L", diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0940a39..fe05cb8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-07-27 Tobias Burnus <burnus@net-b.de> + + PR fortran/57991 + * gfortran.dg/warn_alias.f90: New. + 2013-07-27 Janus Weil <janus@gcc.gnu.org> PR fortran/57285 diff --git a/gcc/testsuite/gfortran.dg/warn_alias.f90 b/gcc/testsuite/gfortran.dg/warn_alias.f90 new file mode 100644 index 0000000..99b97a6 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/warn_alias.f90 @@ -0,0 +1,33 @@ +! { dg-do compile } +! { dg-options "-Waliasing" } +! +! PR fortran/57991 +! +! Added check for OUT/OUT. IN/OUT and OUT/IN where already check +! since GCC 4.0, but not being tested for. + + Program q + integer :: x + x = 5 + Call test1(x, x) ! { dg-warning "Same actual argument associated with INTENT.OUT. argument 'a' and INTENT.OUT. argument 'b'" } + Call test2(x, x) ! { dg-warning "Same actual argument associated with INTENT.IN. argument 'a' and INTENT.OUT. argument 'b'" } + Call test3(x, x) ! { dg-warning "Same actual argument associated with INTENT.OUT. argument 'a' and INTENT.IN. argument 'b'" } + Contains + Subroutine test1(a,b) + Integer, intent(out) :: a + Integer, intent(out) :: b + b = 5 + a = 5 + End Subroutine + Subroutine test2(a,b) + Integer, intent(in) :: a + Integer, intent(out) :: b + b = 5 + a + End Subroutine + Subroutine test3(a,b) + Integer, intent(out) :: a + Integer, intent(in) :: b + a = 5 + b + End Subroutine + End Program + |