1  /* { dg-do run } */
       2  /* { dg-skip-if "FDPIC does not support sibcall optimization" { arm*-*-uclinuxfdpiceabi } "*" "" } */
       3  /* { dg-options "-mapcs-frame -O -foptimize-sibling-calls -ffunction-sections" } */
       4  
       5  extern void abort (void);
       6  
       7  static __attribute__((noclone, noinline, long_call))
       8  int foo (int a, int b, int c, int d, double i)
       9  {
      10    return a;
      11  }
      12  
      13  static __attribute__((noclone, noinline))
      14  double baz (double i)
      15  {
      16    return i;
      17  }
      18  
      19  static __attribute__((noclone, noinline))
      20  int bar (int a, int b, int c, int d, double i, double j)
      21  {
      22    double l = baz (i) * j;
      23    return foo (a, b, c, d, l);
      24  }
      25  
      26  int
      27  main (void)
      28  {
      29    if (bar (0, 0, 0, 0, 0.0, 0.0) != 0)
      30      abort ();
      31  
      32    return 0;
      33  }