On Oct 5, 2011, at 6:18 AM, Diego Novillo wrote: > I think we need to find a solution for this situation.
The solution Apple found and implemented is a __nodebug__ attribute, as can be seen in Apple's gcc. We use it like so: #define __always_inline__ __always_inline__, __nodebug__ #undef __always_inline__ in headers like mmintrn.h: __STATIC_INLINE void __attribute__((__always_inline__)) /* APPLE LOCAL end radar 5618945 */ _mm_empty (void) { __builtin_ia32_emms (); } to disappear the debug information for all the routines, so that the context is the context in which the routine is called (because the routine is always inlined). It is implemented and works great. Easy to use and understand. Since we use the #define, #undef around the functions, it is mostly equivalent to #pragma, though, it does attach a little closer to the function. You can strip #.* from the .i files, and not have it removed (which is nice).