return __get_irn_link(node);
}
+op_pin_state
+(get_irn_pinned)(const ir_node *node) {
+ return __get_irn_pinned(node);
+}
+
+void set_irn_pinned(ir_node *node, op_pin_state state) {
+ /* due to optimization an opt may be turned into a Tuple */
+ if (get_irn_op(node) == op_Tuple)
+ return;
+
+ assert(node && get_op_pinned(get_irn_op(node)) == op_pin_state_exc_pinned);
+ assert(state == op_pin_state_pinned || state == op_pin_state_floats);
+
+ node->attr.except.pin_state = state;
+}
#ifdef DO_HEAPANALYSIS
/* Access the abstract interpretation information of a node.
node->attr.block.graph_arr[pos+1] = value;
}
-/* handler handling for Blocks */
-void
-set_Block_handler (ir_node *block, ir_node *handler) {
- assert ((block->op == op_Block));
- assert ((handler->op == op_Block));
-}
-
-ir_node *
-get_Block_handler (ir_node *block) {
- assert ((block->op == op_Block));
- return (NULL);
-}
-
-/* handler handling for Nodes */
-void
-set_Node_handler (ir_node *node, ir_node *handler) {
-
-}
-
-ir_node *
-get_Node_handler (ir_node *node) {
- return (NULL);
-}
-
-/* exc_t handling for Blocks */
-void set_Block_exc (ir_node *block, exc_t exc) {
- assert ((block->op == op_Block));
-}
-
-exc_t get_Block_exc (ir_node *block) {
- assert ((block->op == op_Block));
- return (0);
-}
-
-/* exc_t handling for Nodes */
-void set_Node_exc (ir_node *node, exc_t exc) {
-
-}
-
-exc_t get_Node_exc (ir_node *node) {
- return (0);
-}
-
void set_Block_cg_cfgpred_arr(ir_node * node, int arity, ir_node ** in) {
assert(node->op == op_Block);
if (node->attr.block.in_cg == NULL || arity != ARR_LEN(node->attr.block.in_cg) - 1) {
}
}
+/* Returns true if the operation is a forking control flow operation. */
+int
+is_forking_op(ir_node *node) {
+ return is_op_forking(get_irn_op(node));
+}
+
#ifdef DEBUG_libfirm
void dump_irn (ir_node *n) {
int i, arity = get_irn_arity(n);