This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/42896] [4.5 Regression] Random debug generation differences, bootstrap fails
- From: "jakub at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 Jan 2010 15:21:17 -0000
- Subject: [Bug debug/42896] [4.5 Regression] Random debug generation differences, bootstrap fails
- References: <bug-42896-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #7 from jakub at gcc dot gnu dot org 2010-01-29 15:21 -------
:(, there apparently are VALUEs without locs so we can't always compare this
way.
Both the problematic VALUEs are created through
e = new_cselib_val (hashval, mode, x);
(the only place which doesn't assign VALUE values sequentially, but uses a
hash.
Both
(plus:DI (reg/f:DI 7 sp)
(const_int 32 [0x20]))
and
(plus:DI (reg/v/f:DI 3 bx [orig:83 insn_info ] [83])
(const_int 24 [0x18]))
hash to the same value (and while having two values with the same hashval would
be rejected inside of the same bb, it is not rejected inside of different bbs).
So the values are indeed for something completely different and thus must not
be considered equal. On 64-bit hosts we could at no cost add some sequential
UID to the VALUEs next to value, but on 32-bit hosts it would enlarge the
struct.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42896