[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