Way behind, sorry, and probably irrelevant anyway, but:

Aldy Hernandez <al...@redhat.com> writes:
> +#define ITM_BARRIERS(T) \
> +  extern _ITM_TYPE_##T _ITM_R##T(const _ITM_TYPE_##T *) ITM_REGPARM; \
> +  extern _ITM_TYPE_##T _ITM_RaR##T(const _ITM_TYPE_##T *) ITM_REGPARM;       
> \
> +  extern _ITM_TYPE_##T _ITM_RaW##T(const _ITM_TYPE_##T *) ITM_REGPARM;       
> \
> +  extern _ITM_TYPE_##T _ITM_RfW##T(const _ITM_TYPE_##T *) ITM_REGPARM;       
> \
> +  extern void _ITM_W##T (_ITM_TYPE_##T *, _ITM_TYPE_##T) ITM_REGPARM;        
> \
> +  extern void _ITM_WaR##T (_ITM_TYPE_##T *, _ITM_TYPE_##T) ITM_REGPARM;      
> \
> +  extern void _ITM_WaW##T (_ITM_TYPE_##T *, _ITM_TYPE_##T) ITM_REGPARM;
> +
> +ITM_BARRIERS(U1)
> +ITM_BARRIERS(U2)
> +ITM_BARRIERS(U4)
> +ITM_BARRIERS(U8)
> +ITM_BARRIERS(F)
> +ITM_BARRIERS(D)
> +ITM_BARRIERS(E)
> +ITM_BARRIERS(CF)
> +ITM_BARRIERS(CD)
> +ITM_BARRIERS(CE)
> +
> +#define ITM_LOG(T) \
> +  extern void _ITM_L##T (const _ITM_TYPE_##T *) ITM_REGPARM;
> +
> +ITM_LOG(U1)
> +ITM_LOG(U2)
> +ITM_LOG(U4)
> +ITM_LOG(U8)
> +ITM_LOG(F)
> +ITM_LOG(D)
> +ITM_LOG(E)
> +ITM_LOG(CF)
> +ITM_LOG(CD)
> +ITM_LOG(CE)
> +
> +#if defined(__i386__) || defined(__x86_64__)
> +# ifdef __MMX__
> +  typedef int _ITM_TYPE_M64 __attribute__((vector_size(8), may_alias));
> +  ITM_BARRIERS(M64)
> +  ITM_LOG(M64)
> +# endif
> +# ifdef __SSE__
> +  typedef float _ITM_TYPE_M128 __attribute__((vector_size(16), may_alias));
> +  ITM_BARRIERS(M128)
> +  ITM_LOG(M128)
> +# endif
> +# ifdef __AVX__
> +  typedef float _ITM_TYPE_M256 __attribute__((vector_size(32), may_alias));
> +  ITM_BARRIERS(M256)
> +  ITM_LOG(M256)
> +# endif
> +#endif /* i386 */
> +
> +#undef ITM_BARRIERS
> +#undef ITM_LOG

...should these kind of temporary macros have a name outside the
user's namespace?  _ITM or _GCC_ITM, or whatever?

Richard

Reply via email to