re PR fortran/50379 (ICE in gfc_typenode_for_spec at fortran/trans-types.c)
authorJanus Weil <janus@gcc.gnu.org>
Tue, 13 Sep 2011 18:37:33 +0000 (20:37 +0200)
committerJanus Weil <janus@gcc.gnu.org>
Tue, 13 Sep 2011 18:37:33 +0000 (20:37 +0200)
2011-09-13  Janus Weil  <janus@gcc.gnu.org>

PR fortran/50379
* symbol.c (check_conflict): Check conflict between GENERIC and RESULT
attributes.

2011-09-13  Janus Weil  <janus@gcc.gnu.org>

PR fortran/50379
* gfortran.dg/result_2.f90: New.

From-SVN: r178829

gcc/fortran/ChangeLog
gcc/fortran/symbol.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/result_2.f90 [new file with mode: 0644]

index 836967d7a4bdc0a15df84858a9d48c3d60463418..6e82538cc31d8bb21775d90b88408a1e581b24ef 100644 (file)
@@ -1,3 +1,9 @@
+2011-09-13  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/50379
+       * symbol.c (check_conflict): Check conflict between GENERIC and RESULT
+       attributes.
+
 2011-09-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/50327
index ce4ab3d1c38f666a2b174f7bd967299b00649b66..b2f0f2b6b7826b387c7278f3338b18a08a9e91be 100644 (file)
@@ -373,7 +373,7 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where)
     *volatile_ = "VOLATILE", *is_protected = "PROTECTED",
     *is_bind_c = "BIND(C)", *procedure = "PROCEDURE",
     *asynchronous = "ASYNCHRONOUS", *codimension = "CODIMENSION",
-    *contiguous = "CONTIGUOUS";
+    *contiguous = "CONTIGUOUS", *generic = "GENERIC";
   static const char *threadprivate = "THREADPRIVATE";
 
   const char *a1, *a2;
@@ -490,8 +490,6 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where)
   conf (in_common, codimension);
   conf (in_common, result);
 
-  conf (dummy, result);
-
   conf (in_equivalence, use_assoc);
   conf (in_equivalence, codimension);
   conf (in_equivalence, dummy);
@@ -503,7 +501,9 @@ check_conflict (symbol_attribute *attr, const char *name, locus *where)
   conf (in_equivalence, allocatable);
   conf (in_equivalence, threadprivate);
 
+  conf (dummy, result);
   conf (entry, result);
+  conf (generic, result);
 
   conf (function, subroutine);
 
index 6fe55977ce41dd85aff8e2e9375e51b8052272cd..67ccf2659a809decccbc19c4c8aee60888433097 100644 (file)
@@ -1,3 +1,8 @@
+2011-09-13  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/50379
+       * gfortran.dg/result_2.f90: New.
+
 2011-09-13  Sevak Sargsyan <sevak.sargsyan@ispras.ru>
 
        * gcc.target/arm/neon-combine-sub-abs-into-vabd.c: New test.
diff --git a/gcc/testsuite/gfortran.dg/result_2.f90 b/gcc/testsuite/gfortran.dg/result_2.f90
new file mode 100644 (file)
index 0000000..eea28e8
--- /dev/null
@@ -0,0 +1,9 @@
+! { dg-do compile }
+!
+! PR 50379: ICE in gfc_typenode_for_spec at fortran/trans-types.c
+!
+! Contributed by Vittorio Zecca <zeccav@gmail.com>
+
+  function f() result(res)
+    interface res          ! { dg-error "attribute conflicts with" }
+  end