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