From patchwork Tue Oct 5 10:11:13 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikael Morin X-Patchwork-Id: 66799 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]) by ozlabs.org (Postfix) with SMTP id 3F114B70CC for ; Tue, 5 Oct 2010 21:14:59 +1100 (EST) Received: (qmail 28795 invoked by alias); 5 Oct 2010 10:13:07 -0000 Received: (qmail 28667 invoked by uid 22791); 5 Oct 2010 10:13:05 -0000 X-SWARE-Spam-Status: No, hits=0.2 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_NEUTRAL, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp22.services.sfr.fr (HELO smtp22.services.sfr.fr) (93.17.128.11) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 05 Oct 2010 10:12:32 +0000 Received: from filter.sfr.fr (localhost [127.0.0.1]) by msfrf2208.sfr.fr (SMTP Server) with ESMTP id D7A297000330; Tue, 5 Oct 2010 12:11:13 +0200 (CEST) Received: from gimli.local (99.123.193-77.rev.gaoland.net [77.193.123.99]) by msfrf2208.sfr.fr (SMTP Server) with ESMTP id A84AD7000331; Tue, 5 Oct 2010 12:11:13 +0200 (CEST) X-SFR-UUID: 20101005101113689.A84AD7000331@msfrf2208.sfr.fr MIME-Version: 1.0 From: Mikael Morin To: gfortran , patches Message-ID: <20101005100948.1836.44075@gimli.local> In-Reply-To: <20101005100947.1836.44153@gimli.local> References: <20101005100947.1836.44153@gimli.local> Subject: [Patch, fortran] [18/22] Various minor fixups Date: Tue, 5 Oct 2010 12:11:13 +0200 (CEST) X-IsSubscribed: yes 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 2010-10-04 Mikael Morin * trans-expr.c (get_proc_ptr_comp): Restore initial expression type before calling gfc_free_expr. diff --git a/trans-expr.c b/trans-expr.c index a6837c9..bc9290a 100644 --- a/trans-expr.c +++ b/trans-expr.c @@ -1612,10 +1612,17 @@ get_proc_ptr_comp (gfc_expr *e) { gfc_se comp_se; gfc_expr *e2; + expr_t old_type; + gfc_init_se (&comp_se, NULL); e2 = gfc_copy_expr (e); + /* We have to restore the expr type later so that gfc_free_expr frees + the exact same thing that was allocated. + TODO: This is ugly. */ + old_type = e2->expr_type; e2->expr_type = EXPR_VARIABLE; gfc_conv_expr (&comp_se, e2); + e2->expr_type = old_type; gfc_free_expr (e2); return build_fold_addr_expr_loc (input_location, comp_se.expr); }