re PR fortran/85001 (ICE in gfc_build_array_type, at fortran/trans-types.c:1420)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Wed, 21 Mar 2018 01:07:43 +0000 (01:07 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Wed, 21 Mar 2018 01:07:43 +0000 (01:07 +0000)
2018-03-20  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/85001
* interface.c (symbol_rank): Remove bogus null pointer check that
crept in when translating a ternary operator into an if-else
constructor.

2018-03-20  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/85001
* gfortran.dg/interface_41.f90: New test.

From-SVN: r258698

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

index 8db0754f4af837be598dcc344bc40a9ef38fa6b5..8bcaabbf6259645a10f26cf73085ba24abc4ee90 100644 (file)
@@ -1,3 +1,10 @@
+2018-03-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/85001
+       * interface.c (symbol_rank): Remove bogus null pointer check that
+       crept in when translating a ternary operator into an if-else 
+       constructor.
+
 2018-03-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/84931
index cb326e55c7550876227c3a53b681ec44c038d640..7f7b2c631cb3adaf0c1709cab98b573d50afddd5 100644 (file)
@@ -1268,7 +1268,7 @@ symbol_rank (gfc_symbol *sym)
 {
   gfc_array_spec *as = NULL;
 
-  if (sym->ts.type == BT_CLASS && CLASS_DATA (sym) && CLASS_DATA (sym)->as)
+  if (sym->ts.type == BT_CLASS && CLASS_DATA (sym))
     as = CLASS_DATA (sym)->as;
   else
     as = sym->as;
index 79cc52cb3e71f1af94a87a535cb8a7f070e93cc6..c4c0815dea6fd11ece6f0356f0202699460123ba 100644 (file)
@@ -1,3 +1,8 @@
+2018-03-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/85001
+       * gfortran.dg/interface_41.f90: New test.
+
 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/84875
diff --git a/gcc/testsuite/gfortran.dg/interface_41.f90 b/gcc/testsuite/gfortran.dg/interface_41.f90
new file mode 100644 (file)
index 0000000..b5ea8af
--- /dev/null
@@ -0,0 +1,19 @@
+! { dg-do compile }
+! PR fortran/85001 
+! Contributed by Gerhard Steinmetz.
+program p
+   type t
+   end type
+   call s
+contains
+   real function f(x)
+      class(t) :: x
+      dimension :: x(:)
+      f = 1.0
+   end
+   subroutine s
+      type(t) :: x(2)
+      real :: z
+      z = f(x)     ! { dg-error "Rank mismatch in argument" }
+   end
+end