[cfe-dev] RFC: Clang driver redesign (round 2)

Jean-Daniel Dupas devlists at shadowlab.org
Fri Nov 11 14:46:36 PST 2011


Le 11 nov. 2011 à 20:10, reed kotler a écrit :

> Another requirement for the new driver should be "how are you going to test the damn thing"?
> That should factor into the design.
> 
> I think some kind of simulation mode, i.e. like "make -n" or "make --just-print") should exist so that you can make test cases for this. Then you can capture expected output , etc.
> 
> Something more involved where you can provide answers to certain questions the driver will ask of the environment. 
> 
> This is especially important considering the various platforms and targets.
> 

Something like clang -### ?


> On 11/11/2011 09:27 AM, Ruben Van Boxem wrote:
>> 
>> 2011/11/9 Chris Lattner <clattner at apple.com>
>> Yes, I also think that is really annoying and should be fixed.  Why does fixing it require a new driver?
>> 
>> -Chris
>> 
>> On Nov 9, 2011, at 7:02 AM, Christopher Jefferson <chris at bubblescope.net> wrote:
>> 
>> >
>> > On 8 Nov 2011, at 21:48, Chris Lattner wrote:
>> >
>> >> On Nov 8, 2011, at 3:23 AM, James Molloy wrote:
>> >>> Thanks for all the replies. I've kind of summarised the main points of
>> >>> contest so far below and tried to group supporters and opponents. If
>> >>> I've grouped you incorrectly, please don't take it slanderously :)
>> >>
>> >> Just MHO:
>> >>
>> >>> "To GCC or not to GCC, that is the question"
>> >>> ============================================
>> >>>
>> >>> +Doug Gregor, Miles Bader
>> >>> -Sean Hunt, Christopher Jefferson, Andrew Trick
>> >>>
>> >>> There is differing opinion on the amount of GCC compatability clang
>> >>> should offer. A lot of examples and arguments have been given, but I
>> >>> see one conclusion - the driver should not be pinned to anything.
>> >>
>> >> This is an absolute must-have.  I guess I'm not opposed to having a *second* driver that is "nicer" somehow than the existing one, but we cannot give up GCC compatibility in the main clang driver.
>> >>
>> >> However, the challenge then becomes "why would anyone use the 'nice' one"?
>> >
>> > Ease of use.
>> >
>> > I see stories like this over and over again when teaching students.
>> >
>> > $ cat test.cc
>> > #include <iostream>
>> >
>> > int main(void)
>> > {
>> >  int i;
>> >  std::cout << i;
>> > }
>> > $ clang test.cc
>> > Undefined symbols for architecture x86_64:
>> >  "std::ios_base::Init::Init()", referenced from:
>> >      ___cxx_global_var_init in t-vtk1TB.o
>> >  "std::ios_base::Init::~Init()", referenced from:
>> >      ___cxx_global_var_init in t-vtk1TB.o
>> >  "std::cout", referenced from:
>> >      _main in t-vtk1TB.o
>> >  "std::ostream::operator<<(int)", referenced from:
>> >      _main in t-vtk1TB.o
>> > ld: symbol(s) not found for architecture x86_64
>> > clang: error: linker command failed with exit code 1 (use -v to see invocation)
>> > < wander off and ask someone why the code isn't compiling >
>> > $ clang++ test.cc
>> > $ ./a.out
>> > 1872097369
>> > < wander off to ask why the code isn't working. Get told to enable warnings >
>> > $ clang++ test.cc -Wall
>> > t.cc:6:16: warning: variable 'i' is uninitialized when used here
>> >      [-Wuninitialized]
>> >  std::cout << i;
>> >               ^
>> > t.cc:5:8: note: initialize the variable 'i' to silence this warning
>> >  int i;
>> >       ^
>> >        = 0
>> > 1 warning generated.
>> > < grumbles, add the initialisation, code works>
>> >
>> > I think it would be worth trying to reduce the pain here, for a beginner programmer. I'll admit I don't know the best way of doing that.
>> >
>> >
>> > Chris
>> 
>> Loosely related but not completely orthogonal; does LLVM provide an abstracted fool-proof API/Class to gather commandline arguments? Seeing that it provides a bunch of executables and lends itself to fronted development, I would think it should, something simple that reads all the arguments, converts them to some generic/specialized "commandlineoptions" structure, that the frontend can transparently use to get it's internal options from.
>> 
>> Or am I completely rambling?
>> 
>> Ruben
>> 
>> 
>>  
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>> 
>> 
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> 
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

-- Jean-Daniel




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


More information about the cfe-dev mailing list