]> mj.ucw.cz Git - libucw.git/commitdiff
The GCC bug (I hope I have ruled out all possibilities of a bug at my side)
authorMartin Mares <mj@ucw.cz>
Fri, 31 Aug 2007 11:42:43 +0000 (13:42 +0200)
committerMartin Mares <mj@ucw.cz>
Fri, 31 Aug 2007 11:42:43 +0000 (13:42 +0200)
turned out to bite even in GCC 4.2.1, so I have reported it and enabled
the workaround for all compiler versions.

lib/sorter/s-multiway.h

index 9295396f0c16ce3e428ac607c60b371684481b0f..83e928f2621c6a8ba07adeb244b0b3ad63a5a5e3 100644 (file)
@@ -44,15 +44,12 @@ static inline void P(update_tree)(P(key) *keys, P(mwt) *tree, uns i)
        * the tree is the same, the actual key value can differ.
        */
     }
-#if defined(__GNUC__) && (__GNUC__ * 1000 + __GNUC_MINOR__ < 4002)
   /*
-   * This function sometimes triggers optimizer bugs in GCC 4.1.1 and
-   * possibly also earlier versions, leading to an assumption that tree[1]
-   * does not change during this function. We add an explicit memory barrier
-   * as a work-around. Ugh.
+   * This function sometimes triggers optimizer bugs in GCC versions up to 4.2.1,
+   * leading to an assumption that tree[1] does not change during this function.
+   * We add an explicit memory barrier as a work-around. Ugh. See GCC Bug #33262.
    */
   asm volatile ("" : : : "memory");
-#endif
 }
 
 static inline void P(set_tree)(P(key) *keys, P(mwt) *tree, uns i, int val)