* File name: ir/ir/irop.c
* Purpose: Representation of opcode of intermediate operation.
* Author: Christian Schaefer
- * Modified by: Goetz Lindenmaier
+ * Modified by: Goetz Lindenmaier, Michael Beck
* Created:
* CVS-ID: $Id$
- * Copyright: (c) 1998-2003 Universität Karlsruhe
+ * Copyright: (c) 1998-2006 Universität Karlsruhe
* Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
*/
# include <string.h>
#endif
-# include "irop_t.h"
-# include "irnode_t.h"
-# include "irhooks.h"
+#include "irop_t.h"
+#include "irnode_t.h"
+#include "irhooks.h"
-# include "iropt_t.h" /* for firm_set_default_operations */
-# include "irvrfy_t.h"
-# include "reassoc_t.h"
+#include "iropt_t.h" /* for firm_set_default_operations */
+#include "irvrfy_t.h"
+#include "reassoc_t.h"
-# include "xmalloc.h"
+#include "xmalloc.h"
/** the available next opcode */
static unsigned next_iro = iro_MaxOpcode;
#define H irop_flag_highlevel
#define c irop_flag_constlike
#define K irop_flag_keep
+#define S irop_flag_start_block
+ /* Caution: A great deal of Firm optimizations depend an right operations flags. */
op_Block = new_ir_op(iro_Block, "Block", op_pin_state_pinned, L, oparity_variable, -1, sizeof(block_attr), NULL);
op_Start = new_ir_op(iro_Start, "Start", op_pin_state_pinned, X, oparity_zero, -1, 0, NULL);
op_Cond = new_ir_op(iro_Cond, "Cond", op_pin_state_pinned, X|Y, oparity_any, -1, sizeof(cond_attr), NULL);
op_Return = new_ir_op(iro_Return, "Return", op_pin_state_pinned, X, oparity_zero, -1, 0, NULL);
- op_Const = new_ir_op(iro_Const, "Const", op_pin_state_floats, c, oparity_zero, -1, sizeof(const_attr), NULL);
- op_SymConst = new_ir_op(iro_SymConst, "SymConst", op_pin_state_floats, c, oparity_zero, -1, sizeof(symconst_attr), NULL);
+ op_Const = new_ir_op(iro_Const, "Const", op_pin_state_floats, c|S, oparity_zero, -1, sizeof(const_attr), NULL);
+ op_SymConst = new_ir_op(iro_SymConst, "SymConst", op_pin_state_floats, c|S, oparity_zero, -1, sizeof(symconst_attr), NULL);
op_Sel = new_ir_op(iro_Sel, "Sel", op_pin_state_floats, H, oparity_any, -1, sizeof(sel_attr), NULL);
op_Proj = new_ir_op(iro_Proj, "Proj", op_pin_state_floats, N, oparity_any, -1, sizeof(long), NULL);
op_Tuple = new_ir_op(iro_Tuple, "Tuple", op_pin_state_floats, L, oparity_variable, -1, 0, NULL);
op_Id = new_ir_op(iro_Id, "Id", op_pin_state_floats, N, oparity_any, -1, 0, NULL);
- op_Bad = new_ir_op(iro_Bad, "Bad", op_pin_state_pinned, X|F, oparity_zero, -1, 0, NULL);
- op_Confirm = new_ir_op(iro_Confirm, "Confirm", op_pin_state_floats, H, oparity_any, -1, sizeof(confirm_attr), NULL);
+ op_Bad = new_ir_op(iro_Bad, "Bad", op_pin_state_pinned, X|F|S, oparity_zero, -1, 0, NULL);
+ op_Confirm = new_ir_op(iro_Confirm, "Confirm", op_pin_state_pinned, H, oparity_any, -1, sizeof(confirm_attr), NULL);
- op_Unknown = new_ir_op(iro_Unknown, "Unknown", op_pin_state_pinned, X|F, oparity_zero, -1, 0, NULL);
+ op_Unknown = new_ir_op(iro_Unknown, "Unknown", op_pin_state_pinned, X|F|S, oparity_zero, -1, 0, NULL);
op_Filter = new_ir_op(iro_Filter, "Filter", op_pin_state_pinned, N, oparity_variable, -1, sizeof(filter_attr), NULL);
op_Break = new_ir_op(iro_Break, "Break", op_pin_state_pinned, X, oparity_zero, -1, 0, NULL);
op_CallBegin = new_ir_op(iro_CallBegin, "CallBegin", op_pin_state_pinned, X|I, oparity_any, -1, sizeof(callbegin_attr), NULL);
op_Pin = new_ir_op(iro_Pin, "Pin", op_pin_state_pinned, H, oparity_unary, -1, 0, NULL);
+#undef S
#undef H
#undef Y
#undef F