[RFC] Have assert macros
Mark Mitchell
mark@codesourcery.com
Tue Aug 24 22:40:00 GMT 2004
Nathan Sidwell wrote:
> Hi,
> I did some measurements to determine how much leaving in our self
> checking
> mechanism of the form
> if (expr)
> abort()
> was costing us in compilation speed. I built 4 --disable-checking
> compilers, with the following tweaks
> 0) baseline
> 1) #define abort to no-op, thus allowing the optimizer can remove the
> controlling expression
> 2) #define abort to no-op and g++'s my_friendly_assert to no-op
> 3) Leave abort alone, but #define my_friendly_assert to
> __builtin_constant_p (expr) && !expr ? abort() : 0
> thus removing the runtime-checked asserts but leaving in the compile
> time checked asserts.
>
> The results I got for cc1plus on an i686-pc-linux-gnu system were (for
> the
> two sets of flags)
> -g -O0 -g -O2 textsize
> #0 2.75 2.81 4,582,627
> #1 2.79(+1.5%) 2.77(-1.5%) 4,488,595(-2.0%)
> #2 2.74(-0.5%) 2.79(-0.8%) 4,468,467(-2.5%)
> #3 2.71(-1.5%) 2.74(-2.5%) 4,565,603(-0.5%)
>
> As you can see, all but unoptimzed #1 is an improvement. Why is that one
> worse? One thing noticable about #1 is that I had many 'foo might be
> used
> uninitialized' warnings during bootstrap. These all come from code like
>
...
> Opinions on this proposal?
I am in favor. I think that you should wait a few days, and then
interpret silence as assent, if nobody else speaks up...
--
Mark Mitchell
CodeSourcery, LLC
(916) 791-8304
mark@codesourcery.com
More information about the Gcc
mailing list