aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src/util')
-rw-r--r--mesalib/src/util/macros.h14
-rw-r--r--mesalib/src/util/register_allocate.c2
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);