From patchwork Tue Apr 17 15:35:33 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Carlini X-Patchwork-Id: 153237 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 D4705B7043 for ; Wed, 18 Apr 2012 01:39:50 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1335281991; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:Message-ID:Date:From:User-Agent:MIME-Version: To:CC:Subject:References:In-Reply-To:Content-Type:Mailing-List: Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:Sender:Delivered-To; bh=fAeWzGxOFB4tequUsti8/qBknHQ=; b=jPSyGwFfHw/iPHif4FqiImHSUDIAIS2J6ixczjbhGb2mv9UX/2XKUsn5sEip+G BAemTuD4Ry5RhwhgI9+GIroVbp3NHGtKlbfIajGQJJFyeRSizT3RaQMjSYrWnIU9 Dwgdv7TrDrQr2abu0uHExOCvHqnxtLTJj+OXZxf7kh3s8= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject:References:In-Reply-To:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=KnDCuzilC7G4a51KryM4jFh/KxnW9ZQcdKCVeyp8a8s9zMXo5td5Bnh+1PL0Cz /ahxB1S7JdC/FPAzhxPRoccV24MpI8dV+4ENHPp7nLzKDkUKZzSP/AQJYjStQkH1 iQdDwQxvDsY2xZ0fzb2lKjd7YRUtDau3pZKk4z0Ci7uCE=; Received: (qmail 19085 invoked by alias); 17 Apr 2012 15:39:42 -0000 Received: (qmail 19005 invoked by uid 22791); 17 Apr 2012 15:39:40 -0000 X-SWARE-Spam-Status: No, hits=-6.9 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, KHOP_THREADED, RCVD_IN_DNSWL_HI, RCVD_IN_HOSTKARMA_NO, RCVD_IN_HOSTKARMA_W, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from rcsinet15.oracle.com (HELO rcsinet15.oracle.com) (148.87.113.117) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 17 Apr 2012 15:39:10 +0000 Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93]) by rcsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q3HFd8kr012946 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 17 Apr 2012 15:39:08 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q3HFd7Wu010238 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 17 Apr 2012 15:39:07 GMT Received: from abhmt103.oracle.com (abhmt103.oracle.com [141.146.116.55]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q3HFd735004346; Tue, 17 Apr 2012 10:39:07 -0500 Received: from [192.168.1.4] (/79.47.195.240) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 17 Apr 2012 08:39:06 -0700 Message-ID: <4F8D8DC5.9060703@oracle.com> Date: Tue, 17 Apr 2012 17:35:33 +0200 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120312 Thunderbird/11.0 MIME-Version: 1.0 To: Jason Merrill CC: "gcc-patches@gcc.gnu.org" Subject: Re: [C++ Patch] PR 52599 References: <4F8D51E4.5040509@oracle.com> <4F8D6D3E.2090902@redhat.com> In-Reply-To: <4F8D6D3E.2090902@redhat.com> 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 Hi, > I think build_constexpr_constructor_member_initializers is a better > place for that check, since it's already looking at the tree structure. Indeed. I'm finishing testing the below. Ok if it passes? Thanks, Paolo. //////////////////////// /cp 2012-04-17 Paolo Carlini PR c++/52599 * semantics.c (build_constexpr_constructor_member_initializers): Check for function-try-block as function-body. /testsuite 2012-04-17 Paolo Carlini PR c++/52599 * g++.dg/cpp0x/constexpr-ctor10.C: New. Index: testsuite/g++.dg/cpp0x/constexpr-ctor10.C =================================================================== --- testsuite/g++.dg/cpp0x/constexpr-ctor10.C (revision 0) +++ testsuite/g++.dg/cpp0x/constexpr-ctor10.C (revision 0) @@ -0,0 +1,6 @@ +// PR c++/52599 +// { dg-options -std=c++11 } + +struct foo { + constexpr foo() try { } catch(...) { }; // { dg-error "constructor" } +}; Index: cp/semantics.c =================================================================== --- cp/semantics.c (revision 186523) +++ cp/semantics.c (working copy) @@ -5921,6 +5921,8 @@ build_constexpr_constructor_member_initializers (t break; } } + else if (TREE_CODE (body) == TRY_BLOCK) + error ("body of % constructor cannot be a function-try-block"); else if (EXPR_P (body)) ok = build_data_member_initialization (body, &vec); else