# include "exc.h"
+#include "set.h"
+#include "entity_t.h"
+#include "type_t.h"
+
/** ir node attributes **/
/** Block attributes */
type *tp; /**< the source type, for analyses. default: type_unknown. */
} const_attr;
-/** SymConst attributes
- This union contains the symbolic information represented by the node */
-typedef union type_or_id {
- type *typ;
- ident *ptrinfo;
-} type_or_id;
-
typedef struct {
- type_or_id tori;
+ symconst_symbol sym; // old tori
symconst_kind num;
+ type *tp; /**< the source type, for analyses. default: type_unknown. */
} symconst_attr;
/** Sel attributes */
callbegin_attr callbegin; /**< For CallBegin */
alloc_attr a; /**< For Alloc. */
io_attr io; /**< For InstOf */
- type *f; /**< For Free. */
+ type *f; /**< For Free. */
cast_attr cast; /**< For Cast. */
int phi0_pos; /**< For Phi. Used to remember the value defined by
this Phi node. Needed when the Phi is completed
#endif
/* ------- For analyses -------- */
ir_loop *loop; /**< the loop the node is in. Access routines in irloop.h */
+#ifdef DO_HEAPANALYSIS
+ struct abstval *av;
+ struct section *sec;
+#endif
/* ------- Opcode depending fields -------- */
attr attr; /**< attribute of this node. Depends on opcode.
Must be last field of struct ir_node. */
*/
static INLINE ir_node *
__get_irn_intra_n (ir_node *node, int n) {
- return (node->in[n + 1] = skip_nop(node->in[n + 1]));
+ return (node->in[n + 1] = skip_Id(node->in[n + 1]));
}
/**
/* handle Filter and Block specially */
if (__get_irn_opcode(node) == iro_Filter) {
assert(node->attr.filter.in_cg);
- return (node->attr.filter.in_cg[n + 1] = skip_nop(node->attr.filter.in_cg[n + 1]));
+ return (node->attr.filter.in_cg[n + 1] = skip_Id(node->attr.filter.in_cg[n + 1]));
} else if (__get_irn_opcode(node) == iro_Block && node->attr.block.in_cg) {
- return (node->attr.block.in_cg[n + 1] = skip_nop(node->attr.block.in_cg[n + 1]));
+ return (node->attr.block.in_cg[n + 1] = skip_Id(node->attr.block.in_cg[n + 1]));
}
return __get_irn_intra_n (node, n);