[cfe-dev] Goal for 3.5: Library-friendly headers

Chris Lattner clattner at apple.com
Fri Jan 3 16:24:03 PST 2014

On Jan 3, 2014, at 2:19 PM, Chandler Carruth <chandlerc at google.com> wrote:
>> While having different components of LLVM and consumers of LLVM able to intermix NDEBUG and !NDEBUG built code freely without ABI issues is nice-to-have in my book, the functionality provided by AssertingVH is significantly more nice-to-have, and I don't see any easy ways to contain or limit the exposure of this facility to library-level consumers.
> I hadn’t considered AssertVH, and I agree that losing it isn’t an option.
> Would it be possible to redesign AssertVH to be non-ABI fragile across debug/release builds?  I haven’t looked at it recently, but maybe it could be a pointer to a CallbackVH in the debug mode, or a PointerUnion<rawpointer, callbackvh> or something.
> If you want methods to still be inlined in the non-assert case, you still have an ABI break in how you interpret the pointer...

I’m suggesting that AssertVH be redesigned: it could be a PointerUnion (in all build modes) and .o files which are built in debug mode would put a callback vh into it.  Clients built in release mode would put a raw pointer in it.

Release builds would pay some small cost to check the tag bit, but I think that would be acceptable.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140103/c37f259e/attachment.html>

More information about the cfe-dev mailing list