/*
- * Copyright (C) 2012
+ * Copyright (C) 2012, 2013
* Wolfgang Bumiller
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
*/
#ifndef GMQCC_IR_HDR
#define GMQCC_IR_HDR
-
+#include "gmqcc.h"
/* ir_value */
typedef struct
int outtype;
/* 'const' vs 'var' qualifier */
int cvq;
+ uint32_t flags;
struct ir_instr_s **reads;
struct ir_instr_s **writes;
ir_value **living;
/* For the temp-allocation */
+ size_t entry_id;
size_t eid;
bool is_return;
size_t run_id;
#define IR_FLAG_HAS_ARRAYS (1<<1)
#define IR_FLAG_HAS_UNINITIALIZED (1<<2)
#define IR_FLAG_HAS_GOTO (1<<3)
+#define IR_FLAG_INCLUDE_DEF (1<<4)
#define IR_FLAG_MASK_NO_OVERLAP (IR_FLAG_HAS_ARRAYS | IR_FLAG_HAS_UNINITIALIZED)
ir_function* ir_function_new(struct ir_builder_s *owner, int returntype);
const char **filenames;
qcint *filestrings;
/* we cache the #IMMEDIATE string here */
- qcint str_immediate;
+ qcint str_immediate;
+ /* there should just be this one nil */
+ ir_value *nil;
} ir_builder;
ir_builder* ir_builder_new(const char *modulename);