From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20538 invoked by alias); 21 Sep 2006 04:23:33 -0000 Received: (qmail 20497 invoked by uid 48); 21 Sep 2006 04:23:23 -0000 Date: Thu, 21 Sep 2006 04:23:00 -0000 Message-ID: <20060921042323.20496.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/29156] [4.2 Regression] Misscompilation with structs due to new struct alias In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "pinskia at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2006-09/txt/msg02006.txt.bz2 List-Id: ------- Comment #4 from pinskia at gcc dot gnu dot org 2006-09-21 04:23 ------- may_alias_p returns true for: (gdb) p debug_generic_expr (ptr) xaD.1527 (gdb) p debug_generic_expr (var) SMT.5D.1548 (In reply to comment #2) > So, actually, i'm pretty sure they should have the same SMT, because they > should be in the same alias set. They are not the exact same aliasing set but conflicting ones. > Why do they get different SMT's? Because of this: /* To avoid creating unnecessary memory tags, only create one memory tag per alias set class. Note that it may be tempting to group memory tags based on conflicting alias sets instead of equivalence. That would be wrong because alias sets are not necessarily transitive (as demonstrated by the libstdc++ test 23_containers/vector/cons/4.cc). Given three alias sets A, B, C such that conflicts (A, B) == true and conflicts (A, C) == true, it does not necessarily follow that conflicts (B, C) == true. */ But I don't see how saying more than one thing conflicts, we get wrong code out of it. -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[4.2 Regression] |[4.2 Regression] |Misscompilation due to |Misscompilation with structs |struct alias |due to new struct alias http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29156