1#ifndef UTILS_H
2#define UTILS_H
3
4inline void break_optimization(void *arg) {
5  __asm__ __volatile__("" : : "r" (arg) : "memory");
6}
7
8// Tests will instantiate this class to pad out bit sets to test out the various
9// ways we can represent the bit set (32-bit inline, 64-bit inline, memory).
10// This class has 37 virtual member functions, which forces us to use a
11// pointer-aligned bitset.
12template <typename T, unsigned I>
13class Deriver : T {
14  virtual void f() {}
15  virtual void g() {}
16  virtual void f1() {}
17  virtual void f2() {}
18  virtual void f3() {}
19  virtual void f4() {}
20  virtual void f5() {}
21  virtual void f6() {}
22  virtual void f7() {}
23  virtual void f8() {}
24  virtual void f9() {}
25  virtual void f10() {}
26  virtual void f11() {}
27  virtual void f12() {}
28  virtual void f13() {}
29  virtual void f14() {}
30  virtual void f15() {}
31  virtual void f16() {}
32  virtual void f17() {}
33  virtual void f18() {}
34  virtual void f19() {}
35  virtual void f20() {}
36  virtual void f21() {}
37  virtual void f22() {}
38  virtual void f23() {}
39  virtual void f24() {}
40  virtual void f25() {}
41  virtual void f26() {}
42  virtual void f27() {}
43  virtual void f28() {}
44  virtual void f29() {}
45  virtual void f30() {}
46  virtual void f31() {}
47  virtual void f32() {}
48  virtual void f33() {}
49  virtual void f34() {}
50  virtual void f35() {}
51};
52
53#endif
54