https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105247

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The problem is that the ia64 backend for some strange reason uses DImode for
the
shift last operands, while e.g. in GIMPLE they are converted to
integer_type_node or so:
      /* Why oh why didn't Intel arrange for SHIFT_COUNT_TRUNCATED?  Now
         we've got to get rid of stray bits outside the SImode register.  */
      rtx subshift = gen_reg_rtx (DImode);
      emit_insn (gen_zero_extendsidi2 (subshift, operands[2]));
      operands[2] = subshift;
and simplify-rtx.cc simply uses the mode of the shift for the shift count.

Reply via email to