https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89497
--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> ---
GIMPLE testcase that doesn't fail, possibly because of NOPs or because of
missing range info or whatever...
typedef struct {
char array[81];
} container;
container *get();
int guard = 0;
container c;
void __GIMPLE (startwith("vrp1"))
d ()
{
long unsigned int len2;
container * a;
char * _1;
int _18;
int i_19;
bb_2:
a_6 = get ();
if (a_6 != _Literal (struct container *) 0)
goto bb_3;
else
goto bb_8;
bb_3:
_18 = guard;
if (_18 != 0)
goto bb_5;
else
goto bb_4;
bb_4:
;
bb_5:
i_19 = __PHI (bb_3: 0, bb_4: 1);
_1 = &a_6->array[0];
len2_15 = __builtin_strlen (&c.array);
if (len2_15 > 81ul)
goto bb_6;
else
goto bb_7;
bb_6:
;
bb_7:
len2_17 = __PHI (bb_5: len2_15, bb_6: 81ul);
__builtin_memmove (_1, &c.array, len2_17);
bb_8:
return;
}