From patchwork Fri Dec 7 09:13:11 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: C++ PATCH for c++/54325 (wrong error initializing abstract base class) From: Matthias Klose X-Patchwork-Id: 204436 Message-Id: <50C1B327.9060006@ubuntu.com> To: Jason Merrill Cc: gcc-patches List Date: Fri, 07 Dec 2012 10:13:11 +0100 Am 07.12.2012 06:05, schrieb Jason Merrill: > It's perfectly OK to initialize a base class of abstract type; it's only an > error to create a full object of such a type. So this patch moves the check > from more generic initialization code out into a function that's definitely > creating a new object. > > Tested x86_64-pc-linux-gnu, applying to trunk and 4.7. this doesn't build on the branch: ../gcc/cp/tree.c: In function 'build_aggr_init_expr': ../gcc/cp/tree.c:399:1: error: parameter name omitted this fixes the bootstrap, currently running the testsuite. --- cp/tree.c~ 2012-12-07 10:01:16.665415647 +0100 +++ cp/tree.c 2012-12-07 10:11:01.373410862 +0100 @@ -396,7 +396,8 @@ callable. */ tree -build_aggr_init_expr (tree type, tree init, tsubst_flags_t /*complain*/) +build_aggr_init_expr (tree type, tree init, + tsubst_flags_t complain ATTRIBUTE_UNUSED) { tree fn; tree slot;