<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 11/11/2013 07:37, NAKAMURA Takumi wrote:<br>
<blockquote
cite="mid:CADiQthNpi7netYEeWZ=eeLfaMfi=WdgY23sQJhUkfOCS50v+LQ@mail.gmail.com"
type="cite">
<pre wrap="">2013/11/10 Alp Toker <a class="moz-txt-link-rfc2396E" href="mailto:alp@nuanti.com"><alp@nuanti.com></a>:
</pre>
<blockquote type="cite">
<pre wrap="">#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!
</pre>
</blockquote>
<pre wrap="">
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.
</pre>
</blockquote>
<br>
Done :-)<br>
<br>
The patchset is 532K so I've put it online:<br>
<br>
<a class="moz-txt-link-freetext" href="http://www.nuanti.com/tmp/llvm-api-stability/">http://www.nuanti.com/tmp/llvm-api-stability/</a><br>
<br>
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.<br>
<br>
A handful of fixes were needed to add support for Release+Assert
builds and these are also separate commits.<br>
<br>
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.<br>
<br>
llvm_assert() is a bit more verbose but it actually fits into the
coding style well, and it's grown on me.<br>
<br>
Extract from README.txt:<br>
<br>
<code>This patchset against LLVM r194356 implements API stability.</code><code><br>
</code><code><br>
</code><code>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.</code><code><br>
</code><code><br>
</code><code>External applications should include llvm-config.h. </code><code><br>
</code><code><br>
</code><code>Only supported with the CMake build system, Makefile is
TBD.</code><br>
<br>
Alp.<br>
<br>
<pre class="moz-signature" cols="72">--
<a class="moz-txt-link-freetext" href="http://www.nuanti.com">http://www.nuanti.com</a>
the browser experts
</pre>
</body>
</html>