blob: 5c290d15106966a8dcc5b5a9c625f36755242da9 [file] [log] [blame]
#ifndef UTILS_H
#define UTILS_H
inline void break_optimization(void *arg) {
__asm__ __volatile__("" : : "r" (arg) : "memory");
}
// Tests will instantiate this class to pad out bit sets to test out the various
// ways we can represent the bit set (32-bit inline, 64-bit inline, memory).
// This class has 37 virtual member functions, which forces us to use a
// pointer-aligned bitset.
template <typename T, unsigned I>
class Deriver : T {
virtual void f() {}
virtual void g() {}
virtual void f1() {}
virtual void f2() {}
virtual void f3() {}
virtual void f4() {}
virtual void f5() {}
virtual void f6() {}
virtual void f7() {}
virtual void f8() {}
virtual void f9() {}
virtual void f10() {}
virtual void f11() {}
virtual void f12() {}
virtual void f13() {}
virtual void f14() {}
virtual void f15() {}
virtual void f16() {}
virtual void f17() {}
virtual void f18() {}
virtual void f19() {}
virtual void f20() {}
virtual void f21() {}
virtual void f22() {}
virtual void f23() {}
virtual void f24() {}
virtual void f25() {}
virtual void f26() {}
virtual void f27() {}
virtual void f28() {}
virtual void f29() {}
virtual void f30() {}
virtual void f31() {}
virtual void f32() {}
virtual void f33() {}
virtual void f34() {}
virtual void f35() {}
};
#endif