1  /* PR debug/54519 */
       2  /* { dg-do run } */
       3  /* { dg-options "-g -fno-ipa-vrp" } */
       4  
       5  __attribute__((noinline, noclone)) void
       6  fn1 (int x)
       7  {
       8    __asm volatile ("" : "+r" (x) : : "memory");
       9  }
      10  
      11  static int
      12  fn2 (int x, int y, int z)
      13  {
      14    int a = 8;
      15    if (x != z)
      16      {
      17        fn1 (x);
      18        fn1 (x);		/* { dg-final { gdb-test .+2 "x" "36" } } */
      19        if (x == 36)	/* { dg-final { gdb-test .+1 "y" "25" { xfail { aarch64*-*-* && { any-opts "-flto" } } } } } */
      20  	fn1 (x);	/* { dg-final { gdb-test . "z" "6" { xfail { aarch64*-*-* && { any-opts "-flto" } } } } } */
      21        fn1 (x);		/* { dg-final { gdb-test .+2 "x" "98" } } */
      22        if (x == 98)	/* { dg-final { gdb-test .+1 "y" "117" { xfail { aarch64*-*-* && { any-opts "-flto" } } } } } */
      23  	fn1 (x);	/* { dg-final { gdb-test . "z" "8" { xfail { aarch64*-*-* && { any-opts "-flto" } } } } } */
      24        fn1 (x);
      25        fn1 (x + a);
      26      }
      27    return y;
      28  }
      29  
      30  __attribute__((noinline, noclone)) int
      31  fn3 (int x, int y)
      32  {
      33    return fn2 (x, y, 6);
      34  }
      35  
      36  __attribute__((noinline, noclone)) int
      37  fn4 (int x, int y)
      38  {
      39    return fn2 (x, y, 8);
      40  }
      41  
      42  int
      43  main ()
      44  {
      45    fn3 (36, 25);
      46    fn4 (98, 117);
      47    return 0;
      48  }