re PR fortran/89646 (Spurious actual argument might interfere warning)
2019-06-14 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/89646 * dependency.c (gfc_check_argument_var_dependency): Suppress spurious warnings by comparing variable names. 2019-06-14 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/89646 * gfortran.dg/pr89646.f90: New test. From-SVN: r272307
This commit is contained in:
parent
957ed73861
commit
3fa31ee92a
|
@ -1,4 +1,10 @@
|
||||||
2019-06-12 Steven G. Kargl <kargl@gcc.gnu.org>
|
2019-06-14 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/89646
|
||||||
|
* dependency.c (gfc_check_argument_var_dependency): Suppress spurious
|
||||||
|
warnings by comparing variable names.
|
||||||
|
|
||||||
|
2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/68544
|
PR fortran/68544
|
||||||
* resolve.c (is_dt_name): New function to compare symbol name against
|
* resolve.c (is_dt_name): New function to compare symbol name against
|
||||||
|
|
|
@ -979,10 +979,14 @@ gfc_check_argument_var_dependency (gfc_expr *var, sym_intent intent,
|
||||||
If a dependency is found in the case
|
If a dependency is found in the case
|
||||||
elemental == ELEM_CHECK_VARIABLE, we will generate
|
elemental == ELEM_CHECK_VARIABLE, we will generate
|
||||||
a temporary, so we don't need to bother the user. */
|
a temporary, so we don't need to bother the user. */
|
||||||
gfc_warning (0, "INTENT(%s) actual argument at %L might "
|
|
||||||
"interfere with actual argument at %L.",
|
if (var->expr_type == EXPR_VARIABLE
|
||||||
intent == INTENT_OUT ? "OUT" : "INOUT",
|
&& expr->expr_type == EXPR_VARIABLE
|
||||||
&var->where, &expr->where);
|
&& strcmp(var->symtree->name, expr->symtree->name) == 0)
|
||||||
|
gfc_warning (0, "INTENT(%s) actual argument at %L might "
|
||||||
|
"interfere with actual argument at %L.",
|
||||||
|
intent == INTENT_OUT ? "OUT" : "INOUT",
|
||||||
|
&var->where, &expr->where);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2019-06-14 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/89646
|
||||||
|
* gfortran.dg/pr89646.f90: New test.
|
||||||
|
|
||||||
2019-06-14 H.J. Lu <hongjiu.lu@intel.com>
|
2019-06-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR rtl-optimization/90765
|
PR rtl-optimization/90765
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
! PR fortran/89646
|
||||||
|
! Original testcase contributed by Ian Harvey <ian_harvey at bigpond dot com>
|
||||||
|
!
|
||||||
|
! This code use to give spurious warnings about aliasing.
|
||||||
|
!
|
||||||
|
module m
|
||||||
|
implicit none
|
||||||
|
type :: t
|
||||||
|
end type t
|
||||||
|
contains
|
||||||
|
! To reproduce, both actual arguments must be TARGET,
|
||||||
|
! both arguments must be of derived type.
|
||||||
|
subroutine s
|
||||||
|
type(t), target :: a(5)
|
||||||
|
type(t), target :: b(5)
|
||||||
|
call move(a, b)
|
||||||
|
end subroutine s
|
||||||
|
! To reproduce, called procedure must be elemental.
|
||||||
|
elemental subroutine move(x, y)
|
||||||
|
type(t), intent(inout) :: x
|
||||||
|
type(t), intent(out) :: y
|
||||||
|
end subroutine move
|
||||||
|
end module m
|
Loading…
Reference in New Issue