* ir_node *new_Proj (ir_node *arg, ir_mode *mode, long proj);
* ir_node *new_NoMem (void);
* ir_node *new_Mux (ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode);
+ * ir_node *new_CopyB (ir_node *store, ir_node *dst, ir_node *src, type *data_type);
*
* void add_immBlock_pred (ir_node *block, ir_node *jmp);
* void mature_immBlock (ir_node *block);
* This node is used as input for operations that need a Memory, but do not
* change it like Div by const != 0, analyzed calls etc.
*
+ * ir_node *new_CopyB (ir_node *store, ir_node *dst, ir_node *src, type *data_type)
+ * -----------------------------------------------------------------------------------
+ *
+ * Describes a high level block copy of a compound type form address src to
+ * address dst. Must be lowered to a Call to a runtime memory copy function.
+ *
* ir_node *new_Proj (ir_node *arg, ir_mode *mode, long proj)
* ----------------------------------------------------------
*
* Adds the SymConst to the start block of irg. */
ir_node *new_rd_SymConst_size (dbg_info *db, ir_graph *irg, type *symbol, type *tp);
+/** Constructor for a simpleSel node.
+ *
+ * This is a shortcut for the new_rd_Sel() constructor. To be used for
+ * Sel nodes that do not select from an array, i.e., have no index
+ * inputs. It adds the two parameters 0, NULL.
+ *
+ * @param *db A pointer for debug information.
+ * @param *irg The ir graph the node belongs to.
+ * @param *block The ir block the node belongs to.
+ * @param *store The memory in which the object the entity should be
+ * selected from is allocated.
+ * @param *objptr The object from that the Sel operation selects a
+ * single attribute out.
+ * @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);
+
/** Constructor for a Sel node.
*
* The select node selects an entity (field or method) from an entity
ir_node *new_rd_Mux (dbg_info *db, ir_graph *irg, ir_node *block,
ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode);
+/** Constructor for a CopyB node.
+ *
+ * Adds the node to the block in current_ir_block.
+ *
+ * @param *db A pointer for debug information.
+ * @param *irg The ir graph the node belong to.
+ * @param *block The block the node belong to.
+ * @param *store The current memory
+ * @param *dst The ir_node that represents the destination address.
+ * @param *src The ir_node that represents the source address.
+ * @param *data_type The type of the copied data
+ */
+ir_node *new_rd_CopyB(dbg_info *db, ir_graph *irg, ir_node *block,
+ ir_node *store, ir_node *dst, ir_node *src, type *data_type);
+
/*-------------------------------------------------------------------------*/
/* The raw interface without debug support */
/*-------------------------------------------------------------------------*/
ir_node *new_r_Mux (ir_graph *irg, ir_node *block,
ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode);
+/** Constructor for a CopyB node.
+ *
+ * Adds the node to the block in current_ir_block.
+ *
+ * @param *irg The ir graph the node belong to.
+ * @param *block The block the node belong to.
+ * @param *store The current memory
+ * @param *dst The ir_node that represents the destination address.
+ * @param *src The ir_node that represents the source address.
+ * @param *data_type The type of the copied data
+ */
+ir_node *new_r_CopyB(ir_graph *irg, ir_node *block,
+ ir_node *store, ir_node *dst, ir_node *src, type *data_type);
+
/*-----------------------------------------------------------------------*/
/* The block oriented interface */
/*-----------------------------------------------------------------------*/
ir_node *new_d_Mux (dbg_info *db, ir_node *sel,
ir_node *ir_false, ir_node *ir_true, ir_mode *mode);
+/** Constructor for a CopyB node.
+ *
+ * Adds the node to the block in current_ir_block.
+ *
+ * @param *db A pointer for debug information.
+ * @param *store The current memory
+ * @param *dst The ir_node that represents the destination address.
+ * @param *src The ir_node that represents the source address.
+ * @param *data_type The type of the copied data
+ */
+ir_node *new_d_CopyB(dbg_info *db, ir_node *store, ir_node *dst, ir_node *src, type *data_type);
+
/*-----------------------------------------------------------------------*/
/* The block oriented interface without debug support */
/*-----------------------------------------------------------------------*/
*/
ir_node *new_Mux (ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode);
+/** Constructor for a CopyB node.
+ *
+ * Adds the node to the block in current_ir_block.
+ *
+ * @param *store The current memory
+ * @param *dst The ir_node that represents the destination address.
+ * @param *src The ir_node that represents the source address.
+ * @param *data_type The type of the copied data
+ */
+ir_node *new_CopyB(ir_node *store, ir_node *dst, ir_node *src, type *data_type);
+
/*---------------------------------------------------------------------*/
/* The comfortable interface. */
/* Supports automatic Phi node construction. */