From patchwork Tue Jan 8 11:22:25 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Carlini X-Patchwork-Id: 210343 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 BC55C2C008F for ; Tue, 8 Jan 2013 22:22:53 +1100 (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=1358248974; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Received:Message-ID:Date:From:User-Agent:MIME-Version: To:CC:Subject:Content-Type:Mailing-List:Precedence:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=pbzUErK4yortwu+G4wFaH9wnSgA=; b=uMXPKfOqAneWgRO sVHTDaerw7NH/PEDzUoAVWOLddMrmqGXzjzLcFhueCU4O41Yr2qnGJwYpO4IHI+o SDsaDMtGM/deLEOEV5uX65C/ovyMymNIrJrb8pSZAIJEwHs2+UWFnOEg0vS9ZGs+ fX79r3Iezi31Gd/RX3nllCyNmm6U= 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:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=VPZXzyU1b8ssAvNKns8j+24ZuM9nHClka4Z2ymdnt+xe8fzHZdxbKAbXYys9c6 ws1EEuhHF6WhYnhXoA2+Jhu8kYCipVDsBKuoPYY6CzADSuupaEYd7GRwnrynRkeE jl2cWYWj4BM7IJ1nLEavuwAM/3Qex4RoEy0LfQr51ATJM=; Received: (qmail 17127 invoked by alias); 8 Jan 2013 11:22:36 -0000 Received: (qmail 17111 invoked by uid 22791); 8 Jan 2013 11:22:35 -0000 X-SWARE-Spam-Status: No, hits=-3.5 required=5.0 tests=AWL, BAYES_00, FSL_NEW_HELO_USER, RCVD_IN_HOSTKARMA_NO, RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from userp1040.oracle.com (HELO userp1040.oracle.com) (156.151.31.81) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 08 Jan 2013 11:22:30 +0000 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id r08BMS88010124 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 8 Jan 2013 11:22:28 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r08BMR78005568 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 8 Jan 2013 11:22:27 GMT Received: from abhmt112.oracle.com (abhmt112.oracle.com [141.146.116.64]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id r08BMRJr006150; Tue, 8 Jan 2013 05:22:27 -0600 Received: from [192.168.1.4] (/79.47.195.22) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 08 Jan 2013 03:22:26 -0800 Message-ID: <50EC0171.8080603@oracle.com> Date: Tue, 08 Jan 2013 12:22:25 +0100 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" CC: Jason Merrill Subject: [C++ Patch] PR 55801 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, a simple ICE on invalid: the problem manifests itself when, during error recovery, var_defined_without_dynamic_init does TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (var)) for a VAR_DECL which has error_mark_node as TREE_TYPE. It seems to me that a good place to avoid this is finish_id_expression (a bit earlier), where we already use error_operand_p, by not calling at all get_tls_wrapper_fn on such a decl. Tested x86_64-linux. Thanks, Paolo. ///////////////// /cp 2013-01-08 Paolo Carlini PR c++/55801 * semantics.c (finish_id_expression): Don't call get_tls_wrapper_fn on a decl with error_mark_node as TREE_TYPE. /testsuite 2013-01-08 Paolo Carlini PR c++/55801 * g++.dg/tls/thread_local-ice.C: New. Index: cp/semantics.c =================================================================== --- cp/semantics.c (revision 195008) +++ cp/semantics.c (working copy) @@ -3,7 +3,7 @@ building RTL. These routines are used both during actual parsing and during the instantiation of template functions. - Copyright (C) 1998-2012 Free Software Foundation, Inc. + Copyright (C) 1998-2013 Free Software Foundation, Inc. Written by Mark Mitchell (mmitchell@usa.net) based on code found formerly in parse.y and pt.c. @@ -3290,8 +3290,9 @@ finish_id_expression (tree id_expression, } tree wrap; - if (TREE_CODE (decl) == VAR_DECL - && !cp_unevaluated_operand + if (! error_operand_p (decl) + && TREE_CODE (decl) == VAR_DECL + && ! cp_unevaluated_operand && DECL_THREAD_LOCAL_P (decl) && (wrap = get_tls_wrapper_fn (decl))) { Index: testsuite/g++.dg/tls/thread_local-ice.C =================================================================== --- testsuite/g++.dg/tls/thread_local-ice.C (revision 0) +++ testsuite/g++.dg/tls/thread_local-ice.C (working copy) @@ -0,0 +1,6 @@ +// PR c++/55801 +// { dg-options "-std=c++11" } +// { dg-require-effective-target tls } + +class C; +thread_local C O, O2 = O; // { dg-error "incomplete" }