From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23525 invoked by alias); 13 Oct 2012 09:26:53 -0000 Received: (qmail 23479 invoked by uid 48); 13 Oct 2012 09:26:35 -0000 From: "simonb at google dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/51727] Changing module files Date: Sat, 13 Oct 2012 09:26:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: fortran X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: simonb at google dot com X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: tobi at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: 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-10/txt/msg01252.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51727 --- Comment #20 from Simon Baldwin 2012-10-13 09:26:35 UTC --- (In reply to comment #19) > ...Since we now process these symbols in a deterministic order, > the integers of the symbols added during each iteration are also deterministic. Thanks for the note and the fix. I guess my worry is that the order tags are assigned to symbols is a function of pointer ordering. I see the issue with what look like anonymous symbols, but can't convince myself it couldn't occur with something less anonymous. Suppose two anonymous symbols 'X' differentiated only by their addresses 101 and 102. After tagging there are two X's, call them X1 and X2, that will produce two lines that are identical apart from tag. Ordering by tag makes the order the same even if you reverse their addresses. However, two named symbols 'A' and 'B' at 101 and 102 will become A1 and B2 and produce two lines that differ in both tag and other fields, written in tag order as A first and B second. If you reverse their addresses the tags are assigned differently, A2 and B1. Here B has the smaller tag and so is written before A. At this stage though, I'm out of my depth on fortran, so it may well be that I'm the one missing something.