rename APPLE flavor to CLANG

This commit is contained in:
Daniel Kroening 2018-07-28 14:55:38 +01:00
parent f33459fe7c
commit 3849bb0f20
9 changed files with 85 additions and 72 deletions

View File

@ -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

View File

@ -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)
{ {

View File

@ -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);

View File

@ -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))
{ {

View File

@ -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();

View File

@ -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';
} }

View File

@ -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;

View File

@ -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")

View File

@ -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,