<div dir="ltr"><p dir="ltr">On Jan 9, 2013 12:56 PM, "Dmitri Gribenko" <<a href="mailto:gribozavr@gmail.com" target="_blank">gribozavr@gmail.com</a>> wrote:<br></p><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


On Wed, Jan 9, 2013 at 8:19 PM, Dave Goodell <<a href="mailto:goodell@mcs.anl.gov" target="_blank">goodell@mcs.anl.gov</a>> wrote:<br>
> Both implemented and pushed as d440abb and ac15f7a.  Thanks.<br>
><br>
> -Dave<br>
><br>
> On Jan 1, 2013, at 11:14 PM CST, Jed Brown wrote:<br>
><br>
>> In addition, I suggest guarding these definitions. Leaving these in increases the total number of symbols in an example executable linking PETSc by a factor of 2. (They're all read-only, but they're still there.) Clang is smart enough to remove these, presumably because it understands the special attributes.<br>



<br>
No, LLVM removes these not because of the attributes, but because<br>
these are unused.  And when they are used, most of the time they don't<br>
have their address taken, so their value is propagated to the point<br>
where they are read and the constants again become unused.<br>
<br>
I don't think GCC isn't smart enough to do the same.  Do you compile<br>
with optimization?<br></blockquote><div><br></div><div>Dmitri, as discussed in the other thread, it's smart enough, but only when optimization is turned on. There's no reason to needlessly make debug builds heavier than necessary. This is not a big deal either way.</div>

</div>
</div>