/* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
-** All rights reserved.
-**
-** Authors: Martin Trapp, Christian Schaefer
-**
-** declarations of an ir node
+* All rights reserved.
+*
+* Authors: Martin Trapp, Christian Schaefer
+*
+* declarations of an ir node
*/
/* $Id$ */
# include "irnode.h"
# include "xprintf.h"
# include "irop_t.h"
-# include "common_t.h"
+# include "firm_common_t.h"
# include "irdom_t.h" /* For size of struct dom_info. */
# include "dbginfo.h"
ir_node ** in_cg; /* array with predecessors in
* interprocedural_view, if they differ
* from intraprocedural predecessors */
+ int *backedge; /* Field n set to true if pred n is backedge.
+ @@@ Ev. replace by bitfield! */
+ int *cg_backedge; /* Field n set to true if pred n is interprocedural backedge.
+ @@@ Ev. replace by bitfield! */
} block_attr;
/* Cond attributes */
typedef struct {
long proj; /* contains the result position to project (Proj) */
ir_node ** in_cg; /* array with interprocedural predecessors (Phi) */
+ int *backedge; /* Field n set to true if pred n is backedge.
+ @@@ Ev. replace by bitfield! */
} filter_attr;
/* EndReg/EndExcept attributes */
call_attr call; /* For Call: pointer to the type of the method to call */
callbegin_attr callbegin; /* For CallBegin */
alloc_attr a; /* For Alloc. */
- io_attr io; /* For InstOf */
+ io_attr io; /* For InstOf */
type *f; /* For Free. */
int phi0_pos; /* For Phi. Used to remember the value defined by
this Phi node. Needed when the Phi is completed
predecessors. If this attribute is set, the Phi
node takes the role of the obsolete Phi0 node,
therefore the name. */
- long proj; /* For Proj: contains the result position to project */
+ int *phi_backedge; /* For Phi after construction.
+ Field n set to true if pred n is backedge.
+ @@@ Ev. replace by bitfield! */
+ long proj; /* For Proj: contains the result position to project */
filter_attr filter; /* For Filter */
end_attr end; /* For EndReg, EndExcept */
#if PRECISE_EXC_CONTEXT
shall replace a node. */
/** Fields for optimizations / analysis information **/
struct ir_node **out; /* array of out edges */
- struct dbg_info* dbi; /* A pointer to information for debug support. */
+ struct dbg_info* dbi; /* A pointer to information for debug support. */
/** For debugging **/
#ifdef DEBUG_libfirm
int node_nr; /* a unique node number for each node to make output