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.