util: no-op __builtin_types_compatible_p() for non-GCC compilers
authorBrian Paul <brianp@vmware.com>
Fri, 29 Mar 2019 16:45:44 +0000 (10:45 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 29 Mar 2019 21:33:43 +0000 (15:33 -0600)
__builtin_types_compatible_p() is GCC-specific and breaks the
MSVC build.

This intrinsic has been in u_vector_foreach() for a long time, but
that macro has only recently been used in code
(nir/nir_opt_comparison_pre.c) that's built with MSVC.

Fixes: 2cf59861a ("nir: Add partial redundancy elimination for compares")
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/util/u_vector.h

index cd8a95dcbe3d9be32a1278309956e67958e1f3f1..6807748e3b10b51d9c65a9a364d3e1e65f1befb7 100644 (file)
@@ -80,6 +80,10 @@ u_vector_finish(struct u_vector *queue)
    free(queue->data);
 }
 
+#ifndef __GNUC__
+#define __builtin_types_compatible_p(x) 1
+#endif
+
 #define u_vector_foreach(elem, queue)                                  \
    STATIC_ASSERT(__builtin_types_compatible_p(__typeof__(queue), struct u_vector *)); \
    for (uint32_t __u_vector_offset = (queue)->tail;                                \