/*
- * Project: libFIRM
- * File name: ir/ir/ircons.h
- * Purpose: Various irnode constructors. Automatic construction
- * of SSA representation.
- * Author: Martin Trapp, Christian Schaefer
- * Modified by: Goetz Lindenmaier, Boris Boesler, Michael Beck
- * Created:
- * CVS-ID: $Id$
- * Copyright: (c) 1998-2006 Universität Karlsruhe
- * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
+ * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
*/
/**
- @todo
+ * @file
+ * @brief Various irnode constructors. Automatic construction of SSA
+ * representation.
+ * @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Boris Boesler,
+ * Michael Beck
+ * @version $Id$
+ */
+
+/**@todo
Ideas for improvement:
-# Handle construction of exceptions more comfortable:
Add new constructors that pass the exception region (or better the
*/
/**
- * @file ircons.h
+ * @file
*
* documentation no more supported since 2001
*
* ir node construction.
*
- * @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier
- *
* This file documents all datatypes and constructors needed to
* build a FIRM representation of a procedure. The constructors are
* also implemented in this file.
* ir_node *new_Return (ir_node *store, int arity, ir_node **in);
* ir_node *new_Const (ir_mode *mode, tarval *con);
* ir_node *new_SymConst (symconst_symbol value, symconst_kind kind);
- * ir_node *new_simpleSel (ir_node *store, ir_node *objptr, entity *ent);
+ * ir_node *new_simpleSel (ir_node *store, ir_node *objptr, ir_entity *ent);
* ir_node *new_Sel (ir_node *store, ir_node *objptr, int arity,
- * ir_node **in, entity *ent);
+ * ir_node **in, ir_entity *ent);
* ir_node *new_Call (ir_node *store, ir_node *callee, int arity,
* ir_node **in, type_method *type);
* ir_node *new_Add (ir_node *op1, ir_node *op2, ir_mode *mode);
*
* ---------------
*
- * ir_node *new_simpleSel (ir_node *store, ir_node *frame, entity *sel)
- * --------------------------------------------------------------------
+ * ir_node *new_simpleSel (ir_node *store, ir_node *frame, ir_entity *sel)
+ * -----------------------------------------------------------------------
*
*
* Selects an entity from a compound type. This entity can be a field or
*
* ir_node *new_Sel (ir_node *store, ir_node *frame, int arity, ir_node **in,
* --------------------------------------------------------------------------
- * entity *sel)
- * ------------
+ * ir_entity *sel)
+ * ---------------
*
* Selects a field from an array type. The entity has as owner the array, as
* type the arrays element type. The indices to access an array element are
* node.
*
*/
-#ifndef _FIRM_IR_IRCONS_H_
-#define _FIRM_IR_IRCONS_H_
+#ifndef FIRM_IR_IRCONS_H
+#define FIRM_IR_IRCONS_H
#include "firm_common.h"
#include "irnode.h"
* @param *tp The type of the constant.
*/
ir_node *new_rd_Const_type (dbg_info *db, ir_graph *irg, ir_node *block,
- ir_mode *mode, tarval *con, ir_type *tp);
+ ir_mode *mode, tarval *con, ir_type *tp);
/** Constructor for a Const node.
*
* @param *con Points to an entry in the constant table.
*/
ir_node *new_rd_Const (dbg_info *db, ir_graph *irg, ir_node *block,
- ir_mode *mode, tarval *con);
+ ir_mode *mode, tarval *con);
/** Constructor for a SymConst_type node.
*
* @param tp The source type of the constant.
*/
ir_node *new_rd_SymConst_type (dbg_info *db, ir_graph *irg, ir_node *block, union symconst_symbol value,
- symconst_kind symkind, ir_type *tp);
+ symconst_kind symkind, ir_type *tp);
/** Constructor for a SymConst node.
*
* Same as new_rd_SymConst_type, except that it sets the type to type_unknown. */
ir_node *new_rd_SymConst (dbg_info *db, ir_graph *irg, ir_node *block,
- union symconst_symbol value, symconst_kind symkind);
+ union symconst_symbol value, symconst_kind symkind);
/** Constructor for a SymConst addr_ent node.
*
* Same as new_rd_SymConst_type, except that the constructor is tailored for
* symconst_addr_ent.
* Adds the SymConst to the start block of irg. */
-ir_node *new_rd_SymConst_addr_ent (dbg_info *db, ir_graph *irg, entity *symbol, ir_type *tp);
+ir_node *new_rd_SymConst_addr_ent (dbg_info *db, ir_graph *irg, ir_entity *symbol, ir_type *tp);
+
+/** Constructor for a SymConst ofs_ent node.
+ *
+ * Same as new_rd_SymConst_type, except that the constructor is tailored for
+ * symconst_ofs_ent.
+ * Adds the SymConst to the start block of irg. */
+ir_node *new_rd_SymConst_ofs_ent (dbg_info *db, ir_graph *irg, ir_entity *symbol, ir_type *tp);
/** Constructor for a SymConst addr_name node.
*
* @param *ent The entity to select.
*/
ir_node *new_rd_simpleSel (dbg_info *db, ir_graph *irg, ir_node *block,
- ir_node *store, ir_node *objptr, entity *ent);
+ ir_node *store, ir_node *objptr, ir_entity *ent);
/** Constructor for a Sel node.
*
* @param *ent The entity to select.
*/
ir_node *new_rd_Sel (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store,
- ir_node *objptr, int n_index, ir_node *index[], entity *ent);
+ ir_node *objptr, int n_index, ir_node *index[], ir_entity *ent);
/** Constructor for a Call node.
*
* @param *tp Type information of the procedure called.
*/
ir_node *new_rd_Call (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store,
- ir_node *callee, int arity, ir_node *in[], ir_type *tp);
+ ir_node *callee, int arity, ir_node *in[], ir_type *tp);
/** Constructor for a Add node.
*
* @param *mode The mode of the operands and the result.
*/
ir_node *new_rd_Add (dbg_info *db, ir_graph *irg, ir_node *block,
- ir_node *op1, ir_node *op2, ir_mode *mode);
+ ir_node *op1, ir_node *op2, ir_mode *mode);
/** Constructor for a Sub node.
*
* @param *mode The mode of the operands and the result.
*/
ir_node *new_rd_Sub (dbg_info *db, ir_graph *irg, ir_node *block,
- ir_node *op1, ir_node *op2, ir_mode *mode);
+ ir_node *op1, ir_node *op2, ir_mode *mode);
/** Constructor for a Minus node.
*
* @param *ent The entity to select.
*/
ir_node *new_r_simpleSel(ir_graph *irg, ir_node *block, ir_node *store,
- ir_node *objptr, entity *ent);
+ ir_node *objptr, ir_entity *ent);
/** Constructor for a Sel node.
*
*/
ir_node *new_r_Sel (ir_graph *irg, ir_node *block, ir_node *store,
ir_node *objptr, int n_index, ir_node *index[],
- entity *ent);
+ ir_entity *ent);
/** Constructor for a Call node.
*
* single attribute out.
* @param *ent The entity to select.
*/
-ir_node *new_d_simpleSel(dbg_info *db, ir_node *store, ir_node *objptr, entity *ent);
+ir_node *new_d_simpleSel(dbg_info *db, ir_node *store, ir_node *objptr, ir_entity *ent);
/** Constructor for a Sel node.
*
* @param *ent The entity to select.
*/
ir_node *new_d_Sel (dbg_info *db, ir_node *store, ir_node *objptr, int arity, ir_node *in[],
- entity *ent);
+ ir_entity *ent);
/** Constructor for a Call node.
*
* @param where Where to allocate the variable, either heap_alloc or stack_alloc.
*/
ir_node *new_d_Alloc (dbg_info *db, ir_node *store, ir_node *size, ir_type *alloc_type,
- where_alloc where);
+ where_alloc where);
/** Constructor for a Free node.
*
* @param *objptr The object from that the Sel operation selects a single attribute out.
* @param *ent The entity to select.
*/
-ir_node *new_simpleSel(ir_node *store, ir_node *objptr, entity *ent);
+ir_node *new_simpleSel(ir_node *store, ir_node *objptr, ir_entity *ent);
/** Constructor for a Sel node.
*
* @param *ent The entity to select.
*/
ir_node *new_Sel (ir_node *store, ir_node *objptr, int arity, ir_node *in[],
- entity *ent);
+ ir_entity *ent);
/** Constructor for a Call node.
*
* @param *tp Type information of the procedure called.
*/
ir_node *new_Call (ir_node *store, ir_node *callee, int arity, ir_node *in[],
- ir_type *tp);
+ ir_type *tp);
/** Constructor for a CallBegin node.
*
* @param where Where the variable was allocated, either heap_alloc or stack_alloc.
*/
ir_node *new_Free (ir_node *store, ir_node *ptr, ir_node *size,
- ir_type *free_type, where_alloc where);
+ ir_type *free_type, where_alloc where);
/** Constructor for a Sync node.
*
*/
typedef ir_node *uninitialized_local_variable_func_t(ir_graph *irg, ir_mode *mode, int pos);
-#endif /* _FIRM_IR_IRCONS_H_ */
+#endif