add some comments, DBG_OPT call
[libfirm] / ir / ir / iropt.c
index e84ec29..e02a230 100644 (file)
@@ -178,7 +178,7 @@ static tarval *computed_value_Minus(ir_node *n) {
        ir_node *a = get_Minus_op(n);
        tarval *ta = value_of(a);
 
-       if ((ta != tarval_bad) && mode_is_signed(get_irn_mode(a)))
+       if (ta != tarval_bad)
                return tarval_neg(ta);
 
        return tarval_bad;
@@ -3177,6 +3177,9 @@ static ir_node *transform_node_Not(ir_node *n) {
  * Optimize:
  *   -(~x) = x + 1
  *   -(a-b) = b - a
+ *   -(a >>u (size-1)) = a >>s (size-1)
+ *   -(a >>s (size-1)) = a >>u (size-1)
+ *   -(a * const) -> a * -const
  */
 static ir_node *transform_node_Minus(ir_node *n) {
        ir_node *c, *oldn = n;
@@ -3252,6 +3255,7 @@ static ir_node *transform_node_Minus(ir_node *n) {
                        ir_graph *irg   = current_ir_graph;
                        ir_node  *block = get_nodes_block(a);
                        n = new_rd_Mul(dbg, irg, block, mul_l, cnst, mode);
+                       DBG_OPT_ALGSIM2(oldn, a, n, FS_OPT_MINUS_MUL_C);
                        return n;
                }
        }