(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
pr79439-2.c
       1  /* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
       2  /* { dg-options "-O2 -fpic -fno-reorder-blocks -mno-pcrel" } */
       3  /* { dg-require-effective-target fpic } */
       4  
       5  /* On the Linux 64-bit ABIs, we should not eliminate NOP in the 'rec' call if
       6     -fpic is used because rec can be interposed at link time (since it has an
       7     alias), and the recursive call should call the interposed function.  The
       8     Linux 32-bit ABIs do not require NOPs after the BL instruction.  */
       9  
      10  int f (void);
      11  
      12  void
      13  g (void)
      14  {
      15  }
      16  
      17  int
      18  rec (int a)
      19  {
      20    int ret = 0;
      21    if (a > 10 && f ())
      22      ret += rec (a - 1);
      23    g ();
      24    return a + ret;
      25  }
      26  
      27  int rec_alias (int) __attribute__ ((alias ("rec")));
      28  
      29  /* { dg-final { scan-assembler-times {\mbl f\M}   1 } } */
      30  /* { dg-final { scan-assembler-times {\mbl g\M}   1 } } */
      31  /* { dg-final { scan-assembler-times {\mbl rec\M} 1 } } */
      32  /* { dg-final { scan-assembler-times {\mnop\M}    3 } } */