* @file
* @brief iropt --- optimizations intertwined with IR construction -- private header.
* @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Michael Beck
- * @version $Id$
*/
#ifndef FIRM_IR_IROPT_T_H
#define FIRM_IR_IROPT_T_H
}
/**
- * Sets the default operations for an ir_op_ops.
+ * returns true if a value becomes zero when converted to mode @p mode
+ */
+bool ir_zero_when_converted(const ir_node *node, ir_mode *dest_mode);
+
+int ir_mux_is_abs(const ir_node *sel, const ir_node *mux_false,
+ const ir_node *mux_true);
+
+ir_node *ir_get_abs_op(const ir_node *sel, ir_node *mux_false,
+ ir_node *mux_true);
+
+/**
+ * return true if the Mux node will be optimized away. This can be used for
+ * the if-conversion callback. Allowing these Muxes should be always safe, even
+ * if the backend cannot handle them.
+ */
+bool ir_is_optimizable_mux(const ir_node *sel, const ir_node *mux_false,
+ const ir_node *mux_true);
+
+/**
+ * Set the default hash operation in an ir_op_ops.
*
* @param code the opcode for the default operation
* @param ops the operations initialized
- *
- * @return
- * The operations.
*/
-ir_op_ops *firm_set_default_operations(unsigned code, ir_op_ops *ops);
+void firm_set_default_hash(unsigned code, ir_op_ops *ops);
-/** NOTE: Survive DCE is considered a bad hack - don't use */
-typedef struct survive_dce_t survive_dce_t;
+/**
+ * Set the default computed_value evaluator in an ir_op_ops.
+ *
+ * @param code the opcode for the default operation
+ * @param ops the operations initialized
+ */
+void firm_set_default_computed_value(ir_opcode code, ir_op_ops *ops);
/**
- * Make a new Survive DCE environment.
- * NOTE: Survive DCE is considered a bad hack - don't use
+ * Sets the default equivalent node operation for an ir_op_ops.
+ *
+ * @param code the opcode for the default operation
+ * @param ops the operations initialized
*/
-survive_dce_t *new_survive_dce(void);
+void firm_set_default_equivalent_node(ir_opcode code, ir_op_ops *ops);
/**
- * Free a Survive DCE environment.
- * NOTE: Survive DCE is considered a bad hack - don't use
+ * Sets the default transform node operation for an ir_op_ops.
+ *
+ * @param code the opcode for the default operation
+ * @param ops the operations initialized
*/
-void free_survive_dce(survive_dce_t *sd);
+void firm_set_default_transform_node(ir_opcode code, ir_op_ops *ops);
/**
- * Register a node pointer to be patched upon DCE.
- * When DCE occurs, the node pointer specified by @p place will be
- * patched to the new address of the node it is pointing to.
+ * Set the default node attribute compare operation for an ir_op_ops.
*
- * @param sd The Survive DCE environment.
- * @param place The address of the node pointer.
+ * @param code the opcode for the default operation
+ * @param ops the operations initialized
*/
-void survive_dce_register_irn(survive_dce_t *sd, ir_node **place);
+void firm_set_default_node_cmp_attr(ir_opcode code, ir_op_ops *ops);
+
#endif