(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
attr-retain-9.c
       1  /* { dg-do compile { target R_flag_in_section } } */
       2  /* { dg-skip-if "non-ELF target" { *-*-darwin* powerpc*-*-aix* } } */
       3  /* { dg-options "-Wall -O2" } */
       4  
       5  struct dtv_slotinfo_list
       6  {
       7    struct dtv_slotinfo_list *next;
       8  };
       9  
      10  extern struct dtv_slotinfo_list *list;
      11  
      12  static int __attribute__ ((used, retain, section ("__libc_freeres_fn")))
      13  free_slotinfo (struct dtv_slotinfo_list **elemp)
      14  {
      15    if (!free_slotinfo (&(*elemp)->next))
      16      return 0;
      17    return 1;
      18  }
      19  
      20  /* Prune out the valid warning for the function above:
      21     { dg-prune-output "-Winfinite-recursion" } */
      22  
      23  __attribute__ ((section ("__libc_freeres_fn")))
      24  static void free_mem (void)
      25  /* { dg-warning "defined but not used" "" { target *-*-* } .-1 } */
      26  {
      27    free_slotinfo (&list);
      28  }
      29  
      30  /* { dg-final { scan-assembler-not "__libc_freeres_fn\n" } } */
      31  /* { dg-final { scan-assembler-not "__libc_freeres_fn,\"ax\"" { target R_flag_in_section } } } */
      32  /* { dg-final { scan-assembler "__libc_freeres_fn,\"axR\"" { target R_flag_in_section } } } */