From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 8CACF3856DEA; Fri, 1 Sep 2023 13:31:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8CACF3856DEA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1693575060; bh=w3782zwX1VE+y7jEc8wFjJsA63FG0+7mmpQhNANfY1o=; h=From:To:Subject:Date:In-Reply-To:References:From; b=CdcRP/MccA6UFkn65o+EbZKIlSNfs7DzqBdw7vbzZX/o3//4JTDgSBHd5eY3P2uKR i/gjTlqiPpKMdlj6DpM57ff6pbzblDyeeoKtDZ0KHTPw11fOw7yvHYm9AzGOyL6MP/ DvWVqkkRrRt0qqqIGN+NWX332SG3frEXdVY2U71s= From: "hp at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug analyzer/111264] [14 regression] gcc.dg/plugin/analyzer_cpython_plugin.c breaks after r14-3580-g597b9ec69bca8a Date: Fri, 01 Sep 2023 13:30:59 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: analyzer X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: testsuite-fail X-Bugzilla-Severity: normal X-Bugzilla-Who: hp at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: efric at gcc dot gnu.org X-Bugzilla-Target-Milestone: 14.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D111264 --- Comment #4 from Hans-Peter Nilsson --- (In reply to Andrew Pinski from comment #3) > You are mostly correct. > In C++17, Copy elision is guaranteed to be done here while in earlier > versions it is not and earlier versions of C++ require a copy/move > constructor even if copy elision is to be done. See > https://en.cppreference.com/w/cpp/language/copy_elision for more informat= ion. So before this "copy elision", there'd be temporaries constructed and then copied into other temporaries, this in an object that is essentially just declared, without initializer? Weird. Thanks for the pointer; I guess tha= t's the general idea, but here there'd be no difference. IOW, sounds like the patch is right. If we move past the difference in semantics of the idioms in the patch, I s= till don't see why there actually was error for the original syntax. There must= be something in the difference between the hash_map and hash_set declarations.= =20 Eagerly awaiting comments on the patch. (Probably not the best way to learn recent C++ standards, but believe it or not, I'm exposed to a worse way, on another track... :)=