[EMAIL PROTECTED] writes:
> FWIW, I have attached the 2 generated .s. Someone with knowledge of asm 
> may want to have a look..

Hmm.  It looks to me like the compiler is getting confused by the
interaction between nodeno, leftnodeno, and rightnodeno.  Try this
patch to see if it gets around it.  (This is a tad better anyway
since it avoids examining the right child if not needed.)

                        regards, tom lane

Index: fsmpage.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/storage/freespace/fsmpage.c,v
retrieving revision 1.2
diff -c -r1.2 fsmpage.c
*** fsmpage.c   7 Oct 2008 21:10:11 -0000       1.2
--- fsmpage.c   9 Dec 2008 18:18:53 -0000
***************
*** 243,259 ****
         */
        while (nodeno < NonLeafNodesPerPage)
        {
!               int leftnodeno = leftchild(nodeno);
!               int rightnodeno = leftnodeno + 1;
!               bool leftok = (leftnodeno < NodesPerPage) &&
!                       (fsmpage->fp_nodes[leftnodeno] >= minvalue);
!               bool rightok = (rightnodeno < NodesPerPage) &&
!                       (fsmpage->fp_nodes[rightnodeno] >= minvalue);
! 
!               if (leftok)
!                       nodeno = leftnodeno;
!               else if (rightok)
!                       nodeno = rightnodeno;
                else
                {
                        /*
--- 243,262 ----
         */
        while (nodeno < NonLeafNodesPerPage)
        {
!               int childnodeno = leftchild(nodeno);
! 
!               if (childnodeno < NodesPerPage &&
!                       fsmpage->fp_nodes[childnodeno] >= minvalue)
!               {
!                       nodeno = childnodeno;
!                       continue;
!               }
!               childnodeno++;                  /* point to right child */
!               if (childnodeno < NodesPerPage &&
!                       fsmpage->fp_nodes[childnodeno] >= minvalue)
!               {
!                       nodeno = childnodeno;
!               }
                else
                {
                        /*
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to