> It seems to me that both the gen_lowpart and simplify_shift_const do the > wrong things in handling vector type. (zero_extend:SI (subreg:HI (V4HI)) is > not equal to (subreg:SI (V4HI)), is it? simplify_shift_const produces > (ashift:V4HI (V4HI..) (16), which is not right either.
The combine pass had been written at least a decade before vector modes were introduced so it essentially doesn't expect them, i.e. some transformations simply don't make sense for vector modes. You need to analyze the one you're seeing (e.g. where does the subreg come from?) and determine whether it makes sense; it it doesn't, then it should be disabled for vector modes. -- Eric Botcazou