diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-02-22 22:43:40 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-02-22 22:43:40 +0000 |
| commit | cd2dd3df15523e2be8d2bbace27641d6ac9fa40d (patch) | |
| tree | fbdacaec253cc5ceee88cb44de5545fa32c8bd67 /test/cfi/utils.h | |
| parent | 476c4db3dc56bee43df384704c75ccc71cfa7a1d (diff) | |
Notes
Diffstat (limited to 'test/cfi/utils.h')
| -rw-r--r-- | test/cfi/utils.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/cfi/utils.h b/test/cfi/utils.h new file mode 100644 index 0000000000000..5c290d1510696 --- /dev/null +++ b/test/cfi/utils.h @@ -0,0 +1,53 @@ +#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 |
