rename APPLE flavor to CLANG
This commit is contained in:
parent
f33459fe7c
commit
3849bb0f20
|
@ -150,9 +150,10 @@ void ansi_c_declarationt::to_symbol(
|
||||||
if(get_is_inline())
|
if(get_is_inline())
|
||||||
symbol.type.set(ID_C_inlined, true);
|
symbol.type.set(ID_C_inlined, true);
|
||||||
|
|
||||||
if(config.ansi_c.mode==configt::ansi_ct::flavourt::GCC ||
|
if(
|
||||||
config.ansi_c.mode==configt::ansi_ct::flavourt::APPLE ||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::GCC ||
|
||||||
config.ansi_c.mode==configt::ansi_ct::flavourt::ARM)
|
config.ansi_c.mode == configt::ansi_ct::flavourt::CLANG ||
|
||||||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::ARM)
|
||||||
{
|
{
|
||||||
// GCC extern inline cleanup, to enable remove_internal_symbols
|
// GCC extern inline cleanup, to enable remove_internal_symbols
|
||||||
// do its full job
|
// do its full job
|
||||||
|
|
|
@ -182,9 +182,10 @@ void ansi_c_internal_additions(std::string &code)
|
||||||
"\n";
|
"\n";
|
||||||
|
|
||||||
// GCC junk stuff, also for CLANG and ARM
|
// GCC junk stuff, also for CLANG and ARM
|
||||||
if(config.ansi_c.mode==configt::ansi_ct::flavourt::GCC ||
|
if(
|
||||||
config.ansi_c.mode==configt::ansi_ct::flavourt::APPLE ||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::GCC ||
|
||||||
config.ansi_c.mode==configt::ansi_ct::flavourt::ARM)
|
config.ansi_c.mode == configt::ansi_ct::flavourt::CLANG ||
|
||||||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::ARM)
|
||||||
{
|
{
|
||||||
code+=gcc_builtin_headers_types;
|
code+=gcc_builtin_headers_types;
|
||||||
|
|
||||||
|
@ -195,11 +196,11 @@ void ansi_c_internal_additions(std::string &code)
|
||||||
config.ansi_c.arch=="x86_64" ||
|
config.ansi_c.arch=="x86_64" ||
|
||||||
config.ansi_c.arch=="x32")
|
config.ansi_c.arch=="x32")
|
||||||
{
|
{
|
||||||
if(config.ansi_c.mode==configt::ansi_ct::flavourt::APPLE)
|
if(config.ansi_c.mode == configt::ansi_ct::flavourt::CLANG)
|
||||||
code+="typedef double __float128;\n"; // clang doesn't do __float128
|
code+="typedef double __float128;\n"; // clang doesn't do __float128
|
||||||
}
|
}
|
||||||
|
|
||||||
// On 64-bit systems, gcc has typedefs
|
// On 64-bit systems, both gcc and clang have typedefs
|
||||||
// __int128_t und __uint128_t -- but not on 32 bit!
|
// __int128_t und __uint128_t -- but not on 32 bit!
|
||||||
if(config.ansi_c.long_int_width>=64)
|
if(config.ansi_c.long_int_width>=64)
|
||||||
{
|
{
|
||||||
|
|
|
@ -134,9 +134,10 @@ bool builtin_factory(
|
||||||
}
|
}
|
||||||
|
|
||||||
// GCC junk stuff, also for CLANG and ARM
|
// GCC junk stuff, also for CLANG and ARM
|
||||||
if(config.ansi_c.mode==configt::ansi_ct::flavourt::GCC ||
|
if(
|
||||||
config.ansi_c.mode==configt::ansi_ct::flavourt::APPLE ||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::GCC ||
|
||||||
config.ansi_c.mode==configt::ansi_ct::flavourt::ARM)
|
config.ansi_c.mode == configt::ansi_ct::flavourt::CLANG ||
|
||||||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::ARM)
|
||||||
{
|
{
|
||||||
if(find_pattern(pattern, gcc_builtin_headers_generic, s))
|
if(find_pattern(pattern, gcc_builtin_headers_generic, s))
|
||||||
return convert(identifier, s, symbol_table, mh);
|
return convert(identifier, s, symbol_table, mh);
|
||||||
|
|
|
@ -336,7 +336,7 @@ void c_typecheck_baset::typecheck_redefinition_non_type(
|
||||||
if(
|
if(
|
||||||
old_symbol.type.get_bool(ID_C_inlined) &&
|
old_symbol.type.get_bool(ID_C_inlined) &&
|
||||||
(config.ansi_c.mode == configt::ansi_ct::flavourt::GCC ||
|
(config.ansi_c.mode == configt::ansi_ct::flavourt::GCC ||
|
||||||
config.ansi_c.mode == configt::ansi_ct::flavourt::APPLE ||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::CLANG ||
|
||||||
config.ansi_c.mode == configt::ansi_ct::flavourt::ARM ||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::ARM ||
|
||||||
config.ansi_c.mode == configt::ansi_ct::flavourt::VISUAL_STUDIO))
|
config.ansi_c.mode == configt::ansi_ct::flavourt::VISUAL_STUDIO))
|
||||||
{
|
{
|
||||||
|
|
|
@ -452,7 +452,7 @@ void ansi_c_scanner_init()
|
||||||
"while" { loc(); return TOK_WHILE; }
|
"while" { loc(); return TOK_WHILE; }
|
||||||
|
|
||||||
"__auto_type" { if((PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__auto_type" { if((PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE)
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG)
|
||||||
&& !PARSER.cpp98)
|
&& !PARSER.cpp98)
|
||||||
{ loc(); return TOK_GCC_AUTO_TYPE; }
|
{ loc(); return TOK_GCC_AUTO_TYPE; }
|
||||||
else
|
else
|
||||||
|
@ -516,7 +516,7 @@ void ansi_c_scanner_init()
|
||||||
}
|
}
|
||||||
|
|
||||||
"__int128" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__int128" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE)
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG)
|
||||||
{ loc(); return TOK_GCC_INT128; }
|
{ loc(); return TOK_GCC_INT128; }
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
|
@ -567,7 +567,7 @@ void ansi_c_scanner_init()
|
||||||
|
|
||||||
"__complex__" |
|
"__complex__" |
|
||||||
"__complex" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__complex" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_COMPLEX; }
|
{ loc(); return TOK_COMPLEX; }
|
||||||
else
|
else
|
||||||
|
@ -576,7 +576,7 @@ void ansi_c_scanner_init()
|
||||||
|
|
||||||
"__real__" |
|
"__real__" |
|
||||||
"__real" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__real" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_REAL; }
|
{ loc(); return TOK_REAL; }
|
||||||
else
|
else
|
||||||
|
@ -585,7 +585,7 @@ void ansi_c_scanner_init()
|
||||||
|
|
||||||
"__imag__" |
|
"__imag__" |
|
||||||
"__imag" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__imag" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_IMAG; }
|
{ loc(); return TOK_IMAG; }
|
||||||
else
|
else
|
||||||
|
@ -604,7 +604,7 @@ void ansi_c_scanner_init()
|
||||||
}
|
}
|
||||||
|
|
||||||
"__builtin_va_arg" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__builtin_va_arg" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_BUILTIN_VA_ARG; }
|
{ loc(); return TOK_BUILTIN_VA_ARG; }
|
||||||
else
|
else
|
||||||
|
@ -614,7 +614,7 @@ void ansi_c_scanner_init()
|
||||||
"__builtin_offsetof" |
|
"__builtin_offsetof" |
|
||||||
"__offsetof__" |
|
"__offsetof__" |
|
||||||
"offsetof" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"offsetof" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_OFFSETOF; }
|
{ loc(); return TOK_OFFSETOF; }
|
||||||
else
|
else
|
||||||
|
@ -623,7 +623,7 @@ void ansi_c_scanner_init()
|
||||||
|
|
||||||
"__builtin_types_compatible_p" {
|
"__builtin_types_compatible_p" {
|
||||||
if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_GCC_BUILTIN_TYPES_COMPATIBLE_P; }
|
{ loc(); return TOK_GCC_BUILTIN_TYPES_COMPATIBLE_P; }
|
||||||
else
|
else
|
||||||
|
@ -632,14 +632,14 @@ void ansi_c_scanner_init()
|
||||||
|
|
||||||
"__builtin_convertvector" {
|
"__builtin_convertvector" {
|
||||||
if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE)
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG)
|
||||||
{ loc(); return TOK_CLANG_BUILTIN_CONVERTVECTOR; }
|
{ loc(); return TOK_CLANG_BUILTIN_CONVERTVECTOR; }
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
"__alignof__" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__alignof__" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_ALIGNOF; }
|
{ loc(); return TOK_ALIGNOF; }
|
||||||
else
|
else
|
||||||
|
@ -650,7 +650,7 @@ void ansi_c_scanner_init()
|
||||||
// http://msdn.microsoft.com/en-us/library/45t0s5f4%28v=vs.71%29.aspx
|
// http://msdn.microsoft.com/en-us/library/45t0s5f4%28v=vs.71%29.aspx
|
||||||
if(PARSER.mode==configt::ansi_ct::flavourt::VISUAL_STUDIO ||
|
if(PARSER.mode==configt::ansi_ct::flavourt::VISUAL_STUDIO ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_ALIGNOF; }
|
{ loc(); return TOK_ALIGNOF; }
|
||||||
else
|
else
|
||||||
|
@ -689,7 +689,7 @@ void ansi_c_scanner_init()
|
||||||
}
|
}
|
||||||
|
|
||||||
"asm" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"asm" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::CODEWARRIOR)
|
PARSER.mode==configt::ansi_ct::flavourt::CODEWARRIOR)
|
||||||
{
|
{
|
||||||
if(PARSER.cpp98)
|
if(PARSER.cpp98)
|
||||||
|
@ -705,7 +705,7 @@ void ansi_c_scanner_init()
|
||||||
}
|
}
|
||||||
|
|
||||||
"__asm__" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__asm__" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::CODEWARRIOR ||
|
PARSER.mode==configt::ansi_ct::flavourt::CODEWARRIOR ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{
|
{
|
||||||
|
@ -817,7 +817,7 @@ xor_eq { return cpp98_keyword(TOK_XORASSIGN); }
|
||||||
|
|
||||||
__decltype { if(PARSER.cpp98 &&
|
__decltype { if(PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE))
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG))
|
||||||
return cpp98_keyword(TOK_DECLTYPE);
|
return cpp98_keyword(TOK_DECLTYPE);
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
|
@ -885,28 +885,28 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
}
|
}
|
||||||
|
|
||||||
"__char16_t" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__char16_t" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE)
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG)
|
||||||
return cpp98_keyword(TOK_CHAR16_T); // GNU extension
|
return cpp98_keyword(TOK_CHAR16_T); // GNU extension
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
"__nullptr" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__nullptr" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE)
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG)
|
||||||
return cpp98_keyword(TOK_NULLPTR); // GNU extension
|
return cpp98_keyword(TOK_NULLPTR); // GNU extension
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
"__null" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__null" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE)
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG)
|
||||||
return cpp98_keyword(TOK_NULLPTR); // GNU extension
|
return cpp98_keyword(TOK_NULLPTR); // GNU extension
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
"__char32_t" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__char32_t" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE)
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG)
|
||||||
return cpp98_keyword(TOK_CHAR32_T); // GNU extension
|
return cpp98_keyword(TOK_CHAR32_T); // GNU extension
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
|
@ -944,7 +944,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"__attribute__" |
|
"__attribute__" |
|
||||||
"__attribute" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__attribute" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::CODEWARRIOR ||
|
PARSER.mode==configt::ansi_ct::flavourt::CODEWARRIOR ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{
|
{
|
||||||
|
@ -1119,7 +1119,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"typeof" { if(PARSER.cpp98 ||
|
"typeof" { if(PARSER.cpp98 ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::CODEWARRIOR ||
|
PARSER.mode==configt::ansi_ct::flavourt::CODEWARRIOR ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_TYPEOF; }
|
{ loc(); return TOK_TYPEOF; }
|
||||||
|
@ -1127,7 +1127,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
}
|
}
|
||||||
"__typeof" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__typeof" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_TYPEOF; }
|
{ loc(); return TOK_TYPEOF; }
|
||||||
else
|
else
|
||||||
|
@ -1154,7 +1154,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
"__inline__" { loc(); return TOK_INLINE; }
|
"__inline__" { loc(); return TOK_INLINE; }
|
||||||
|
|
||||||
"__label__" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__label__" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_GCC_LABEL; }
|
{ loc(); return TOK_GCC_LABEL; }
|
||||||
else
|
else
|
||||||
|
@ -1253,7 +1253,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
}
|
}
|
||||||
|
|
||||||
"__thread" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
"__thread" { if(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
PARSER.mode==configt::ansi_ct::flavourt::ARM)
|
||||||
{ loc(); return TOK_THREAD_LOCAL; }
|
{ loc(); return TOK_THREAD_LOCAL; }
|
||||||
else
|
else
|
||||||
|
@ -1264,7 +1264,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"_Alignas" { if(!PARSER.cpp98 &&
|
"_Alignas" { if(!PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
||||||
{ loc(); return TOK_ALIGNAS; }
|
{ loc(); return TOK_ALIGNAS; }
|
||||||
else
|
else
|
||||||
|
@ -1275,7 +1275,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"_Alignof" { if(!PARSER.cpp98 &&
|
"_Alignof" { if(!PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM ||
|
PARSER.mode==configt::ansi_ct::flavourt::ARM ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::VISUAL_STUDIO))
|
PARSER.mode==configt::ansi_ct::flavourt::VISUAL_STUDIO))
|
||||||
{ loc(); return TOK_ALIGNOF; }
|
{ loc(); return TOK_ALIGNOF; }
|
||||||
|
@ -1297,7 +1297,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
if(!PARSER.cpp98 &&
|
if(!PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
||||||
{ loc(); return TOK_ATOMIC_TYPE_SPECIFIER; }
|
{ loc(); return TOK_ATOMIC_TYPE_SPECIFIER; }
|
||||||
else
|
else
|
||||||
|
@ -1306,7 +1306,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"_Atomic" { if(!PARSER.cpp98 &&
|
"_Atomic" { if(!PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
||||||
{ loc(); return TOK_ATOMIC_TYPE_QUALIFIER; }
|
{ loc(); return TOK_ATOMIC_TYPE_QUALIFIER; }
|
||||||
else
|
else
|
||||||
|
@ -1317,7 +1317,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"_Generic" { if(!PARSER.cpp98 &&
|
"_Generic" { if(!PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
||||||
{ loc(); return TOK_GENERIC; }
|
{ loc(); return TOK_GENERIC; }
|
||||||
else
|
else
|
||||||
|
@ -1328,7 +1328,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"_Imaginary" { if(!PARSER.cpp98 &&
|
"_Imaginary" { if(!PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
||||||
{ loc(); return TOK_IMAGINARY; }
|
{ loc(); return TOK_IMAGINARY; }
|
||||||
else
|
else
|
||||||
|
@ -1339,7 +1339,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"_Noreturn" { if(!PARSER.cpp98 &&
|
"_Noreturn" { if(!PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
||||||
{ loc(); return TOK_NORETURN; }
|
{ loc(); return TOK_NORETURN; }
|
||||||
else
|
else
|
||||||
|
@ -1350,7 +1350,7 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"_Static_assert" { if(!PARSER.cpp98 &&
|
"_Static_assert" { if(!PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
||||||
{ loc(); return TOK_STATIC_ASSERT; }
|
{ loc(); return TOK_STATIC_ASSERT; }
|
||||||
else
|
else
|
||||||
|
@ -1361,24 +1361,24 @@ __decltype { if(PARSER.cpp98 &&
|
||||||
|
|
||||||
"_Thread_local" { if(!PARSER.cpp98 &&
|
"_Thread_local" { if(!PARSER.cpp98 &&
|
||||||
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
(PARSER.mode==configt::ansi_ct::flavourt::GCC ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::APPLE ||
|
PARSER.mode==configt::ansi_ct::flavourt::CLANG ||
|
||||||
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
PARSER.mode==configt::ansi_ct::flavourt::ARM))
|
||||||
{ loc(); return TOK_THREAD_LOCAL; }
|
{ loc(); return TOK_THREAD_LOCAL; }
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is an Apple clang extension */
|
/* This is a clang extension */
|
||||||
|
|
||||||
"_Nullable" { if(PARSER.mode==configt::ansi_ct::flavourt::APPLE)
|
"_Nullable" { if(PARSER.mode==configt::ansi_ct::flavourt::CLANG)
|
||||||
{ /* ignore */ }
|
{ /* ignore */ }
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is an Apple clang extension */
|
/* This is a clang extension */
|
||||||
|
|
||||||
"_Nonnull" { if(PARSER.mode==configt::ansi_ct::flavourt::APPLE)
|
"_Nonnull" { if(PARSER.mode==configt::ansi_ct::flavourt::CLANG)
|
||||||
{ /* ignore */ }
|
{ /* ignore */ }
|
||||||
else
|
else
|
||||||
return make_identifier();
|
return make_identifier();
|
||||||
|
|
|
@ -115,9 +115,10 @@ void cpp_internal_additions(std::ostream &out)
|
||||||
out << "void " INITIALIZE_FUNCTION "();" << '\n';
|
out << "void " INITIALIZE_FUNCTION "();" << '\n';
|
||||||
|
|
||||||
// GCC junk stuff, also for CLANG and ARM
|
// GCC junk stuff, also for CLANG and ARM
|
||||||
if(config.ansi_c.mode==configt::ansi_ct::flavourt::GCC ||
|
if(
|
||||||
config.ansi_c.mode==configt::ansi_ct::flavourt::APPLE ||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::GCC ||
|
||||||
config.ansi_c.mode==configt::ansi_ct::flavourt::ARM)
|
config.ansi_c.mode == configt::ansi_ct::flavourt::CLANG ||
|
||||||
|
config.ansi_c.mode == configt::ansi_ct::flavourt::ARM)
|
||||||
{
|
{
|
||||||
out << c2cpp(gcc_builtin_headers_types);
|
out << c2cpp(gcc_builtin_headers_types);
|
||||||
|
|
||||||
|
@ -126,7 +127,7 @@ void cpp_internal_additions(std::ostream &out)
|
||||||
config.ansi_c.arch == "x32")
|
config.ansi_c.arch == "x32")
|
||||||
{
|
{
|
||||||
// clang doesn't do __float128
|
// clang doesn't do __float128
|
||||||
if(config.ansi_c.mode == configt::ansi_ct::flavourt::APPLE)
|
if(config.ansi_c.mode == configt::ansi_ct::flavourt::CLANG)
|
||||||
out << "typedef double __float128;" << '\n';
|
out << "typedef double __float128;" << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -564,7 +564,7 @@ int gcc_modet::doit()
|
||||||
debug() << "Enabling Visual Studio syntax" << eom;
|
debug() << "Enabling Visual Studio syntax" << eom;
|
||||||
}
|
}
|
||||||
else if(config.this_operating_system()=="macos")
|
else if(config.this_operating_system()=="macos")
|
||||||
config.ansi_c.mode=configt::ansi_ct::flavourt::APPLE;
|
config.ansi_c.mode = configt::ansi_ct::flavourt::CLANG;
|
||||||
else
|
else
|
||||||
config.ansi_c.mode=configt::ansi_ct::flavourt::GCC;
|
config.ansi_c.mode=configt::ansi_ct::flavourt::GCC;
|
||||||
|
|
||||||
|
|
|
@ -155,11 +155,11 @@ void configt::ansi_ct::set_arch_spec_i386()
|
||||||
switch(mode)
|
switch(mode)
|
||||||
{
|
{
|
||||||
case flavourt::GCC:
|
case flavourt::GCC:
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
defines.push_back("i386");
|
defines.push_back("i386");
|
||||||
defines.push_back("__i386");
|
defines.push_back("__i386");
|
||||||
defines.push_back("__i386__");
|
defines.push_back("__i386__");
|
||||||
if(mode==flavourt::APPLE)
|
if(mode == flavourt::CLANG)
|
||||||
defines.push_back("__LITTLE_ENDIAN__");
|
defines.push_back("__LITTLE_ENDIAN__");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -188,14 +188,15 @@ void configt::ansi_ct::set_arch_spec_x86_64()
|
||||||
switch(mode)
|
switch(mode)
|
||||||
{
|
{
|
||||||
case flavourt::GCC:
|
case flavourt::GCC:
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
defines.push_back("__LP64__");
|
defines.push_back("__LP64__");
|
||||||
defines.push_back("__x86_64");
|
defines.push_back("__x86_64");
|
||||||
defines.push_back("__x86_64__");
|
defines.push_back("__x86_64__");
|
||||||
defines.push_back("_LP64");
|
defines.push_back("_LP64");
|
||||||
defines.push_back("__amd64__");
|
defines.push_back("__amd64__");
|
||||||
defines.push_back("__amd64");
|
defines.push_back("__amd64");
|
||||||
if(mode==flavourt::APPLE)
|
|
||||||
|
if(os == ost::OS_MACOS)
|
||||||
defines.push_back("__LITTLE_ENDIAN__");
|
defines.push_back("__LITTLE_ENDIAN__");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -233,13 +234,13 @@ void configt::ansi_ct::set_arch_spec_power(const irep_idt &subarch)
|
||||||
switch(mode)
|
switch(mode)
|
||||||
{
|
{
|
||||||
case flavourt::GCC:
|
case flavourt::GCC:
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
defines.push_back("__powerpc");
|
defines.push_back("__powerpc");
|
||||||
defines.push_back("__powerpc__");
|
defines.push_back("__powerpc__");
|
||||||
defines.push_back("__POWERPC__");
|
defines.push_back("__POWERPC__");
|
||||||
defines.push_back("__ppc__");
|
defines.push_back("__ppc__");
|
||||||
|
|
||||||
if(mode==flavourt::APPLE)
|
if(os == ost::OS_MACOS)
|
||||||
defines.push_back("__BIG_ENDIAN__");
|
defines.push_back("__BIG_ENDIAN__");
|
||||||
|
|
||||||
if(subarch!="powerpc")
|
if(subarch!="powerpc")
|
||||||
|
@ -295,7 +296,7 @@ void configt::ansi_ct::set_arch_spec_arm(const irep_idt &subarch)
|
||||||
switch(mode)
|
switch(mode)
|
||||||
{
|
{
|
||||||
case flavourt::GCC:
|
case flavourt::GCC:
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
if(subarch=="arm64")
|
if(subarch=="arm64")
|
||||||
defines.push_back("__aarch64__");
|
defines.push_back("__aarch64__");
|
||||||
else
|
else
|
||||||
|
@ -336,7 +337,7 @@ void configt::ansi_ct::set_arch_spec_alpha()
|
||||||
defines.push_back("_M_ALPHA");
|
defines.push_back("_M_ALPHA");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
case flavourt::CODEWARRIOR:
|
case flavourt::CODEWARRIOR:
|
||||||
case flavourt::ARM:
|
case flavourt::ARM:
|
||||||
case flavourt::ANSI:
|
case flavourt::ANSI:
|
||||||
|
@ -386,7 +387,7 @@ void configt::ansi_ct::set_arch_spec_mips(const irep_idt &subarch)
|
||||||
UNREACHABLE; // not supported by Visual Studio
|
UNREACHABLE; // not supported by Visual Studio
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
case flavourt::CODEWARRIOR:
|
case flavourt::CODEWARRIOR:
|
||||||
case flavourt::ARM:
|
case flavourt::ARM:
|
||||||
case flavourt::ANSI:
|
case flavourt::ANSI:
|
||||||
|
@ -415,7 +416,7 @@ void configt::ansi_ct::set_arch_spec_s390()
|
||||||
UNREACHABLE; // not supported by Visual Studio
|
UNREACHABLE; // not supported by Visual Studio
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
case flavourt::CODEWARRIOR:
|
case flavourt::CODEWARRIOR:
|
||||||
case flavourt::ARM:
|
case flavourt::ARM:
|
||||||
case flavourt::ANSI:
|
case flavourt::ANSI:
|
||||||
|
@ -443,7 +444,7 @@ void configt::ansi_ct::set_arch_spec_s390x()
|
||||||
UNREACHABLE; // not supported by Visual Studio
|
UNREACHABLE; // not supported by Visual Studio
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
case flavourt::CODEWARRIOR:
|
case flavourt::CODEWARRIOR:
|
||||||
case flavourt::ARM:
|
case flavourt::ARM:
|
||||||
case flavourt::ANSI:
|
case flavourt::ANSI:
|
||||||
|
@ -483,7 +484,7 @@ void configt::ansi_ct::set_arch_spec_sparc(const irep_idt &subarch)
|
||||||
UNREACHABLE; // not supported by Visual Studio
|
UNREACHABLE; // not supported by Visual Studio
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
case flavourt::CODEWARRIOR:
|
case flavourt::CODEWARRIOR:
|
||||||
case flavourt::ARM:
|
case flavourt::ARM:
|
||||||
case flavourt::ANSI:
|
case flavourt::ANSI:
|
||||||
|
@ -514,7 +515,7 @@ void configt::ansi_ct::set_arch_spec_ia64()
|
||||||
defines.push_back("_M_IA64");
|
defines.push_back("_M_IA64");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
case flavourt::CODEWARRIOR:
|
case flavourt::CODEWARRIOR:
|
||||||
case flavourt::ARM:
|
case flavourt::ARM:
|
||||||
case flavourt::ANSI:
|
case flavourt::ANSI:
|
||||||
|
@ -549,7 +550,7 @@ void configt::ansi_ct::set_arch_spec_x32()
|
||||||
UNREACHABLE; // not supported by Visual Studio
|
UNREACHABLE; // not supported by Visual Studio
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
case flavourt::CODEWARRIOR:
|
case flavourt::CODEWARRIOR:
|
||||||
case flavourt::ARM:
|
case flavourt::ARM:
|
||||||
case flavourt::ANSI:
|
case flavourt::ANSI:
|
||||||
|
@ -603,7 +604,7 @@ void configt::ansi_ct::set_arch_spec_hppa()
|
||||||
UNREACHABLE; // not supported by Visual Studio
|
UNREACHABLE; // not supported by Visual Studio
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
case flavourt::CODEWARRIOR:
|
case flavourt::CODEWARRIOR:
|
||||||
case flavourt::ARM:
|
case flavourt::ARM:
|
||||||
case flavourt::ANSI:
|
case flavourt::ANSI:
|
||||||
|
@ -633,7 +634,7 @@ void configt::ansi_ct::set_arch_spec_sh4()
|
||||||
UNREACHABLE; // not supported by Visual Studio
|
UNREACHABLE; // not supported by Visual Studio
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case flavourt::APPLE:
|
case flavourt::CLANG:
|
||||||
case flavourt::CODEWARRIOR:
|
case flavourt::CODEWARRIOR:
|
||||||
case flavourt::ARM:
|
case flavourt::ARM:
|
||||||
case flavourt::ANSI:
|
case flavourt::ANSI:
|
||||||
|
@ -890,7 +891,7 @@ bool configt::set(const cmdlinet &cmdline)
|
||||||
{
|
{
|
||||||
ansi_c.lib=configt::ansi_ct::libt::LIB_FULL;
|
ansi_c.lib=configt::ansi_ct::libt::LIB_FULL;
|
||||||
ansi_c.os=configt::ansi_ct::ost::OS_MACOS;
|
ansi_c.os=configt::ansi_ct::ost::OS_MACOS;
|
||||||
ansi_c.mode=ansi_ct::flavourt::APPLE;
|
ansi_c.mode = ansi_ct::flavourt::CLANG;
|
||||||
ansi_c.preprocessor=ansi_ct::preprocessort::CLANG;
|
ansi_c.preprocessor=ansi_ct::preprocessort::CLANG;
|
||||||
}
|
}
|
||||||
else if(os=="linux" || os=="solaris")
|
else if(os=="linux" || os=="solaris")
|
||||||
|
|
|
@ -101,8 +101,16 @@ public:
|
||||||
void set_arch_spec_hppa();
|
void set_arch_spec_hppa();
|
||||||
void set_arch_spec_sh4();
|
void set_arch_spec_sh4();
|
||||||
|
|
||||||
enum class flavourt { NONE, ANSI, GCC, ARM, APPLE,
|
enum class flavourt
|
||||||
VISUAL_STUDIO, CODEWARRIOR };
|
{
|
||||||
|
NONE,
|
||||||
|
ANSI,
|
||||||
|
GCC,
|
||||||
|
ARM,
|
||||||
|
CLANG,
|
||||||
|
VISUAL_STUDIO,
|
||||||
|
CODEWARRIOR
|
||||||
|
};
|
||||||
flavourt mode; // the syntax of source files
|
flavourt mode; // the syntax of source files
|
||||||
|
|
||||||
enum class preprocessort { NONE, GCC, CLANG, VISUAL_STUDIO,
|
enum class preprocessort { NONE, GCC, CLANG, VISUAL_STUDIO,
|
||||||
|
|
Loading…
Reference in New Issue