From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31958 invoked by alias); 22 Mar 2006 09:53:56 -0000 Received: (qmail 31931 invoked by uid 48); 22 Mar 2006 09:53:52 -0000 Date: Wed, 22 Mar 2006 09:53:00 -0000 Message-ID: <20060322095352.31930.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/25737] ACATS tests c974001 and c974013 do not terminate with struct aliasing enabled In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "ebotcazou 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-03/txt/msg02179.txt.bz2 List-Id: ------- Comment #2 from ebotcazou at gcc dot gnu dot org 2006-03-22 09:53 ------- s-taasde.adb:Time_Enqueue is miscompiled at -O2, more specifically: Q := Timer_Queue.Succ; while Q.Resume_Time < T loop Q := Q.Succ; end loop; -- Q is the block that has Resume_Time equal to or greater than -- T. After the insertion we want Q to be the successor of D. D.Succ := Q; D.Pred := Q.Pred; D.Pred.Succ := D; Q.Pred := D; -- If the new element became the head of the queue, -- signal the Timer_Server to wake up. if Timer_Queue.Succ = D then Timer_Attention := True; STPO.Wakeup (Timer_Server_ID, ST.Timer_Server_Sleep); end if; FRE thinks that it can propagate the value Timer_Queue.Succ has at the top of the code down to the conditional of the test at the bottom. Of course that's not true since the assignment game in the middle can clobber it. I'm further digging but does this ring a bell to you, Richard? TIA. -- ebotcazou at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |ebotcazou at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-02-05 10:28:53 |2006-03-22 09:53:52 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25737