X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firopt_t.h;h=ebf8cad114f64f5ac0a71f826009374fca39a0c3;hb=b59e22a229aa1227ef992c184c79fdafe34908cf;hp=f4fa4a0ac7ee863a463463eefa5db0927ebd683c;hpb=c8e1cf6a41fa2077058cce740783ab78990ac0ab;p=libfirm diff --git a/ir/ir/iropt_t.h b/ir/ir/iropt_t.h index f4fa4a0ac..ebf8cad11 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 @@ -101,7 +100,7 @@ ir_node *optimize_in_place_2(ir_node *n); * returning tarval_bad otherwise. * No calculations are done here, just a lookup. */ -typedef tarval *(*value_of_func)(const ir_node *self); +typedef ir_tarval *(*value_of_func)(const ir_node *self); extern value_of_func value_of_ptr; @@ -115,52 +114,35 @@ void set_value_of_func(value_of_func func); /** * Returns the associated tarval of a node. */ -static inline tarval *value_of(const ir_node *n) +static inline ir_tarval *value_of(const ir_node *n) { return value_of_ptr(n); } /** - * Sets the default operations for 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(ir_opcode code, ir_op_ops *ops); - -/** - * Returns true if a == -b + * returns true if a value becomes zero when converted to mode @p mode */ -bool is_negated_value(ir_node *a, ir_node *b); +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); - -/** NOTE: Survive DCE is considered a bad hack - don't use */ -typedef struct survive_dce_t survive_dce_t; +ir_node *ir_get_abs_op(const ir_node *sel, ir_node *mux_false, + ir_node *mux_true); /** - * Make a new Survive DCE environment. - * NOTE: Survive DCE is considered a bad hack - don't use + * 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. */ -survive_dce_t *new_survive_dce(void); +bool ir_is_optimizable_mux(const ir_node *sel, const ir_node *mux_false, + const ir_node *mux_true); /** - * Free a Survive DCE environment. - * NOTE: Survive DCE is considered a bad hack - don't use + * Returns true if Conv_m0(Conv_m1( x_m2)) is equivalent to Conv_m0(x_m2) */ -void free_survive_dce(survive_dce_t *sd); +bool may_leave_out_middle_conv(ir_mode *m0, ir_mode *m1, ir_mode *m2); -/** - * 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. - * - * @param sd The Survive DCE environment. - * @param place The address of the node pointer. - */ -void survive_dce_register_irn(survive_dce_t *sd, ir_node **place); +void ir_register_opt_node_ops(void); #endif