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

Alp Toker alp at nuanti.com
Mon Nov 11 09:56:03 PST 2013


On 11/11/2013 07:37, NAKAMURA Takumi wrote:
> 2013/11/10 Alp Toker <alp at nuanti.com>:
>> #ifndef NDEBUG
>>
>> This is the biggest violation. NDEBUG should only ever be used in source
>> files. That way if something is crashing we can swap in a debug build
>> without rebuilding every single dependent application. Win!
> I wish;
>
>   - NDEBUG may not modify API. class structure (member offset, vtables)
>     should be stable and identical among Release builds and Debug builds.
>   - NDEBUG may keep and add facilities.

Done :-)

The patchset is 532K so I've put it online:

  http://www.nuanti.com/tmp/llvm-api-stability/

The bulk edits are split out and noted. They were refactored with an
internal tool, so it's not a big hassle to keep this up to date until
3.4 is out the door.

A handful of fixes were needed to add support for Release+Assert builds
and these are also separate commits.

TableGen and internal tools continue to use ordinary platform assert() /
NDEBUG (I think a few uses might have been incorrectly changed, will
check over), as do the C++ sources and non-public headers.

llvm_assert() is a bit more verbose but it actually fits into the coding
style well, and it's grown on me.

Extract from README.txt:

|This patchset against LLVM r194356 implements API stability.||
||
||Embedding is now fully independent of build configuration, with the
exception of C++11 feature checks in Compiler.h which still need to be
autoconf'ed.||
||
||External applications should include llvm-config.h. ||
||
||Only supported with the CMake build system, Makefile is TBD.|

Alp.

-- 
http://www.nuanti.com
the browser experts

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


More information about the cfe-dev mailing list