Messages in this thread | | | Date | Tue, 15 Apr 2003 07:45:25 -0700 | From | "Martin J. Bligh" <> | Subject | Re: BUGed to death |
| |
>> >> Seems all these bug checks are fairly expensive. I can get 1% >> >> back on system time for kernel compiles by changing BUG to >> >> "do {} while (0)" to make them all compile away. Profiles aren't >> >> very revealing though ... seems to be within experimental error ;-( >> > >> > What happens if you just turn BUG_ON into "do {} while (0)"? >> >> I believe I already did that by turning BUG() into a null expression. >> >> # define BUG_ON(condition) >> do { if (unlikely((condition)!=0)) BUG(); } while(0) >> >> The compiler should be smart enough to optimise that away, methinks. > > No, I meant what happens if BUG() is non-trivial and BUG_ON is a no-op. > I thought it might give an indication of whether time was being lost > evaluating the condition (occurs with BUG and BUG_ON), or mispredicting > the branch (only occurs with BUG).
Mmmm. wouldn't that just optimise away the BUG_ONs, but not the BUGs ? Which will tell you something, but I'm not sure anything interesting. My impression is that if I do:
if (foo) do {} while (0);
the compiler will just ditch the whole thing, and not evaluate foo. I'll admit to not having checked that, but still ....
M.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |