On 09/15/2009 09:56 AM, Ian Lance Taylor wrote:
void assert_failure () __attribute__ ((noreturn, always_inline));
void assert_failure() { __asm__ ("int $0x03"); }
#define ASSERT(x) if (x) { } else { assert_failure(); }

Incidentally, there's a __builtin_trap() that you may wish to use. It won't invoke interrupt 3 like you currently do, but it will abort the program, and you'll be able to see from whence in the debugger.

Additionally, there are targets for which there exists a conditional trap instruction, e.g. sparc:

   cmp 0, %i0   // x in register %i0
   tne 0        // invoke trap vector 0 if compare is "not-equal"


r~

Reply via email to