Use _icd2_tag fields from https://github.com/KhronosGroup/OpenCL-Headers/pull/280. (#252)
diff --git a/loader/icd.c b/loader/icd.c
index 34f438b..26280eb 100644
--- a/loader/icd.c
+++ b/loader/icd.c
@@ -176,7 +176,7 @@
            KHR_ICD_TRACE("found icd 2 object, but platform is missing clIcdSetPlatformDispatchDataKHR\n");
            continue;
         }
-        if (KHR_ICD2_HAS_TAG(platforms[i]) && !((intptr_t)((platforms[i])->dispatch->clUnloadCompiler) == CL_ICD2_TAG_KHR))
+        if (KHR_ICD2_HAS_TAG(platforms[i]) && !KHR_ICD2_HAS_TAG2(platforms[i]))
         {
            KHR_ICD_TRACE("found icd 2 object, but platform is missing tag in clUnloadCompiler\n");
            continue;
diff --git a/loader/icd_dispatch.h b/loader/icd_dispatch.h
index 39150ce..1e49622 100644
--- a/loader/icd_dispatch.h
+++ b/loader/icd_dispatch.h
@@ -73,8 +73,17 @@
     struct _cl_icd_dispatch dispatch;
 };
 
+#if __CL_HAS_ANON_UNION__
+#define KHR_ICD2_HAS_TAG(object)                                               \
+((object)->dispatch->clGetPlatformIDs_icd2_tag == CL_ICD2_TAG_KHR)
+#define KHR_ICD2_HAS_TAG2(object)                                              \
+((object)->dispatch->clUnloadCompiler_icd2_tag == CL_ICD2_TAG_KHR)
+#else
 #define KHR_ICD2_HAS_TAG(object)                                               \
 (((intptr_t)((object)->dispatch->clGetPlatformIDs)) == CL_ICD2_TAG_KHR)
+#define KHR_ICD2_HAS_TAG2(object)                                              \
+(((intptr_t)((object)->dispatch->clUnloadCompiler)) == CL_ICD2_TAG_KHR)
+#endif
 
 #define KHR_ICD2_DISPATCH(object)                                              \
 (KHR_ICD2_HAS_TAG(object) ?                                                    \