aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2013-11-07 23:39:15 +0100
committerJanus Weil <janus@gcc.gnu.org>2013-11-07 23:39:15 +0100
commit50c7654b96ef45499bdde32d5a0acd097a911ece (patch)
tree76d7bb558705f141bfc1dff4081f820744d680b4 /gcc
parent9de84e84f26b9bf2009f3ea7acc18059dacc04f9 (diff)
downloadgcc-50c7654b96ef45499bdde32d5a0acd097a911ece.zip
gcc-50c7654b96ef45499bdde32d5a0acd097a911ece.tar.gz
gcc-50c7654b96ef45499bdde32d5a0acd097a911ece.tar.bz2
re PR fortran/58471 (ICE on invalid with missing type constructor and -Wall)
2013-11-07 Janus Weil <janus@gcc.gnu.org> PR fortran/58471 * primary.c (gfc_expr_attr): Check for result symbol. 2013-11-07 Janus Weil <janus@gcc.gnu.org> PR fortran/58471 * gfortran.dg/constructor_9.f90: New. From-SVN: r204547
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/primary.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/constructor_9.f9022
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c709621..8e2e10c 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-07 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/58471
+ * primary.c (gfc_expr_attr): Check for result symbol.
+
2013-11-06 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
* gfortran.texi: Fix typo.
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index 80d45ea..c9a26b0 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -2258,7 +2258,7 @@ gfc_expr_attr (gfc_expr *e)
case EXPR_FUNCTION:
gfc_clear_attr (&attr);
- if (e->value.function.esym != NULL)
+ if (e->value.function.esym && e->value.function.esym->result)
{
gfc_symbol *sym = e->value.function.esym->result;
attr = sym->attr;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0e85081..e83d64e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-07 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/58471
+ * gfortran.dg/constructor_9.f90: New.
+
2013-11-07 Joseph Myers <joseph@codesourcery.com>
* gcc.dg/atomic-compare-exchange-1.c,
diff --git a/gcc/testsuite/gfortran.dg/constructor_9.f90 b/gcc/testsuite/gfortran.dg/constructor_9.f90
new file mode 100644
index 0000000..5196703
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/constructor_9.f90
@@ -0,0 +1,22 @@
+! { dg-do compile }
+! { dg-options "-Wall" }
+!
+! PR 58471: [4.8/4.9 Regression] ICE on invalid with missing type constructor and -Wall
+!
+! Contributed by Andrew Benson <abensonca@gmail.com>
+
+module cf
+ implicit none
+ type :: cfmde
+ end type
+ interface cfmde
+ module procedure mdedc ! { dg-error "is neither function nor subroutine" }
+ end interface
+contains
+ subroutine cfi()
+ type(cfmde), pointer :: cfd
+ cfd=cfmde() ! { dg-error "Can't convert" }
+ end subroutine
+end module
+
+! { dg-final { cleanup-modules "cf" } }