diff options
Diffstat (limited to 'mesalib/src/util')
-rw-r--r-- | mesalib/src/util/macros.h | 14 | ||||
-rw-r--r-- | mesalib/src/util/register_allocate.c | 2 |
2 files changed, 15 insertions, 1 deletions
diff --git a/mesalib/src/util/macros.h b/mesalib/src/util/macros.h index 40ebf02da..ff37a7d63 100644 --- a/mesalib/src/util/macros.h +++ b/mesalib/src/util/macros.h @@ -75,6 +75,20 @@ do { \ #define unreachable(str) #endif +/** + * Assume macro. Useful for expressing our assumptions to the compiler, + * typically for purposes of silencing warnings. + */ +#ifdef HAVE___BUILTIN_UNREACHABLE +#define assume(expr) ((expr) ? ((void) 0) \ + : (assert(!"assumption failed"), \ + __builtin_unreachable())) +#elif _MSC_VER >= 1200 +#define assume(expr) __assume(expr) +#else +#define assume(expr) assert(expr) +#endif + #ifdef HAVE_FUNC_ATTRIBUTE_FLATTEN #define FLATTEN __attribute__((__flatten__)) #else diff --git a/mesalib/src/util/register_allocate.c b/mesalib/src/util/register_allocate.c index afab9ddd3..6cf7ce721 100644 --- a/mesalib/src/util/register_allocate.c +++ b/mesalib/src/util/register_allocate.c @@ -335,7 +335,7 @@ ra_set_finalize(struct ra_regs *regs, unsigned int **q_values) for (i = 0; i < regs->regs[rc].num_conflicts; i++) { unsigned int rb = regs->regs[rc].conflict_list[i]; - if (BITSET_TEST(regs->classes[b]->regs, rb)) + if (reg_belongs_to_class(rb, regs->classes[b])) conflicts++; } max_conflicts = MAX2(max_conflicts, conflicts); |