I disagree, an implementation should be allowed to use the most
efficient implementation possible for both interfaces.
I would be using traps for both on sparc64 if that were really
feasible on sparc64 (and actually with gcc-4.5's "asm goto" it might
actually be now)
The WARN and BUG macros, when implemented without traps, have serious
implications for overall code size and register pressure.
--