irverify: check that switch_table != NULL
[libfirm] / ir / ir / iropt_t.h
index ee3c72c..4cf6c51 100644 (file)
@@ -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
@@ -120,6 +119,11 @@ static inline ir_tarval *value_of(const ir_node *n)
        return value_of_ptr(n);
 }
 
+/**
+ * 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);
+
 /**
  * Sets the default operations for an ir_op_ops.
  *
@@ -129,38 +133,20 @@ static inline ir_tarval *value_of(const ir_node *n)
  * @return
  *    The operations.
  */
-ir_op_ops *firm_set_default_operations(ir_opcode code, ir_op_ops *ops);
-
-/**
- * Returns true if a == -b
- */
-bool is_negated_value(ir_node *a, ir_node *b);
-
+ir_op_ops *firm_set_default_operations(unsigned code, ir_op_ops *ops);
 
+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
- */
-survive_dce_t *new_survive_dce(void);
-
-/**
- * Free a Survive DCE environment.
- * NOTE: Survive DCE is considered a bad hack - don't use
- */
-void free_survive_dce(survive_dce_t *sd);
-
-/**
- * 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.
+ * 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.
  */
-void survive_dce_register_irn(survive_dce_t *sd, ir_node **place);
+bool ir_is_optimizable_mux(const ir_node *sel, const ir_node *mux_false,
+                           const ir_node *mux_true);
 
 #endif