From patchwork Sat Mar 16 18:51:32 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Merrill X-Patchwork-Id: 228238 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 BB7592C00A6 for ; Sun, 17 Mar 2013 05:51:51 +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=1364064712; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=/vhk2wi oXKxIISjqeCjgbPhe6+4=; b=vanwqS/5vrXjfn5TlHQLgR0tHLb72bebeX3gR47 TZsHdp77TKtqV7Tjr6mHd+4+8LGCvmqQ+yPEccY833Owfi8p2e/mHVswmgQit0Ia RlMlCFL7K6pO3wlkbmPK9QYNJdfjT3ZwWVWcH4tzHjL4eIxjPNw7fCSYUI9Yzy9L kRyU= 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:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject:Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=mr4pjrauggzNEl0yFwfFb3WzSUFPiOd2vI2Ge/ia2cD8ro1HjgC0+J1noAmzoc PAdsyzr2zFiL/eFTvr4Dboo3QiiCZBdqej8B+DMUVG3uPB0Ub5EfQW32tGi22hPa ZUe9xheXsoKUrPRjlS6VvQxz/VJ6zdIcpo8SwHvoZBI4Q=; Received: (qmail 21778 invoked by alias); 16 Mar 2013 18:51:42 -0000 Received: (qmail 21766 invoked by uid 22791); 16 Mar 2013 18:51:39 -0000 X-SWARE-Spam-Status: No, hits=-7.6 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, RCVD_IN_DNSWL_HI, RCVD_IN_HOSTKARMA_W, RP_MATCHES_RCVD, SPF_HELO_PASS, TW_CX X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 16 Mar 2013 18:51:34 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r2GIpXhK019884 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sat, 16 Mar 2013 14:51:34 -0400 Received: from [10.3.113.72] (ovpn-113-72.phx2.redhat.com [10.3.113.72]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r2GIpWDH014972 for ; Sat, 16 Mar 2013 14:51:33 -0400 Message-ID: <5144BF34.1000504@redhat.com> Date: Sat, 16 Mar 2013 14:51:32 -0400 From: Jason Merrill User-Agent: Mozilla/5.0 (X11; Linux i686; rv:21.0) Gecko/20100101 Thunderbird/21.0a2 MIME-Version: 1.0 To: gcc-patches List Subject: C++ PATCH for c++/55241 (wrong dumping of sizeof...) 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 The diagnostic code didn't understand sizeof... Tested x86_64-pc-linux-gnu, applying to trunk. commit 824613a2b13236e896abb202c225f2e3628616c8 Author: Jason Merrill Date: Wed Feb 13 17:19:20 2013 -0500 PR c++/55241 * error.c (dump_expr) [SIZEOF_EXPR]: Print sizeof... properly. diff --git a/gcc/cp/error.c b/gcc/cp/error.c index c2bf54d..c3dce1d 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1783,6 +1783,8 @@ resolve_virtual_fun_from_obj_type_ref (tree ref) static void dump_expr (tree t, int flags) { + tree op; + if (t == 0) return; @@ -2316,14 +2318,20 @@ dump_expr (tree t, int flags) gcc_assert (TREE_CODE (t) == ALIGNOF_EXPR); pp_cxx_ws_string (cxx_pp, "__alignof__"); } + op = TREE_OPERAND (t, 0); + if (PACK_EXPANSION_P (op)) + { + pp_string (cxx_pp, "..."); + op = PACK_EXPANSION_PATTERN (op); + } pp_cxx_whitespace (cxx_pp); pp_cxx_left_paren (cxx_pp); if (TREE_CODE (t) == SIZEOF_EXPR && SIZEOF_EXPR_TYPE_P (t)) - dump_type (TREE_TYPE (TREE_OPERAND (t, 0)), flags); + dump_type (TREE_TYPE (op), flags); else if (TYPE_P (TREE_OPERAND (t, 0))) - dump_type (TREE_OPERAND (t, 0), flags); + dump_type (op, flags); else - dump_expr (TREE_OPERAND (t, 0), flags); + dump_expr (op, flags); pp_cxx_right_paren (cxx_pp); break; diff --git a/gcc/testsuite/g++.dg/diagnostic/variadic1.C b/gcc/testsuite/g++.dg/diagnostic/variadic1.C new file mode 100644 index 0000000..69f1f98 --- /dev/null +++ b/gcc/testsuite/g++.dg/diagnostic/variadic1.C @@ -0,0 +1,9 @@ +// PR c++/55241 +// { dg-do compile { target c++11 } } + +template struct B { }; +template struct A +{ + B f(); // { dg-error "sizeof\\.\\.\\." } + B<42> f(); // { dg-error "cannot be overloaded" } +};