Hi!

These two tree codes have been added recently, but not to expand_debug_expr.
The following patch adds them there, bootstrapped/regtested on x86_64-linux
and i686-linux, ok for trunk?

2011-10-19  Jakub Jelinek  <ja...@redhat.com>

        PR middle-end/50754
        * cfgexpand.c (expand_debug_expr): Handle WIDEN_LSHIFT_EXPR, ignore
        VEC_PERM_EXPR.

--- gcc/cfgexpand.c.jj  2011-10-18 23:52:04.000000000 +0200
+++ gcc/cfgexpand.c     2011-10-18 23:54:22.000000000 +0200
@@ -3267,6 +3267,7 @@ expand_debug_expr (tree exp)
     case VEC_WIDEN_MULT_LO_EXPR:
     case VEC_WIDEN_LSHIFT_HI_EXPR:
     case VEC_WIDEN_LSHIFT_LO_EXPR:
+    case VEC_PERM_EXPR:
       return NULL;
 
    /* Misc codes.  */
@@ -3321,6 +3322,7 @@ expand_debug_expr (tree exp)
       return NULL;
 
     case WIDEN_SUM_EXPR:
+    case WIDEN_LSHIFT_EXPR:
       if (SCALAR_INT_MODE_P (GET_MODE (op0))
          && SCALAR_INT_MODE_P (mode))
        {
@@ -3329,7 +3331,8 @@ expand_debug_expr (tree exp)
                                                                          0)))
                                  ? ZERO_EXTEND : SIGN_EXTEND, mode, op0,
                                  inner_mode);
-         return simplify_gen_binary (PLUS, mode, op0, op1);
+         return simplify_gen_binary (TREE_CODE (exp) == WIDEN_LSHIFT_EXPR
+                                     ? ASHIFT : PLUS, mode, op0, op1);
        }
       return NULL;
 

        Jakub

Reply via email to