1  /* { dg-do compile } */
       2  /* { dg-require-effective-target ia32 } */
       3  /* { dg-require-effective-target pie } */
       4  /* { dg-options "-O2 -fpie" } */
       5  /* { dg-final { scan-assembler "addl\[ \\t\]+\[$\]_GLOBAL_OFFSET_TABLE_, %ebx" { target { ! *-*-darwin* } } } } */
       6  /* { dg-final { scan-assembler "movl\[ \\t\]+c@GOTOFF\[(\]%ebx\[)\]" { target { ! *-*-darwin* } } } } */
       7  /* { dg-final { scan-assembler-not "movl\[ \\t\]+\[0-9]+\[(\]%esp\[)\], %ebx" { target { ! *-*-darwin* } } } } */
       8  
       9  /* Check PIC access to c and t1 on Darwin (PIC is default, needed for PIE).  */
      10  /* { dg-final { scan-assembler {_c-L1\$pb\(%} { target *-*-darwin* } } } */
      11  /* { dg-final { scan-assembler {_t1.[0-9]+-L1\$pb\(%} { target *-*-darwin* } } } */
      12  
      13  long c = 1;
      14  
      15  int bar();
      16  
      17  int foo (unsigned int iters)
      18  {
      19    unsigned int i;
      20    
      21    int res = 0;
      22    static long t1;
      23    
      24    for (i = 0; i < iters; i++)
      25      {
      26        res = bar();
      27        t1 = c + res;
      28      }
      29    
      30    return t1 + res;
      31  }