[cfe-dev] Small patches to allow fully independent clang/llvm/compiler-rt/libc++

Jonathan Roelofs via cfe-dev cfe-dev at lists.llvm.org
Wed Oct 14 10:44:21 PDT 2015



On 10/14/15 10:59 AM, C Bergström wrote:
>>
>>
>> I understand that's what you _want_ to do, but I still don't think that's
>> the _right_ thing to do.
>>
>> To name a specific example of undesirable effects of this series of patches,
>> consider someone filing a bug report: in order to diagnose what's going on,
>> now we'd need more than just the svn revision as printed in the version
>> string... we'd need to know how the particular build was configured, which
>> isn't something that the binary is able to tell us.
>
> There's lots of things which can impact the compiler beyond just the
> flags. I can add flags (optimizations) to gcc and build a version of
> clang which won't produce correct code. How would you diagnosis that?

Passing the testsuite, and LNT is a fairly good indication that you've 
got a working compiler.... that's what they're for.

> (Similar scenario?) What happens if some rare bug slips in and or some
> optimization is turned on and then that compiler builds a buggy libc++

libc++ has a testsuite, and passing that testsuite should give some 
confidence that both the library and the compiler used to build it are 
doing the right thing.

> (same?) I get what you're saying, but I don't think you can perfectly
> guard against compile time decisions by adding more flags.

That being said, both those examples are red herrings; hard-to-detect 
bugs in the bootstrap compiler aren't justification for making such 
design decisions in Clang, especially when a viable alternative has been 
proposed.

>
> I don't know why gcc does it, but gcc -v will give you the configure
> line which was used to build the compiler. Doing something similar
> when these options are enabled would give the information someone
> would need. I'm happy to add that change if it makes these patches
> palatable.

Renato gives a good explanation for why gcc was architected this way. 
Clang, on the other hand, was designed to be a universal driver. Not 
having these kinds of configuration flags baked in at compile time is 
part of Clang's design philosophy, and I've already explained why.

>
> Thanks for the tip on the test case.

You're welcome.

> If the other 3 patches get approval I'll add a test case for the 4th.

In case it wasn't clear, I'm actively objecting to the first three 
patches, and deferring the 4th for someone else to review.


Jon

>

-- 
Jon Roelofs
jonathan at codesourcery.com
CodeSourcery / Mentor Embedded



More information about the cfe-dev mailing list