From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 67675 invoked by alias); 19 Sep 2018 14:05:26 -0000 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 Received: (qmail 66697 invoked by uid 89); 19 Sep 2018 14:05:25 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.1 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS,UNWANTED_LANGUAGE_BODY autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 19 Sep 2018 14:05:23 +0000 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 21E4BCAA8D; Wed, 19 Sep 2018 14:05:22 +0000 (UTC) Received: from redhat.com (ovpn-120-207.rdu2.redhat.com [10.10.120.207]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5E8235D985; Wed, 19 Sep 2018 14:05:20 +0000 (UTC) Date: Wed, 19 Sep 2018 14:19:00 -0000 From: Marek Polacek To: Andreas Schwab Cc: Jason Merrill , GCC Patches , Jakub Jelinek Subject: Re: C++ PATCH to implement P1064R0, Virtual Function Calls in Constant Expressions (v4) Message-ID: <20180919140518.GN5587@redhat.com> References: <20180914171950.GE5587@redhat.com> <20180914204521.GJ5587@redhat.com> <20180917213938.GL5587@redhat.com> <20180918152558.GP16755@redhat.com> <20180918185534.GR16755@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-SW-Source: 2018-09/txt/msg01060.txt.bz2 On Wed, Sep 19, 2018 at 03:25:02PM +0200, Andreas Schwab wrote: > I'm getting this ICE on ia64: >=20 > libtool: compile: /usr/local/gcc/gcc-20180919/Build/./gcc/xgcc -shared-l= ibgcc -B/usr/local/gcc/gcc-20180919/Build/./gcc -nostdinc++ -L/usr/local/gc= c/gcc-20180919/Build/ia64-suse-linux/libstdc++-v3/src -L/usr/local/gcc/gcc-= 20180919/Build/ia64-suse-linux/libstdc++-v3/src/.libs -L/usr/local/gcc/gcc-= 20180919/Build/ia64-suse-linux/libstdc++-v3/libsupc++/.libs -B/usr/ia64-sus= e-linux/bin/ -B/usr/ia64-suse-linux/lib/ -isystem /usr/ia64-suse-linux/incl= ude -isystem /usr/ia64-suse-linux/sys-include -fno-checking -I/usr/local/gc= c/gcc-20180919/libstdc++-v3/../libgcc -I/usr/local/gcc/gcc-20180919/Build/i= a64-suse-linux/libstdc++-v3/include/ia64-suse-linux -I/usr/local/gcc/gcc-20= 180919/Build/ia64-suse-linux/libstdc++-v3/include -I/usr/local/gcc/gcc-2018= 0919/libstdc++-v3/libsupc++ -D_GLIBCXX_SHARED -fno-implicit-templates -Wall= -Wextra -Wwrite-strings -Wcast-qual -Wabi=3D2 -fdiagnostics-show-location= =3Donce -ffunction-sections -fdata-sections -frandom-seed=3Dbad_typeid.lo -= O2 -g -D_GNU_SOURCE -c ../../../../libstdc++-v3/libsupc++/bad_typeid.cc -f= PIC -DPIC -D_GLIBCXX_SHARED -o bad_typeid.o > ../../../../libstdc++-v3/libsupc++/bad_typeid.cc:36:1: internal compiler = error: in output_constructor_regular_field, at varasm.c:5165 > 36 | } // namespace std > | ^ > 0x400000000176abaf output_constructor_regular_field > ../../gcc/varasm.c:5165 > 0x400000000176d09f output_constructor > ../../gcc/varasm.c:5475 > 0x400000000176940f output_constant > ../../gcc/varasm.c:4967 > 0x400000000175414f assemble_variable_contents > ../../gcc/varasm.c:2143 > 0x400000000175586f assemble_variable(tree_node*, int, int, int) > ../../gcc/varasm.c:2319 > 0x40000000017a564f varpool_node::assemble_decl() > ../../gcc/varpool.c:586 > 0x40000000017a74cf symbol_table::output_variables() > ../../gcc/varpool.c:752 > 0x40000000007b806f symbol_table::compile() > ../../gcc/cgraphunit.c:2611 > 0x40000000007bd8ef symbol_table::compile() > ../../gcc/cgraphunit.c:2791 > 0x40000000007bd8ef symbol_table::finalize_compilation_unit() > ../../gcc/cgraphunit.c:2788 >=20 > (gdb) up > #1 0x400000000176abb0 in output_constructor_regular_field ( > local=3D0x600ffffffffee920) at ../../gcc/varasm.c:5165 > 5165 gcc_assert (fieldpos =3D=3D local->total_bytes); > (gdb) p fieldpos > $1 =3D 16 > (gdb) p local->total_bytes > $2 =3D 24 That muset be because ia64 uses TARGET_VTABLE_USES_DESCRIPTORS. Does this help? 2018-09-19 Marek Polacek * class.c (build_vtbl_initializer): Don't mess with *inits for TARGET_VTABLE_USES_DESCRIPTORS. diff --git gcc/cp/class.c gcc/cp/class.c index 9ca46441871..0239f6ae045 100644 --- gcc/cp/class.c +++ gcc/cp/class.c @@ -9370,7 +9370,7 @@ build_vtbl_initializer (tree binfo, int i; if (init =3D=3D size_zero_node) for (i =3D 0; i < TARGET_VTABLE_USES_DESCRIPTORS; ++i) - CONSTRUCTOR_APPEND_ELT (*inits, idx, init); + CONSTRUCTOR_APPEND_ELT (*inits, NULL_TREE, init); else for (i =3D 0; i < TARGET_VTABLE_USES_DESCRIPTORS; ++i) { @@ -9378,7 +9378,7 @@ build_vtbl_initializer (tree binfo, fn, build_int_cst (NULL_TREE, i)); TREE_CONSTANT (fdesc) =3D 1; =20 - CONSTRUCTOR_APPEND_ELT (*inits, idx, fdesc); + CONSTRUCTOR_APPEND_ELT (*inits, NULL_TREE, fdesc); } } else