 {
   void operator()(const size_t n)
   {
-#if defined(__GNUC__) && (__GNUC__ <= 4) && (__GNUC_MINOR__ <= 1)
-    // some bizzare problem with VariableUnitTest in this particular case
-    // on GCC 4.1.2 (SUSE Linux)
-    KNOWN_FAILURE;
-#else
     for(size_t num_bits = 0; num_bits < 8 * sizeof(T); num_bits += 7){
         thrust::host_vector<T>  h_keys = unittest::random_integers<T>(n);
    

    
        ASSERT_ALMOST_EQUAL(h_keys, d_keys);
    }
#endif
  }
};
VariableUnitTest<TestRadixSortVariableBits, IntegralTypes> TestRadixSortVariableBitsInstance;


template <typename T>


//still need to do long/ulong and maybe double

typedef unittest::type_list<
#if !(defined(__GNUC__) && (__GNUC__ <= 4) && (__GNUC_MINOR__ <= 1))
// XXX GCC 4.1 miscompiles the char sorts with -O2 for some reason
                            char,
                            signed char,
                            unsigned char,
#endif
                            short,
                            unsigned short,
                            int,
                            unsigned int,
                            long,
                            unsigned long,
                            long long,
                            unsigned long long,
                            double> RadixSortKeyTypes;

template <typename T>
struct TestRadixSort
