3 /* { dg-options "-O2" } */
5 /* Check that Temporary Expression Replacement does not move a
6 libcall-producing expression across a statement initialising a local
10 dosvc (int fd
, unsigned long high
, unsigned low
)
12 register int r0
asm("r0") = fd
;
13 register int r2
asm("r2") = high
;
14 register int r3
asm("r3") = low
;
16 asm volatile("" : "=r"(r0
) : "0"(r0
), "r"(r2
), "r"(r3
));
24 } s
= { 2, 0 }, *p
= &s
;
29 unsigned low
= p
->length
& 0xffffffff;
30 unsigned high
= p
->length
/ 23;
32 if (dosvc (p
->fd
, high
, low
) != 2)