/* { dg-options "-O2" } */ /* { dg-do run } */ #if defined __i386__ #define REG "edi" #else #define REG "r14" #endif register unsigned long *ds asm(REG); extern void abort (void); __attribute__ ((noinline)) void test (void) { *++ds = 31337; } int main () { unsigned long stack[2]; stack[0] = 0; stack[1] = 0; ds = stack; test (); if (ds != stack + 1 || *ds != 31337) abort (); return 0; }