From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9745 invoked by alias); 18 Jan 2009 19:16:24 -0000 Received: (qmail 9482 invoked by uid 48); 18 Jan 2009 19:16:15 -0000 Date: Sun, 18 Jan 2009 19:16:00 -0000 Message-ID: <20090118191615.9481.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug fortran/38883] [4.4 Regression] ICE for MVBITS with derived type argument that has run-time subscripts In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "burnus at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-01/txt/msg02025.txt.bz2 ------- Comment #4 from burnus at gcc dot gnu dot org 2009-01-18 19:16 ------- Some more data: Using printf("Node: tmp = %s\n", tree_code_name[TREE_CODE (tmp)]); printf("Node: desc = %s\n", tree_code_name[TREE_CODE (gfc_get_element_type (TREE_TYPE (desc)))]); gcc_assert (tmp == gfc_get_element_type (TREE_TYPE (desc))); one sees: Node: tmp = record_type Node: desc = integer_type desc gets its type via "gfc_get_array_type_bounds()" in gfc_trans_create_temp_array. And then gfc_get_element_type (TREE_TYPE (desc)) And "tmp" via the following: if (fsym->attr.intent == INTENT_INOUT) initial = parmse.expr; else initial = NULL_TREE; in gfc_conv_elemental_dependencies which then in gfc_trans_allocate_array_storage gets accessed as: tmp = TREE_TYPE (initial); /* Pointer to descriptor. */ gcc_assert (TREE_CODE (tmp) == POINTER_TYPE); tmp = TREE_TYPE (tmp); /* The descriptor itself. */ tmp = gfc_get_element_type (tmp); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38883