From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20245 invoked by alias); 20 Mar 2012 20:17:12 -0000 Received: (qmail 20231 invoked by uid 22791); 20 Mar 2012 20:17:10 -0000 X-SWARE-Spam-Status: No, hits=-6.2 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from acsinet15.oracle.com (HELO acsinet15.oracle.com) (141.146.126.227) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 20 Mar 2012 20:16:55 +0000 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by acsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q2KKGrQA030734 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 20 Mar 2012 20:16:54 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q2KKGqco018573 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 20 Mar 2012 20:16:53 GMT Received: from abhmt113.oracle.com (abhmt113.oracle.com [141.146.116.65]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q2KKGqmt016656; Tue, 20 Mar 2012 15:16:52 -0500 Received: from [192.168.1.4] (/79.25.197.176) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 20 Mar 2012 13:16:52 -0700 Message-ID: <4F68E506.3050200@oracle.com> Date: Tue, 20 Mar 2012 20:17:00 -0000 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.2) Gecko/20120215 Thunderbird/10.0.2 MIME-Version: 1.0 To: Jason Merrill CC: "gcc-patches@gcc.gnu.org" Subject: Re: [C++ Patch] PR 52487 References: <4F689E3A.20805@oracle.com> <4F68D900.2000604@redhat.com> In-Reply-To: <4F68D900.2000604@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2012-03/txt/msg01390.txt.bz2 On 03/20/2012 08:22 PM, Jason Merrill wrote: > That assert is there to make sure that we don't try to test for > literality of an incomplete type. We should check for completeness > before trying to check for literality. You mean, in the relevant caller, here in check_field_decls: /* If at least one non-static data member is non-literal, the whole class becomes non-literal. */ if (!literal_type_p (type)) CLASSTYPE_LITERAL_P (t) = false; essentially setting CLASSTYPE_LITERAL_P (t) = false; also when CLASS_TYPE_P (type) && !COMPLETE_TYPE_P (complete_type (type) or maybe just CLASS_TYPE_P (type) && !COMPLETE_TYPE_P (type) ? Thanks, Paolo.