tventi: work around gcc 4.3 bug (reported by Lucho Ionkov) - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit dce4cbabd1bbfa3a8acc05ae0b2c3a9df17f93d2
 (DIR) parent 17b19538a48c036dbdc8817d233c0086f327485c
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Thu, 31 Jul 2008 15:41:54 -0400
       
       venti: work around gcc 4.3 bug (reported by Lucho Ionkov)
       
       Diffstat:
         M src/cmd/venti/srv/icache.c          |      14 +++++++++++++-
       
       1 file changed, 13 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/src/cmd/venti/srv/icache.c b/src/cmd/venti/srv/icache.c
       t@@ -15,7 +15,19 @@ struct ICache
                IHash        *hash;
                IEntry        *entries;
                int                nentries;
       -        IEntry        free;
       +
       +        /*
       +        * gcc 4.3 inlines the pushfirst loop in initicache,
       +        * but the inliner incorrectly deduces that
       +        * icache.free.next has a constant value
       +        * throughout the loop.  (In fact, pushfirst
       +        * assigns to it as ie->prev->next.)
       +        * Marking it volatile should avoid this bug.
       +        * The speed of linked list operations is dwarfed
       +        * by the disk i/o anyway.
       +        */
       +        volatile IEntry free;
       +
                IEntry        clean;
                IEntry        dirty;
                u32int        maxdirty;