<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Kostya,<div><br></div><div>This looks fine to me.  Unless you hear other objections,  I'm fine you applying this.</div><div><br></div><div>--Owen</div><div><br><div><div>On Jan 13, 2012, at 2:15 PM, Kostya Serebryany wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hello, <div><br></div><div>Please consider the following patches (llvm and clang). <br><div><br></div><div>Problem: LLVM needs more function attributes than currently available (32 bits).</div><div>One such proposed attribute is "address_safety", which shows that a function is being checked for address safety (by AddressSanitizer, SAFECode, etc).</div>
<div><br></div><div>Solution: </div></div><div>   - extend the Attributes from 32 bits to 64-bits</div><div>   - wrap the object into a class so that unsigned is never erroneously used instead</div><div>   - change "unsigned" to "Attributes" throughout the code, including one place in clang. </div>
<div>   - the class has no "operator uint64 ()", but it has "uint64_t Raw() " to support packing/unpacking. </div><div>   - the class has "safe operator bool()" to support the common idiom:  if (Attributes attr = getAttrs()) useAttrs(attr);</div>
<div>   - The CTOR from uint64_t is marked explicit, so I had to add a few explicit CTOR calls</div><div>   - Add the new attribute "address_safety". Doing it in the same commit to check that attributes beyond first 32 bits actually work. </div>
<div>   - Some of the functions from the Attribute namespace are worth moving inside the class, but I'd prefer to have it as a separate commit. </div><div><br></div><div>Tested: </div><div>   "make check" on Linux and Mac (10.6)</div>
<div>   built/run spec CPU 2006 on Linux with clang -O2. </div><div><br></div><div>The patches are attached, the llvm patch is also published here: <a href="http://codereview.appspot.com/5544058/">http://codereview.appspot.com/5544058/</a></div>
<div><br></div><div>Thanks, </div><div><br></div><div>--kcc </div><div>  </div>
<span><attr_clang.patch></span><span><attr_llvm.patch></span>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits<br></blockquote></div><br></div></body></html>