@@ -1579,3 +1579,33 @@ TEST_F(BasicParserTests, CreateFieldData_fracanisotropy)
15791579
15801580*/
15811581
1582+ TEST (FieldHashTests, TestShiftingZero)
1583+ {
1584+ // copied from TetVolMesh.h, failing compilation on GCC 6.2.
1585+ static const int sz_int = sizeof (int ) * 8 ; // in bits
1586+
1587+ // / These are for our own use (making the hash function).
1588+ static const int sz_third_int = (int )(sz_int / 3 );
1589+ static const int up_mask = (~((int )0 ) << sz_third_int << sz_third_int);
1590+ static const int mid_mask = up_mask ^ (~((int )0 ) << sz_third_int);
1591+ static const int low_mask = ~(up_mask | mid_mask);
1592+
1593+ std::cout << " sz_int: " << sz_int << std::endl;
1594+ std::cout << " sz_third_int: " << sz_third_int << std::endl;
1595+ std::cout << " up_mask: " << up_mask << std::endl;
1596+ std::cout << " mid_mask: " << mid_mask << std::endl;
1597+ std::cout << " low_mask: " << low_mask << std::endl;
1598+
1599+ auto badGcc = ~((int )0 );
1600+ std::cout << " badGcc: " << badGcc << std::endl;
1601+
1602+ auto redo_up_mask = -(1 << 10 << 10 );
1603+ std::cout << " redo_up_mask: " << redo_up_mask << std::endl;
1604+
1605+ auto redo_mid_mask = redo_up_mask ^ (-(1 << sz_third_int));
1606+ auto redo_low_mask = ~(redo_up_mask | redo_mid_mask);
1607+
1608+ ASSERT_EQ (redo_up_mask, up_mask);
1609+ ASSERT_EQ (redo_mid_mask, mid_mask);
1610+ ASSERT_EQ (redo_low_mask, low_mask);
1611+ }
0 commit comments