<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 29, 2015, at 6:50 PM, Peter Collingbourne <<a href="mailto:peter@pcc.me.uk" class="">peter@pcc.me.uk</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">On Thu, Jan 29, 2015 at 02:22:48PM -0800, Peter Collingbourne wrote:<br class=""><blockquote type="cite" class="">I've been working on a patch that implements the bitset attribute and bitset<br class="">lowering pass. I'll see if I can send it out later today.<br class=""></blockquote><br class=""><a href="http://reviews.llvm.org/D7288" class="">http://reviews.llvm.org/D7288</a><br class=""></div></blockquote></div><br class=""><div class="">Hi Peter,</div><div class=""><br class=""></div><div class="">I don’t think that adding an IR construct for this is the way to go.  You’re making IR complicated for everyone to serve a very narrow use case (one that admittedly I don’t really understand).  The fact that this affects semantics and will only work with LTO and not native linkers is also really weird to me.  Is there other precedent for that?  The only cases I know that affect LTO add information that is safe to drop (e.g. TBAA etc).</div><div class=""><br class=""></div><div class="">Also, your patch is incomplete.  Presumably you have to scatter checks for “if (!GV->isBitSet())” throughout the optimizer, codegen and other things that touch globals.</div><div class=""><br class=""></div><div class="">-Chris</div></body></html>