[cfe-commits] r61430 - in /cfe/trunk: include/clang/Basic/TokenKinds.def lib/Lex/Preprocessor.cpp lib/Parse/ParseDecl.cpp test/Parser/MicrosoftExtensions.c

steve naroff snaroff at apple.com
Thu Dec 25 07:15:50 PST 2008

Hi Anton,

I'm sure there's a solution.

I don't see any fundamental problem here (but I could easily be  
missing something, since I'm not familiar with mingw).

Just because __cdecl is a keyword, doesn't mean it can't be defined.  
Here is an example:

[steve-naroffs-imac-2:llvm/tools/clang] snaroff% cat anton.c
typedef int (__cdecl *tptr)();
[steve-naroffs-imac-2:llvm/tools/clang] snaroff% ../../Debug/bin/clang  
anton.c:1:14: error: expected identifier or '('
typedef int (__cdecl *tptr)();
anton.c:1:14: error: expected ')'
anton.c:1:13: note: to match this '('
typedef int (__cdecl *tptr)();
3 diagnostics generated.
[steve-naroffs-imac-2:llvm/tools/clang] snaroff% ../../Debug/bin/clang  
anton.c -fms-extensions
[steve-naroffs-imac-2:llvm/tools/clang] snaroff% ../../Debug/bin/clang  
anton.c -D__cdecl=

If you can educate me a bit more, I'm happy to help fix the mingw  


On Dec 25, 2008, at 9:56 AM, Anton Korobeynikov wrote:

> Hi, Steve
>> This implementation allows them to pass through (so VC++ can see  
>> them).
> How we will proceed with parsing stuff from mingw? Are we going to
> drop mingw compatibility? The stuff from mingw runtime relies heavily
> (as I already shown to you), that these are defines, not keywords.
> Another example (string.h from mingw's w32api):
> _CRTIMP char* __cdecl __MINGW_NOTHROW	strcat (char*, const char*);
> Is there any support for codegen / sema of these keywords then?
> -- 
> With best regards, Anton Korobeynikov
> Faculty of Mathematics and Mechanics, Saint Petersburg State  
> University

More information about the cfe-commits mailing list