https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116058
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So from what I can tell is happening is recog_level2 (in rtl-ssa/changes.cc) calls recog: icode = ::recog (pat, rtl, &num_clobbers); num_clobbers is greater than 0 and then we remove the clobbers inside the PARALLEL: if (GET_CODE (pat) == PARALLEL) { oldlen = XVECLEN (pat, 0); newvec = rtvec_alloc (num_clobbers + oldlen); for (int i = 0; i < oldlen; ++i) RTVEC_ELT (newvec, i) = XVECEXP (pat, 0, i); } BUT add_clobbers does not handle the case where the clobbers was inside the PARALLEL. I am trying to understand why there is a difference understanding in num_clobbers between recog and add_clobbers now.