You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.4 KiB
52 lines
1.4 KiB
2017-03-07 Jakub Jelinek <jakub@redhat.com> |
|
|
|
Partial backport |
|
2016-05-07 Fritz Reese <fritzoreese@gmail.com> |
|
|
|
PR fortran/56226 |
|
* interface.c (gfc_compare_derived_types): Don't ICE if the |
|
derived type or both types have no components. |
|
|
|
* gfortran.dg/rh1369183.f90: New test. |
|
|
|
--- gcc/fortran/interface.c.jj 2015-06-18 16:32:45.000000000 +0200 |
|
+++ gcc/fortran/interface.c 2017-03-07 18:35:38.982302826 +0100 |
|
@@ -418,6 +418,13 @@ gfc_compare_derived_types (gfc_symbol *d |
|
&& !(derived1->attr.is_bind_c && derived2->attr.is_bind_c)) |
|
return 0; |
|
|
|
+ /* Protect against null components. */ |
|
+ if (derived1->attr.zero_comp != derived2->attr.zero_comp) |
|
+ return 0; |
|
+ |
|
+ if (derived1->attr.zero_comp) |
|
+ return 1; |
|
+ |
|
dt1 = derived1->components; |
|
dt2 = derived2->components; |
|
|
|
--- gcc/testsuite/gfortran.dg/rh1369183.f90.jj 2017-03-07 18:37:39.574775432 +0100 |
|
+++ gcc/testsuite/gfortran.dg/rh1369183.f90 2017-03-07 18:38:38.423993194 +0100 |
|
@@ -0,0 +1,22 @@ |
|
+! { dg-do compile } |
|
+ |
|
+module mod1369183 |
|
+ implicit none |
|
+ contains |
|
+ subroutine sub(test) |
|
+ type test_t |
|
+ sequence |
|
+ integer(4) type |
|
+ end type test_t |
|
+ type(test_t),intent(inout) :: test |
|
+ end subroutine sub |
|
+end module mod1369183 |
|
+subroutine rh1369183 |
|
+ use mod1369183 |
|
+ implicit none |
|
+ type test_t |
|
+ sequence |
|
+ end type test_t |
|
+ type(test_t) :: tst |
|
+ call sub(tst) ! { dg-error "Type mismatch in argument" } |
|
+end subroutine rh1369183
|
|
|