re PR fortran/88669 (Contiguous attribute wrongly rejected)
2019-01-31 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/88669 * resolve.c (resolve_component): If the reference is a BT_CLASS, copy the contiguous attribute from the reference and use the correct attributes. 2019-01-31 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/88669 * gfortran.dg/contiguous_9.f90: New test. From-SVN: r268432
This commit is contained in:
parent
ba2c1ca8c3
commit
1bd83e0b0b
|
@ -1,3 +1,10 @@
|
||||||
|
2019-01-31 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/88669
|
||||||
|
* resolve.c (resolve_component): If the reference is a BT_CLASS,
|
||||||
|
copy the contiguous attribute from the reference and use the
|
||||||
|
correct attributes.
|
||||||
|
|
||||||
2019-01-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
2019-01-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/52564
|
PR fortran/52564
|
||||||
|
|
|
@ -13761,6 +13761,7 @@ static bool
|
||||||
resolve_component (gfc_component *c, gfc_symbol *sym)
|
resolve_component (gfc_component *c, gfc_symbol *sym)
|
||||||
{
|
{
|
||||||
gfc_symbol *super_type;
|
gfc_symbol *super_type;
|
||||||
|
symbol_attribute *attr;
|
||||||
|
|
||||||
if (c->attr.artificial)
|
if (c->attr.artificial)
|
||||||
return true;
|
return true;
|
||||||
|
@ -13803,7 +13804,23 @@ resolve_component (gfc_component *c, gfc_symbol *sym)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* F2008, C448. */
|
/* F2008, C448. */
|
||||||
if (c->attr.contiguous && (!c->attr.dimension || !c->attr.pointer))
|
if (c->ts.type == BT_CLASS)
|
||||||
|
{
|
||||||
|
if (CLASS_DATA (c))
|
||||||
|
{
|
||||||
|
attr = &(CLASS_DATA (c)->attr);
|
||||||
|
|
||||||
|
/* Fix up contiguous attribute. */
|
||||||
|
if (c->attr.contiguous)
|
||||||
|
attr->contiguous = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
attr = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
attr = &c->attr;
|
||||||
|
|
||||||
|
if (attr && attr->contiguous && (!attr->dimension || !attr->pointer))
|
||||||
{
|
{
|
||||||
gfc_error ("Component %qs at %L has the CONTIGUOUS attribute but "
|
gfc_error ("Component %qs at %L has the CONTIGUOUS attribute but "
|
||||||
"is not an array pointer", c->name, &c->loc);
|
"is not an array pointer", c->name, &c->loc);
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2019-01-31 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/88669
|
||||||
|
* gfortran.dg/contiguous_9.f90: New test.
|
||||||
|
|
||||||
2019-01-31 Marek Polacek <polacek@redhat.com>
|
2019-01-31 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
PR c++/89083, c++/80864 - ICE with list initialization in template.
|
PR c++/89083, c++/80864 - ICE with list initialization in template.
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
program contiguous_pointer
|
||||||
|
|
||||||
|
type t
|
||||||
|
end type t
|
||||||
|
|
||||||
|
type s
|
||||||
|
class(t), dimension(:), contiguous, pointer :: x ! OK
|
||||||
|
class(t), contiguous, allocatable :: y ! { dg-error "has the CONTIGUOUS attribute but is not an array pointer" }
|
||||||
|
class(t), contiguous, pointer :: z ! { dg-error "has the CONTIGUOUS attribute but is not an array pointer" }
|
||||||
|
end type s
|
||||||
|
|
||||||
|
end program contiguous_pointer
|
Loading…
Reference in New Issue