/* This testcase generated invalid assembly on ARM Thumb-2.  Two
   PIC additions of pc were combined, but the deleted label was still
   used.  */
/* { dg-do assemble } */
/* { dg-options "-O2" } */
/* { dg-require-effective-target tls } */

struct __res_state
{
  int options;
};
extern __thread struct __res_state *__resp
  __attribute__ ((tls_model ("initial-exec")));

void foo (void);

int main(void)
{
  int count, total = 0;

  for (count = 0; count < 10; count++)
    {
      if (((*__resp).options & 0x00000001) == 0)
	foo ();
      (*__resp).options &= ~((0x00000002 | 0x00000200 | 0x00000080));
    }
  return 0;
}
