(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
s390/
hotpatch-25.c
       1  /* Functional tests for the function hotpatching feature.  */
       2  
       3  /* { dg-do compile } */
       4  /* { dg-options "-mzarch" } */
       5  
       6  typedef long (*fn_t)(void);
       7  
       8  __attribute__ ((hotpatch(1,2)))
       9  fn_t outer(void)
      10  {
      11    __attribute__ ((hotpatch(4,8)))
      12    long nested1(void)
      13    {
      14      __attribute__ ((hotpatch(16,32)))
      15      long nested2(void)
      16      {
      17        return 2;
      18      }
      19      return (long)(void *)nested2;
      20    }
      21  
      22    return nested1;
      23  }
      24  
      25  /* { dg-final { scan-assembler "pre-label.*(1 halfwords)" } } */
      26  /* { dg-final { scan-assembler "pre-label.*(4 halfwords)" } } */
      27  /* { dg-final { scan-assembler "pre-label.*(16 halfwords)" } } */
      28  /* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(2 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*nopr\t" } } */
      29  /* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(8 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*brcl\t0, 0" } } */
      30  /* { dg-final { scan-assembler "^\[^.\].*:\n.*post-label.*(32 halfwords).*\n\(\(.L.*:\n\)\|\(\[\[:space:\]\]*.cfi_.*\n\)\)*\[\[:space:\]\]*brcl\t0, 0" } } */
      31  /* { dg-final { scan-assembler-times "alignment for hotpatch" 3 } } */
      32  /* { dg-final { scan-assembler "nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr.*\n.*nopr" } } */