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;

}

Reply via email to