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