X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firopt_t.h;h=468b3822744b9654bc4793e435b63b30a13046d6;hb=daba4aa82ec48b142c6d48d9a4b2d0bfffc92683;hp=93a3ea18c0b24422c0dd50f5156b94153df98bbf;hpb=ce7643e41305a037d682b3087da7e1f927f84b5e;p=libfirm diff --git a/ir/ir/iropt_t.h b/ir/ir/iropt_t.h index 93a3ea18c..468b38227 100644 --- a/ir/ir/iropt_t.h +++ b/ir/ir/iropt_t.h @@ -21,7 +21,6 @@ * @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 @@ -121,39 +120,63 @@ static inline ir_tarval *value_of(const ir_node *n) } /** - * 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