1  /* { dg-do compile } */
       2  /* { dg-require-weak "" } */
       3  /* { dg-options "-fno-common" } */
       4  /* { dg-skip-if "" { x86_64-*-mingw* } } */
       5  /* NVPTX's weak is applied to the definition,  not declaration.  */
       6  /* { dg-skip-if "" { nvptx-*-* } } */
       7  
       8  /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?a" } } */
       9  /* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?b" } } */
      10  /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?c" } } */
      11  /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?d" } } */
      12  
      13  #pragma weak a
      14  extern char a[];
      15  
      16  char *user_a(void)
      17  {
      18    return a+1;
      19  }
      20  
      21  int x;
      22  int extern inline b(int y)
      23  {
      24    return x+y;
      25  }
      26  
      27  extern int b(int y);
      28  
      29  int user_b(int z)
      30  {
      31    return b(z);
      32  }
      33  
      34  #pragma weak c
      35  extern int c;
      36  
      37  int *user_c = &c;
      38  
      39  #pragma weak d
      40  extern char d[];
      41  
      42  char *user_d = &d[1];