From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30951 invoked by alias); 12 Dec 2008 11:45:35 -0000 Received: (qmail 30098 invoked by uid 48); 12 Dec 2008 11:44:14 -0000 Date: Fri, 12 Dec 2008 11:45:00 -0000 Message-ID: <20081212114414.30097.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug libstdc++/38477] [strict-aliasing] warning message contains compiler-generated symbols In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rguenth at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-12/txt/msg01327.txt.bz2 ------- Comment #6 from rguenth at gcc dot gnu dot org 2008-12-12 11:44 ------- But there is no space for _Rb_tree_node<_Val> in ctx.foo._M_t._M_impl. struct _Rb_tree_impl : public _Node_allocator { _Key_compare _M_key_compare; _Rb_tree_node_base _M_header; size_type _M_node_count; the _M_header member is of type _Rb_tree_node_base, so I don't see how you can cast that to _Rb_tree_node<_Val> and expect the _M_value_field to magically appear in memory. At least this is what the alias analysis code complains about and thus says this access accesses nothing (legally). Now you can of course tell me that .D.9518 makes the difference, but this difference is not communicated to the middle-end properly by the C++ frontend. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38477