http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57284
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code CC| |burnus at gcc dot gnu.org, | |janus at gcc dot gnu.org, | |pault at gcc dot gnu.org Summary|ICE with "find_array_spec: |[OOP] ICE with |unused as (1)" in |"find_array_spec for |conjunction with size() |polymorphic arrays |intrinsic on class dummy | |parameter shape | --- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> --- The problem is that the expression is (internally): a->REF_COMPONENT("_data")->REF_ARRAY(full array) In find_array_spec, the code firsts gets the array as: as = CLASS_DATA (e->symtree->n.sym)->as; And then it walks the refs. Result: a->(full array)->_data->(full array) But having two full arrays is invalid! Hence, it fails. (find_array_spec doesn't see that the two arrays refs are identical.)