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~