From: Janus Weil Date: Fri, 12 Apr 2013 21:41:50 +0000 (+0200) Subject: re PR fortran/56266 ([OOP] ICE on invalid in gfc_match_varspec) X-Git-Tag: releases/gcc-4.9.0~6445 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=236e3815280b1c6f0809f956c5f43c005118d6a0;p=thirdparty%2Fgcc.git re PR fortran/56266 ([OOP] ICE on invalid in gfc_match_varspec) 2013-04-12 Janus Weil PR fortran/56266 * primary.c (gfc_match_varspec): Turn gcc_assert into MATCH_ERROR. 2013-04-12 Janus Weil PR fortran/56266 * gfortran.dg/typebound_proc_28.f03: New. From-SVN: r197936 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c2b8a5d70bec..ace16ad1bf28 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-04-12 Janus Weil + + PR fortran/56266 + * primary.c (gfc_match_varspec): Turn gcc_assert into MATCH_ERROR. + 2013-04-12 Tobias Burnus PR fortran/56929 diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index cd8a41755944..1276abb3aa7b 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -1953,10 +1953,12 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, return MATCH_ERROR; gcc_assert (!tail || !tail->next); - gcc_assert (primary->expr_type == EXPR_VARIABLE - || (primary->expr_type == EXPR_STRUCTURE - && primary->symtree && primary->symtree->n.sym - && primary->symtree->n.sym->attr.flavor)); + + if (!(primary->expr_type == EXPR_VARIABLE + || (primary->expr_type == EXPR_STRUCTURE + && primary->symtree && primary->symtree->n.sym + && primary->symtree->n.sym->attr.flavor))) + return MATCH_ERROR; if (tbp->n.tb->is_generic) tbp_sym = NULL; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 90dd664d6b72..c99fee879986 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-04-12 Janus Weil + + PR fortran/56266 + * gfortran.dg/typebound_proc_28.f03: New. + 2013-04-12 Jeff Law * gcc.dg/tree-ssa/vrp87.c: Do not run test on ppc and xtensa diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_28.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_28.f03 new file mode 100644 index 000000000000..74199c343faa --- /dev/null +++ b/gcc/testsuite/gfortran.dg/typebound_proc_28.f03 @@ -0,0 +1,30 @@ +! { dg-do compile } +! +! PR 56266: [OOP] ICE on invalid in gfc_match_varspec +! +! Contributed by Andrew Benson + +module t + + implicit none + + type nc + contains + procedure :: encM => em + end type nc + +contains + + double precision function em(self) + class(nc) :: self + em=0. + end function + + double precision function cem(c) + type(nc) :: c + cem=c(i)%encM() ! { dg-error "Unclassifiable statement" } + end function + +end module + +! { dg-final { cleanup-modules "t" } }