res->typeinfo_state = ir_typeinfo_none;
set_irp_typeinfo_inconsistent(); /* there is a new graph with typeinfo_none. */
res->loopinfo_state = loopinfo_none;
+ res->class_cast_state = ir_class_casts_transitive;
/*-- Type information for the procedure of the graph --*/
res->ent = ent;
#include "irprog.h"
#include "pseudo_irg.h"
#include "type_t.h"
+#include "tr_inheritance.h"
#include "irloop.h"
#include "execution_frequency.h"
irg_inline_property inline_property; /**< How to handle inlineing. */
irg_loopinfo_state loopinfo_state; /**< state of loop information */
exec_freq_state execfreq_state; /**< state of execution freqency information */
+ ir_class_cast_state class_cast_state; /**< kind of cast operations in code. */
/* -- Fields for construction -- */
#if USE_EXPLICIT_PHI_IN_STACK
static INLINE void
_set_irg_outs_inconsistent(ir_graph *irg) {
- irg->outs_state = outs_inconsistent;
+ if (irg->outs_state == outs_consistent)
+ irg->outs_state = outs_inconsistent;
}
static INLINE irg_dom_state
/**
* A Cast may be removed if the type of the previous node
- * is already to type of the Cast.
+ * is already the type of the Cast.
*/
static ir_node *equivalent_node_Cast(ir_node *n) {
ir_node *pred = get_Cast_op(n);
res->outs_state = outs_none;
res->ip_outedges = NULL;
res->trouts_state = outs_none;
+ res->class_cast_state = ir_class_casts_transitive;
return res;
}
irp_temperature_state temperature_state; /**< accumulated temperatures computed? */
exec_freq_state execfreq_state; /**< State of execution freqency information */
loop_nesting_depth_state lnd_state; /**< State of loop nesting depth information. */
+ ir_class_cast_state class_cast_state; /**< kind of cast operations in code. */
+
#ifdef DEBUG_libfirm
long max_node_nr; /**< to generate unique numbers for nodes. */
#endif