include: drop obsolete check for typeof operator

It really seems that compilers on all our supported platforms
(including Solaris) supporting `typeof`, so we can always use it
and drop hacks with undefind behaviour entirely.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1432>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-03-21 16:16:03 +01:00 committed by Marge Bot
parent 17db4ba3de
commit 86d0f6dafa
3 changed files with 0 additions and 24 deletions

View File

@ -236,19 +236,11 @@ extern DevPrivateKeyRec exaScreenPrivateKeyRec;
real->mem = priv->Saved##mem; \ real->mem = priv->Saved##mem; \
} }
#ifdef HAVE_TYPEOF
#define swap(priv, real, mem) {\ #define swap(priv, real, mem) {\
typeof(real->mem) tmp = priv->Saved##mem; \ typeof(real->mem) tmp = priv->Saved##mem; \
priv->Saved##mem = real->mem; \ priv->Saved##mem = real->mem; \
real->mem = tmp; \ real->mem = tmp; \
} }
#else
#define swap(priv, real, mem) {\
const void *tmp = priv->Saved##mem; \
priv->Saved##mem = real->mem; \
real->mem = tmp; \
}
#endif
#define EXA_PRE_FALLBACK(_screen_) \ #define EXA_PRE_FALLBACK(_screen_) \
ExaScreenPriv(_screen_); \ ExaScreenPriv(_screen_); \

View File

@ -274,19 +274,8 @@ xorg_list_is_empty(struct xorg_list *head)
#define xorg_list_last_entry(ptr, type, member) \ #define xorg_list_last_entry(ptr, type, member) \
xorg_list_entry((ptr)->prev, type, member) xorg_list_entry((ptr)->prev, type, member)
#ifdef HAVE_TYPEOF
#define __container_of(ptr, sample, member) \ #define __container_of(ptr, sample, member) \
container_of(ptr, typeof(*sample), member) container_of(ptr, typeof(*sample), member)
#else
/* This implementation of __container_of has undefined behavior according
* to the C standard, but it works in many cases. If your compiler doesn't
* support typeof() and fails with this implementation, please try a newer
* compiler.
*/
#define __container_of(ptr, sample, member) \
(void *)((char *)(ptr) \
- ((char *)&(sample)->member - (char *)(sample)))
#endif
/** /**
* Loop through the list given by head and set pos to struct in the list. * Loop through the list given by head and set pos to struct in the list.

View File

@ -11,11 +11,6 @@ dri_dep = dependency('dri', required: build_glx)
conf_data = configuration_data() conf_data = configuration_data()
conf_data.set('_DIX_CONFIG_H_', '1') conf_data.set('_DIX_CONFIG_H_', '1')
conf_data.set('HAVE_TYPEOF', cc.compiles('''
int foo(int bar) { typeof(bar) baz = 1; return baz; }
''',
name: 'typeof()') ? '1' : false)
# For feature macros we're using either false (boolean) or '1', which correspond to the macro being # For feature macros we're using either false (boolean) or '1', which correspond to the macro being
# not defined at all and defined to 1. This is to match autotools behavior and thus preserve # not defined at all and defined to 1. This is to match autotools behavior and thus preserve
# backwards compatibility with all the existing code that uses #ifdef to check if feature is # backwards compatibility with all the existing code that uses #ifdef to check if feature is