From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23076 invoked by alias); 5 Jan 2012 23:44:57 -0000 Received: (qmail 23067 invoked by uid 22791); 5 Jan 2012 23:44:57 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 05 Jan 2012 23:44:44 +0000 From: "torvald at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/51771] New: trans-mem: abnormal edges get lost or corrupted Date: Thu, 05 Jan 2012 23:44:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: torvald at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 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: 2012-01/txt/msg00603.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51771 Bug #: 51771 Summary: trans-mem: abnormal edges get lost or corrupted Classification: Unclassified Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned@gcc.gnu.org ReportedBy: torvald@gcc.gnu.org CC: aldyh@gcc.gnu.org, rth@gcc.gnu.org For each call to libitm we create an abnormal edge back to the transaction's begin, which models that libitm could restart. Those edges seem to be intact during the middle-end but get lost or corrupted somewhere after that. This leads to miscompilation of STAMP Genome on x86_64, for example. For 4.7, we can mark _ITM_beginTransaction as returns-twice. This seems to work but isn't optimal, so we should fix the handling of abnormal edges for 4.8.