[cfe-dev] Tests for C++0x Confusion
Michael Price - Dev
michael.b.price.dev at gmail.com
Mon Dec 20 05:33:17 CST 2010
That absolutely helps. Thanks!
Sent from my iPhone
On Dec 20, 2010, at 3:15 AM, Sebastian Redl <sebastian.redl at getdesigned.at
> On 19.12.2010 20:15, Michael Price wrote:
>> I'm a bit confused about the organization of the C++0x tests. Under
>> the clang/test directory I see the following seemingly C++0x related
>> (this is the one that confuses me the most, are thing organized by
>> compiler arch, or by language/version?) CXX/
>> Am I in the dark on how these thing are organized?
> You're mostly looking at a historical artifact.
> When Clang started as a C/Obj-C compiler (C++ was meant to be in
> but wasn't really planned for), it had some test directories:
> Preprocessor, Lexer, Parser, Sema, and CodeGen. This made sense,
> in C those components are pretty much completely distinct. We had the
> MinimalAction, which just provided enough semantic analysis to make C
> parsing work, so you could run the C parser without Sema. When ObjC
> became a reality, only Sema and CodeGen received a significant
> number of
> new tests, so SemaObjC and CodeGenObjC were added.
> When C++ support came into being, SemaCXX and CodeGenCXX were added
> along the same lines of reasoning. Templates were so complex and
> demanded so many tests that SemaTemplate was split out of SemaCXX.
> However, the organization as it is makes a lot less sense for C++ than
> for C. For C++, there's no real minimal analysis that you can use for
> parsing. Correctly parsing C++ already means understanding namespaces
> and templates. So MinimalAction fell into disuse and bitrot, and
> eventually the entire Action interface was removed. Sema became the
> action. Anyway, because separating parser and sema tests for C++
> make much sense, and to better get a feeling for test coverage, the
> directory was introduced, which contains tests organized by where the
> feature they describe appears in the standard. (This happened long
> before removing Action, by the way.)
> Nowadays, if you add a test for C++, it's best to add it to CXX.
> Occasionally we still add them to other directories, though: to PCH if
> it only tests PCH functionality, and to SemaCXX or CodeGenCXX if the
> test is not easily associated with a specific section of the standard.
> (Some features are all over the place.)
> Hope that helps.
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
More information about the cfe-dev