Commit 271dd55c by Janus Weil

[multiple changes]

2016-11-09  Mikael Morin  <mikael@gcc.gnu.org>
	    Janus Weil  <janus@gcc.gnu.org>

	PR fortran/46459
	* interface.c (compare_actual_formal): Add safety checks to avoid ICE.

2016-11-09  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/46459
	* gfortran.dg/volatile14.f90: New test.

From-SVN: r242020
parent e922b256
2016-11-09 Mikael Morin <mikael@gcc.gnu.org>
Janus Weil <janus@gcc.gnu.org>
PR fortran/46459
* interface.c (compare_actual_formal): Add safety checks to avoid ICE.
2016-11-09 Fritz O. Reese <fritzoreese@gmail.com> 2016-11-09 Fritz O. Reese <fritzoreese@gmail.com>
PR fortran/78259 PR fortran/78259
* trans-expr.c (gfc_trans_subcomponent_assign): Guard against NULL * trans-expr.c (gfc_trans_subcomponent_assign): Guard against NULL
values. values.
2016-11-09 Steve Kargl <kargl@gcc.gnu.org> 2016-11-09 Steven G. Kargl <kargl@gcc.gnu.org>
Janus Weil <janus@gcc.gnu.org> Janus Weil <janus@gcc.gnu.org>
PR fortran/60777 PR fortran/60777
......
...@@ -3190,6 +3190,7 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, ...@@ -3190,6 +3190,7 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal,
shape array, if the dummy argument has the VOLATILE attribute. */ shape array, if the dummy argument has the VOLATILE attribute. */
if (f->sym->attr.volatile_ if (f->sym->attr.volatile_
&& a->expr->expr_type == EXPR_VARIABLE
&& a->expr->symtree->n.sym->as && a->expr->symtree->n.sym->as
&& a->expr->symtree->n.sym->as->type == AS_ASSUMED_SHAPE && a->expr->symtree->n.sym->as->type == AS_ASSUMED_SHAPE
&& !(f->sym->as && f->sym->as->type == AS_ASSUMED_SHAPE)) && !(f->sym->as && f->sym->as->type == AS_ASSUMED_SHAPE))
...@@ -3219,6 +3220,7 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, ...@@ -3219,6 +3220,7 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal,
dummy argument has the VOLATILE attribute. */ dummy argument has the VOLATILE attribute. */
if (f->sym->attr.volatile_ if (f->sym->attr.volatile_
&& a->expr->expr_type == EXPR_VARIABLE
&& a->expr->symtree->n.sym->attr.pointer && a->expr->symtree->n.sym->attr.pointer
&& a->expr->symtree->n.sym->as && a->expr->symtree->n.sym->as
&& !(f->sym->as && !(f->sym->as
......
2016-11-09 Janus Weil <janus@gcc.gnu.org>
PR fortran/46459
* gfortran.dg/volatile14.f90: New test.
2016-11-09 Uros Bizjak <ubizjak@gmail.com> 2016-11-09 Uros Bizjak <ubizjak@gmail.com>
PR target/78262 PR target/78262
......
! { dg-do compile }
!
! PR 46459: ICE (segfault): Invalid read in compare_actual_formal [error recovery]
!
! Contributed by Harald Anlauf <anlauf@gmx.de>
call sub (1)
contains
subroutine sub (j)
integer, volatile :: j
end subroutine
end
subroutine sub1 ()
call sub2 (1) ! { dg-error "Explicit interface required" }
end subroutine
subroutine sub2 (j)
integer, volatile :: j
end subroutine
subroutine sub3 ()
interface
subroutine sub2 (j)
integer, volatile :: j
end subroutine
end interface
call sub2 (1)
end subroutine
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment