PR middle-end/100574 - ICE in size_remaining, at builtins.c

gcc/ChangeLog:

	PR middle-end/100574
	* builtins.c (access_ref::get_ref): Improve detection of PHIs with
	all null arguments.
This commit is contained in:
Martin Sebor 2021-05-13 16:20:45 -06:00
parent 2efe245bb8
commit 5380e3c137

View File

@ -362,15 +362,6 @@ access_ref::get_ref (vec<access_ref> *all_refs,
same_ref.offrng[1] = phi_arg_ref.offrng[1];
}
if (phi_ref.sizrng[0] < 0)
{
/* Fail if none of the PHI's arguments resulted in updating PHI_REF
(perhaps because they have all been already visited by prior
recursive calls). */
psnlim->leave_phi (ref);
return NULL_TREE;
}
if (!same_ref.ref && same_ref.offrng[0] != 0)
/* Clear BASE0 if not all the arguments refer to the same object and
if not all their offsets are zero-based. This allows the final
@ -390,6 +381,15 @@ access_ref::get_ref (vec<access_ref> *all_refs,
phi_ref.parmarray = parmarray;
}
if (phi_ref.sizrng[0] < 0)
{
/* Fail if none of the PHI's arguments resulted in updating PHI_REF
(perhaps because they have all been already visited by prior
recursive calls). */
psnlim->leave_phi (ref);
return NULL_TREE;
}
/* Avoid changing *THIS. */
if (pref && pref != this)
*pref = phi_ref;