------- Additional Comments From law at redhat dot com 2004-11-21 06:31 ------- OK. I can see a way that we might be getting these comparison failures. We're hashing on pointers, then doing table traversals. If the memory layout changes, the ordering of objects in the hash table can change.
Changing the order of objects in the hash table changes the order in which they are presented to the callbacks during a hash table traversal. That in turn can change the ordering of incoming edges in newly created blocks. That in turn can change the order of PHI arguments in those newly created blocks. Changing the order of arguments within the PHI nodes can change how we coalesce during the out-of-ssa translation. At least that's the best theory I've got. I'm testing a patch which loses the pointer hash (we can hash on the index of the destination block). That ought to bring stability to the hash table traversals even if the memory map changes. It should also be slightly faster. Of course since I haven't been able to actually reproduce the failure I have no way of directly knowing if my theory is correct. I'll have to rely on y'all and the autotester to tell me if things are better. Anyway, I'm hoping to get those changes in tonight if testing can complete before I crash for the night. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18574