1*c87b03e5Sespie /* Test whether difference of local labels doesn't force 2*c87b03e5Sespie variables into writable sections. */ 3*c87b03e5Sespie /* { dg-do compile } */ 4*c87b03e5Sespie /* { dg-options "-O2 -fpic" } */ 5*c87b03e5Sespie /* { dg-final { scan-assembler-not ".data.rel.ro.local" } } */ 6*c87b03e5Sespie foo(int a)7*c87b03e5Sespieint foo (int a) 8*c87b03e5Sespie { 9*c87b03e5Sespie static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 }; 10*c87b03e5Sespie void *p = &&l1 + ar[a]; 11*c87b03e5Sespie goto *p; 12*c87b03e5Sespie l1: 13*c87b03e5Sespie return 1; 14*c87b03e5Sespie l2: 15*c87b03e5Sespie return 2; 16*c87b03e5Sespie } 17