<div dir="ltr">LGTM. I like the end state (just using std::) and this seems like a pretty reasonable initial step. Thanks!</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jun 11, 2014 at 7:54 PM, Rafael EspĂ­ndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I have patched llvm::error_code to make it look more like what the<br>
system versions look like, now it is time to see if we want to take<br>
the next step and actually replace it.<br>
<br>
Attached you will find the llvm clang and lld patches. The idea of the<br>
patches is to turns llvm/Support/system_error.h into a transitional<br>
header that just brings in the erorr_code api to the llvm namespace.<br>
If these patches are OK I will finish the job and delete the file<br>
shortly after.<br>
<br>
The cases where the general idea needed some tweaking:<br>
<br>
* std::errc is a namespace in msvc, so we cannot use "using<br>
std::errc". I would add an #ifdef, but there were note that many uses,<br>
so I just added std:: to them already in this patch.<br>
<br>
* Template specialization had to be moved to the std namespace in this<br>
patch set already.<br>
<br>
* The msvc implementation of default_error_condition doesn't seem to<br>
provide the same transformations as we need. Not too surprising since<br>
the standard doesn't actually say what "equivalent" means. I fixed the<br>
problem by keeping our old mapping and using it at error_code<br>
construction time.<br>
<br>
Despite these shortcomings I think this is still a good thing. Some reasons:<br>
<br>
* The different implementations of system_error might improve over time.<br>
* It removes 925 lines of code from llvm already.<br>
* It removes 6313 bytes from the text segment of the clang binary when<br>
it is built with gcc and 2816 bytes when building with clang and<br>
libstdc++.<br>
<br>
Cheers,<br>
Rafael<br>
</blockquote></div><br></div>