Commit 6c53d6ab393fec13e9af8a3d9df5b74959352f4b

Duncan Thomson 2021-09-08T18:42:42

Use __typeof__ GNUC keyword for ISO C compatibility

diff --git a/src/cc-compat.h b/src/cc-compat.h
index 6bdc651..f701b2d 100644
--- a/src/cc-compat.h
+++ b/src/cc-compat.h
@@ -29,12 +29,6 @@
 #	endif
 #endif
 
-#ifdef __GNUC__
-#	define GIT_TYPEOF(x) (__typeof__(x))
-#else
-#	define GIT_TYPEOF(x)
-#endif
-
 #if defined(__GNUC__)
 #	define GIT_ALIGN(x,size) x __attribute__ ((aligned(size)))
 #elif defined(_MSC_VER)
@@ -46,7 +40,7 @@
 #if defined(__GNUC__)
 # define GIT_UNUSED(x)                                                         \
 	do {                                                                   \
-		typeof(x) _unused __attribute__((unused));                     \
+		__typeof__(x) _unused __attribute__((unused));                 \
 		_unused = (x);                                                 \
 	} while (0)
 #else
diff --git a/src/util.h b/src/util.h
index 68c2b18..e8074fc 100644
--- a/src/util.h
+++ b/src/util.h
@@ -34,7 +34,7 @@
 # define GIT_CONTAINER_OF(ptr, type, member) \
 	__builtin_choose_expr( \
 	    __builtin_offsetof(type, member) == 0 && \
-	    __builtin_types_compatible_p(typeof(&((type *) 0)->member), typeof(ptr)), \
+	    __builtin_types_compatible_p(__typeof__(&((type *) 0)->member), __typeof__(ptr)), \
 		((type *) (ptr)), \
 		(void)0)
 #else