21#include "compiler_headers/gcc_builtin_headers_types.inc"
25#include "compiler_headers/gcc_builtin_headers_generic.inc"
29#include "compiler_headers/gcc_builtin_headers_math.inc"
34#include "compiler_headers/gcc_builtin_headers_mem_string.inc"
38#include "compiler_headers/gcc_builtin_headers_omp.inc"
42#include "compiler_headers/gcc_builtin_headers_tm.inc"
46#include "compiler_headers/gcc_builtin_headers_ubsan.inc"
50#include "compiler_headers/gcc_builtin_headers_ia32.inc"
53#include "compiler_headers/gcc_builtin_headers_ia32-2.inc"
56#include "compiler_headers/gcc_builtin_headers_ia32-3.inc"
59#include "compiler_headers/gcc_builtin_headers_ia32-4.inc"
62#include "compiler_headers/gcc_builtin_headers_ia32-5.inc"
65#include "compiler_headers/gcc_builtin_headers_ia32-6.inc"
68#include "compiler_headers/gcc_builtin_headers_ia32-7.inc"
71#include "compiler_headers/gcc_builtin_headers_ia32-8.inc"
74#include "compiler_headers/gcc_builtin_headers_ia32-9.inc"
78#include "compiler_headers/gcc_builtin_headers_alpha.inc"
82#include "compiler_headers/gcc_builtin_headers_arm.inc"
86#include "compiler_headers/gcc_builtin_headers_mips.inc"
90#include "compiler_headers/gcc_builtin_headers_power.inc"
94#include "compiler_headers/arm_builtin_headers.inc"
98#include "compiler_headers/cw_builtin_headers.inc"
102#include "compiler_headers/clang_builtin_headers.inc"
106#include "cprover_builtin_headers.inc"
110#include "compiler_headers/windows_builtin_headers.inc"
115 return std::string(
"const char *" CPROVER_PREFIX "architecture_") +
116 std::string(s) +
"=\"" + value +
"\";\n";
124 std::string(s) +
"=" + std::to_string(value) +
";\n";
132 "#line 1 \"<built-in-additions>\"\n"
155 if(
config.ansi_c.pointer_width==
config.ansi_c.long_int_width)
157 else if(
config.ansi_c.pointer_width==
config.ansi_c.long_long_int_width)
170 "extern " CPROVER_PREFIX "thread_local const char __PRETTY_FUNCTION__["
176 std::to_string(
config.ansi_c.rounding_mode)+
";\n"
182 " short next_avail;\n"
183 " short next_unread;\n"
218 if(support_float16_type)
221 "typedef _Float16 __gcc_v8hf __attribute__((__vector_size__(16)));\n";
223 "typedef _Float16 __gcc_v16hf __attribute__((__vector_size__(32)));\n";
225 "typedef _Float16 __gcc_v32hf __attribute__((__vector_size__(64)));\n";
232 config.ansi_c.arch ==
"i386" ||
config.ansi_c.arch ==
"x86_64" ||
233 config.ansi_c.arch ==
"x32" ||
config.ansi_c.arch ==
"ia64" ||
234 config.ansi_c.arch ==
"powerpc" ||
config.ansi_c.arch ==
"ppc64")
241 config.ansi_c.gcc__float128_type)
246 else if(
config.ansi_c.arch ==
"ppc64le")
252 else if(
config.ansi_c.arch ==
"hppa")
259 config.ansi_c.gcc__float128_type)
261 code+=
"typedef long double __float128;\n";
266 config.ansi_c.arch ==
"i386" ||
config.ansi_c.arch ==
"x86_64" ||
267 config.ansi_c.arch ==
"x32" ||
config.ansi_c.arch ==
"ia64")
277 if(
config.ansi_c.long_int_width>=64)
279 code+=
"typedef signed __int128 __int128_t;\n"
280 "typedef unsigned __int128 __uint128_t;\n";
284 config.ansi_c.arch ==
"arm64" &&
287 code +=
"typedef struct __va_list {";
288 code +=
"void *__stack;";
289 code +=
"void *__gr_top;";
290 code +=
"void *__vr_top;";
291 code +=
"int __gr_offs;";
292 code +=
"int __vr_offs;";
293 code +=
" } __builtin_va_list;\n";
297 code +=
"typedef void ** __builtin_va_list;\n";
303 code +=
"int __assume(int);\n";
323 code +=
"#line 1 \"<builtin-architecture-strings>\"\n";
343 static_cast<int>(
config.ansi_c.argument_evaluation_order),
344 "argument_evaluation_order");
irep_idt rounding_mode_identifier()
Return the identifier of the program symbol used to store the current rounding mode.
const char gcc_builtin_headers_ia32_7[]
static std::string architecture_string(const std::string &value, const char *s)
const char gcc_builtin_headers_types[]
const char cprover_builtin_headers[]
const char gcc_builtin_headers_ia32[]
const char gcc_builtin_headers_ia32_2[]
const char gcc_builtin_headers_ia32_5[]
const char gcc_builtin_headers_ubsan[]
void ansi_c_internal_additions(std::string &code, bool support_float16_type)
const char windows_builtin_headers[]
const char gcc_builtin_headers_ia32_8[]
const char gcc_builtin_headers_mem_string[]
const char gcc_builtin_headers_ia32_4[]
const char gcc_builtin_headers_generic[]
const char gcc_builtin_headers_tm[]
const char gcc_builtin_headers_ia32_9[]
const char cw_builtin_headers[]
const char gcc_builtin_headers_math[]
const char gcc_builtin_headers_arm[]
const char gcc_builtin_headers_ia32_6[]
const char gcc_builtin_headers_mips[]
const char clang_builtin_headers[]
const char gcc_builtin_headers_alpha[]
const char arm_builtin_headers[]
const char gcc_builtin_headers_omp[]
const char gcc_builtin_headers_ia32_3[]
const char gcc_builtin_headers_power[]
void ansi_c_architecture_strings(std::string &code)
std::string c_type_as_string(const irep_idt &c_type)
signedbv_typet signed_size_type()
const std::string & id2string(const irep_idt &d)
const std::string integer2string(const mp_integer &n, unsigned base)
#define INITIALIZE_FUNCTION
static std::string os_to_string(ost)