| /* Check that the GBR address optimization works when there are multiple |
| GBR register definitions and function calls, if the GBR is marked as a |
| call saved register. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O1 -fcall-saved-gbr" } */ |
| /* { dg-final { scan-assembler-not "stc\tgbr" } } */ |
| |
| typedef struct |
| { |
| int x, y, z, w; |
| } tcb_t; |
| |
| extern void test_00 (void); |
| |
| int |
| test_01 (int x, volatile int* y, int a) |
| { |
| if (a) |
| test_00 (); |
| |
| y[0] = 1; |
| |
| tcb_t* tcb = (tcb_t*)__builtin_thread_pointer (); |
| return (a & 5) ? tcb->x : tcb->w; |
| } |