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

reed kotler rkotler at mips.com
Fri Nov 11 11:10:11 PST 2011


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.

On 11/11/2011 09:27 AM, Ruben Van Boxem wrote:
> 2011/11/9 Chris Lattner <clattner at apple.com <mailto: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 <mailto: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 <mailto: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

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


More information about the cfe-dev mailing list