return (dbg_info*) pos;
}
-static ir_mode *_atomic_modes[ATOMIC_TYPE_LAST+1];
+static ir_mode *atomic_modes[ATOMIC_TYPE_LAST+1];
static ir_mode *mode_int, *mode_uint;
static void init_atomic_modes(void)
{
for (int i = 0; i <= ATOMIC_TYPE_LAST; ++i) {
- _atomic_modes[i] = init_atomic_ir_mode((atomic_type_kind_t) i);
+ atomic_modes[i] = init_atomic_ir_mode((atomic_type_kind_t) i);
}
- mode_int = _atomic_modes[ATOMIC_TYPE_INT];
- mode_uint = _atomic_modes[ATOMIC_TYPE_UINT];
+ mode_int = atomic_modes[ATOMIC_TYPE_INT];
+ mode_uint = atomic_modes[ATOMIC_TYPE_UINT];
/* there's no real void type in firm */
- _atomic_modes[ATOMIC_TYPE_VOID] = mode_int;
+ atomic_modes[ATOMIC_TYPE_VOID] = mode_int;
/* initialize pointer modes */
char name[64];
ir_mode *ptr_mode = new_ir_mode(name, sort, bit_size, is_signed, arithmetic,
modulo_shift);
- set_reference_mode_signed_eq(ptr_mode, _atomic_modes[get_intptr_kind()]);
- set_reference_mode_unsigned_eq(ptr_mode, _atomic_modes[get_uintptr_kind()]);
+ set_reference_mode_signed_eq(ptr_mode, atomic_modes[get_intptr_kind()]);
+ set_reference_mode_unsigned_eq(ptr_mode, atomic_modes[get_uintptr_kind()]);
/* Hmm, pointers should be machine size */
set_modeP_data(ptr_mode);
set_modeP_code(ptr_mode);
}
+ir_mode *get_atomic_mode(atomic_type_kind_t kind)
+{
+ assert(kind <= ATOMIC_TYPE_LAST);
+ return atomic_modes[kind];
+}
+
static unsigned get_compound_type_size(compound_type_t *type)
{
ir_type *irtype = get_ir_type((type_t*) type);
static ir_type *create_atomic_type(const atomic_type_t *type)
{
atomic_type_kind_t kind = type->akind;
- ir_mode *mode = _atomic_modes[kind];
+ ir_mode *mode = atomic_modes[kind];
ident *id = get_mode_ident(mode);
ir_type *irtype = new_type_primitive(id, mode);
static ir_type *create_complex_type(const complex_type_t *type)
{
atomic_type_kind_t kind = type->akind;
- ir_mode *mode = _atomic_modes[kind];
+ ir_mode *mode = atomic_modes[kind];
ident *id = get_mode_ident(mode);
(void) id;
static ir_type *create_imaginary_type(const imaginary_type_t *type)
{
atomic_type_kind_t kind = type->akind;
- ir_mode *mode = _atomic_modes[kind];
+ ir_mode *mode = atomic_modes[kind];
ident *id = get_mode_ident(mode);
ir_type *irtype = new_type_primitive(id, mode);
#include "firm_codegen.h"
#include "firm_cmdline.h"
#include "firm_timing.h"
+#include "ast2firm.h"
#ifdef _WIN32
#define snprintf _snprintf
{
int i;
- /* do class lowering and vtbl creation */
-// lower_classes_to_struct("vtbl", "m");
-
-#if 0
- timer_push(TV_LOWER);
- lower_highlevel();
- timer_pop();
-#endif
-
if (firm_opt.lower_ll) {
lwrdw_param_t init = {
1,
1,
- mode_Ls, mode_Lu,
- mode_Is, mode_Iu,
+ get_atomic_mode(ATOMIC_TYPE_LONGLONG),
+ get_atomic_mode(ATOMIC_TYPE_ULONGLONG),
+ get_atomic_mode(ATOMIC_TYPE_INT),
+ get_atomic_mode(ATOMIC_TYPE_UINT),
def_create_intrinsic_fkt,
NULL
};