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