/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-vrp1-details" } */
/* LLVM LOCAL test not applicable */
/* { dg-require-fdump "" } */

extern void abort ();
int tree_code_length[100];

blah (int code1)
{
  unsigned char D18670;

  if (code1 != 53) goto L0; else goto L1;

L0:
  abort ();

L1:
  D18670 = tree_code_length[53];
  if (D18670 <= 1) goto L2; else goto L3;

L2:
  abort ();

L3:
  if (D18670 == 2) goto L4; else goto L5;

L4:
  abort ();

L5:
  arf ();
  if (code1 != 53) goto L6; else goto L7;

L6:
  abort ();

L7:
  if (D18670 <= 2) goto L8; else goto L9;

L8:
  abort ();

L9:
  return;

}

/* The second test of (code1 != 53) and the test (D18670 <= 2) are
   both totally subsumed by earlier tests and thus should be folded
   away using VRP.  */
/* { dg-final { scan-tree-dump-times "Folding predicate" 2 "vrp1" } } */
/* { dg-final { cleanup-tree-dump "vrp1" } } */

