forked from Imagelibrary/rtems
score: Add RTEMS_HAVE_MEMBER_SAME_TYPE()
This fixes some "variably modified" warnings and a clang compile error.
This commit is contained in:
@@ -372,6 +372,25 @@ extern void RTEMS_DEQUALIFY_types_not_compatible(void);
|
|||||||
#endif /*RTEMS_DEQUALIFY_DEPTHX*/
|
#endif /*RTEMS_DEQUALIFY_DEPTHX*/
|
||||||
#endif /*RTEMS_DEQUALIFY*/
|
#endif /*RTEMS_DEQUALIFY*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Evaluates to true if the members of two types have the same type.
|
||||||
|
*
|
||||||
|
* @param[in] _t_lhs Left hand side type.
|
||||||
|
* @param[in] _m_lhs Left hand side member.
|
||||||
|
* @param[in] _t_rhs Right hand side type.
|
||||||
|
* @param[in] _m_rhs Right hand side member.
|
||||||
|
*/
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#define RTEMS_HAVE_MEMBER_SAME_TYPE( _t_lhs, _m_lhs, _t_rhs, _m_rhs ) \
|
||||||
|
__builtin_types_compatible_p( \
|
||||||
|
__typeof( ( (_t_lhs *) 0 )->_m_lhs ), \
|
||||||
|
__typeof( ( (_t_rhs *) 0 )->_m_rhs ) \
|
||||||
|
)
|
||||||
|
#else
|
||||||
|
#define RTEMS_HAVE_MEMBER_SAME_TYPE( _t_lhs, _m_lhs, _t_rhs, _m_rhs ) \
|
||||||
|
true
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Concatenates _x and _y without expanding.
|
* @brief Concatenates _x and _y without expanding.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1141,8 +1141,12 @@ typedef struct {
|
|||||||
RTEMS_STATIC_ASSERT( \
|
RTEMS_STATIC_ASSERT( \
|
||||||
offsetof( object_type, wait_queue_member ) \
|
offsetof( object_type, wait_queue_member ) \
|
||||||
== offsetof( Thread_queue_Object, Wait_queue ) \
|
== offsetof( Thread_queue_Object, Wait_queue ) \
|
||||||
&& ( &( ( (object_type *) 0 )->wait_queue_member ) \
|
&& RTEMS_HAVE_MEMBER_SAME_TYPE( \
|
||||||
== ( &( (Thread_queue_Object *) 0 )->Wait_queue ) ), \
|
object_type, \
|
||||||
|
wait_queue_member, \
|
||||||
|
Thread_queue_Object, \
|
||||||
|
Wait_queue \
|
||||||
|
), \
|
||||||
object_type \
|
object_type \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user