<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>