/* Check that the GBR address optimization does not produce wrong memory accesses. In this case the GBR value must be stored to a normal register and a GBR memory access must not be done. */ /* { dg-do compile } */ /* { dg-options "-O1" } */ /* { dg-final { scan-assembler "stc\tgbr" } } */ /* { dg-final { scan-assembler "bf|bt" } } */ typedef struct { int x, y, z, w; } tcb_t; int test_00 (int a, tcb_t* b) { tcb_t* tcb = (a & 5) ? (tcb_t*)__builtin_thread_pointer () : b; return tcb->w + tcb->x; }