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

--- Comment #4 from Martin Liška <marxin at gcc dot gnu.org> ---
> Another possible way to narrow it down a little bit would be to undo the
> i386.md hunks from that commit one by one and see which one it is, all the 4
> changes are optimizations and all of them are independent of each other (any
> of them dependent on the i386-expand.cc change which shouldn't change
> anything on its own).

All right, I was able to revert 3/4 of the hunks in i386.md and the problematic
one that caused the miscompilation is:

(define_insn_and_split "*concat<mode><dwi>3_3"
  [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,r,&r")
        (any_or_plus:<DWI>
          (ashift:<DWI>
            (zero_extend:<DWI>
              (match_operand:DWIH 1 "nonimmediate_operand" "r,m,r,m"))
            (match_operand:<DWI> 2 "const_int_operand"))
          (zero_extend:<DWI>
            (match_operand:DWIH 3 "nonimmediate_operand" "r,r,m,m"))))]
  "INTVAL (operands[2]) == <MODE_SIZE> * BITS_PER_UNIT"
  "#"
  "&& reload_completed"
  [(clobber (const_int 0))]
{

Reply via email to