From 9f1930bea87d274cefe24a19098e565c519ee464 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sat, 27 Jul 2013 16:17:01 +0200 Subject: [PATCH] re PR fortran/57991 (Enhance "Same actual argument associated" warning (-Waliasing)) 2013-07-27 Tobias Burnus PR fortran/57991 * interface.c (check_some_aliasing): Also warn for intent * OUT/OUT. 2013-07-27 Tobias Burnus PR fortran/57991 * gfortran.dg/warn_alias.f90: New. From-SVN: r201286 --- gcc/fortran/ChangeLog | 5 ++++ gcc/fortran/interface.c | 3 ++- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gfortran.dg/warn_alias.f90 | 33 ++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/warn_alias.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6b95a0dc22f..559e688206e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-07-27 Tobias Burnus + + PR fortran/57991 + * interface.c (check_some_aliasing): Also warn for intent OUT/OUT. + 2013-07-27 Janus Weil PR fortran/57285 diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 3c794b23c0a..339dd243c12 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 0940a3934ce..fe05cb85690 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-07-27 Tobias Burnus + + PR fortran/57991 + * gfortran.dg/warn_alias.f90: New. + 2013-07-27 Janus Weil 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 00000000000..99b97a61a48 --- /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 +