From patchwork Mon Apr 15 17:36:32 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Mikael Morin X-Patchwork-Id: 236662 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 526FB2C00E6 for ; Tue, 16 Apr 2013 03:37:55 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type; q=dns; s=default; b=C3DJ7x5lAmsPaFQNA Qc/fBqRriO0GWMrdMZiSjwsrZfKEl+GXvNo1B3uFCeYBqBIeqV0wSs75XFWc42oG Sv4K1E54ip9ESagiI6X9MJ7zMiXK3nIb5B04g652xkD1s3qXnEEXaaXPPPZ5KiFi 9hbHvHoHDsxIQOIRuu0qQpS+bI= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type; s=default; bh=+fWOTf4rzUXZVkD/3sBoKYv xagM=; b=AJrIKYXlfim8jXfgvgsZvaKceRSWpGjr7r2eN8a1t6Lhnr1HqZNmHZ1 gIs29tJwZuSVNWg0vTDGuJIoZDwkJ/0eoBe+jmnF96wCxFgW19hKFjbM+Oev59e+ fiWMw58N9bgtwyoom6tk9EAZljQLdO44QkSjdNrmPiopMsmv3zN4= Received: (qmail 30065 invoked by alias); 15 Apr 2013 17:37:48 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 30039 invoked by uid 89); 15 Apr 2013 17:37:48 -0000 X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=AWL, BAYES_00, KHOP_THREADED, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD, TW_TB autolearn=ham version=3.3.1 X-Spam-User: qpsmtpd, 3 recipients Received: from smtp21.services.sfr.fr (HELO smtp21.services.sfr.fr) (93.17.128.4) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Mon, 15 Apr 2013 17:37:47 +0000 Received: from filter.sfr.fr (localhost [127.0.0.1]) by msfrf2114.sfr.fr (SMTP Server) with ESMTP id D7A087000048; Mon, 15 Apr 2013 19:37:44 +0200 (CEST) Received: from [192.168.1.58] (53.183.72.86.rev.sfr.net [86.72.183.53]) by msfrf2114.sfr.fr (SMTP Server) with ESMTP id 8FAFD70000AE; Mon, 15 Apr 2013 19:37:44 +0200 (CEST) X-SFR-UUID: 20130415173744588.8FAFD70000AE@msfrf2114.sfr.fr Message-ID: <516C3AA0.4020302@sfr.fr> Date: Mon, 15 Apr 2013 19:36:32 +0200 From: Mikael Morin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130412 Thunderbird/17.0.5 MIME-Version: 1.0 To: Janus Weil CC: gfortran , gcc-patches Subject: Re: [Patch, Fortran, OOP] PR 56266: ICE on invalid in gfc_match_varspec References: <51695BFC.9010101@sfr.fr> <51697D4A.1060903@sfr.fr> In-Reply-To: <51697D4A.1060903@sfr.fr> X-Virus-Found: No Le 13/04/2013 17:44, Mikael Morin a écrit : > Indeed, that's invalid: > And then, the call to gfc_match_varspec shouldn't be there in the first place. I'll test the following later. Index: primary.c =================================================================== --- primary.c (révision 197949) +++ primary.c (copie de travail) @@ -1954,11 +1954,10 @@ gfc_match_varspec (gfc_expr *primary, int equiv_fl gcc_assert (!tail || !tail->next); - if (!(primary->expr_type == EXPR_VARIABLE - || (primary->expr_type == EXPR_STRUCTURE - && primary->symtree && primary->symtree->n.sym - && primary->symtree->n.sym->attr.flavor))) - return MATCH_ERROR; + gcc_assert (primary->expr_type == EXPR_VARIABLE + || (primary->expr_type == EXPR_STRUCTURE + && primary->symtree && primary->symtree->n.sym + && primary->symtree->n.sym->attr.flavor)); if (tbp->n.tb->is_generic) tbp_sym = NULL; @@ -3102,18 +3101,8 @@ gfc_match_rvalue (gfc_expr **result) gfc_error ("Missing argument list in function '%s' at %C", sym->name); if (m != MATCH_YES) - { - m = MATCH_ERROR; - break; - } + m = MATCH_ERROR; - /* If our new function returns a character, array or structure - type, it might have subsequent references. */ - - m = gfc_match_varspec (e, 0, false, true); - if (m == MATCH_NO) - m = MATCH_YES; - break; generic_function: