NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/38956
The following reply was made to PR kern/38956; it has been noted by GNATS.
From: christos%zoulas.com@localhost (Christos Zoulas)
To: Izumi Tsutsui <tsutsui%ceres.dti.ne.jp@localhost>,
gnats-bugs%NetBSD.org@localhost
Cc: kern-bug-people%NetBSD.org@localhost, gnats-admin%NetBSD.org@localhost,
netbsd-bugs%NetBSD.org@localhost, martin%duskware.de@localhost
Subject: Re: kern/38956
Date: Mon, 23 Jun 2008 13:26:28 -0400
On Jun 24, 2:08am, tsutsui%ceres.dti.ne.jp@localhost (Izumi Tsutsui) wrote:
-- Subject: Re: kern/38956
| rosenfeld%grumpf.hope-2000.org@localhost wrote:
|
| > I tried the proposed fix for m68k and it seems to work for vax, too.
|
| Hmm, interesting. On m68k with -fgcse, the following code
| in rb_tree_insert_node() around line 1298 is compiled badly:
| ---
| /*
| * Initialize the node and insert as a leaf into the tree.
| */
| self->rb_parent = parent;
| self->rb_position = position;
| RB_MARK_MOVED(self);
| ---
| 830: 142b 000c moveb %a3@(12),%d2 # d2 = self->rb_info
| 834: 2748 0008 movel %a0,%a3@(8) # self->rb_parent =
parent
| 838: efeb 3001 000c bfins %d3,%a3@(12),0,1 # self->rb_position =
position
| 83e: 1602 moveb %d2,%d3 # d3 = d2
| 840: 0003 0008 orib #8,%d3 # RB_MARK_MOVED(d3)
| 844: 1743 000c moveb %d3,%a3@(12) # rb_position is lost
here
| ---
|
| With -fno-gcse (or -fno-gcse-lm):
| ---
| 82a: 2748 0008 movel %a0,%a3@(8) # self->rb_parent =
parent
| 82e: efeb 2001 000c bfins %d2,%a3@(12),0,1 # self->rb_posision =
position
| 834: 142b 000c moveb %a3@(12),%d2 # d2 = self->rb_info
| 838: 1602 moveb %d2,%d3 # d3 = d2
| 83a: 0003 0008 orib #8,%d3 # RB_MARK_MOVED(d3)
| 83e: 1743 000c moveb %d3,%a3@(12) # self->rb_info = d3
| ---
|
| I'm not sure if this is MI gcc issue or not.
I bet if we stop using bitfields and use explicit & and | things are going
to be working fine.
christos
Home |
Main Index |
Thread Index |
Old Index