/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */ | |
/* { dg-options "-fcilkplus" } */ | |
/* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */ | |
void f0(volatile int *steal_flag) | |
{ | |
int i = 0; | |
/* Wait for steal_flag to be set */ | |
while (!*steal_flag) | |
; | |
} | |
int f1() | |
{ | |
volatile int steal_flag = 0; | |
_Cilk_spawn f0(&steal_flag); | |
steal_flag = 1; // Indicate stolen | |
_Cilk_sync; | |
return 0; | |
} | |
void f2(int q) | |
{ | |
q = 5; | |
} | |
void f3() | |
{ | |
_Cilk_spawn f2(f1()); | |
} | |
int main() | |
{ | |
f3(); | |
return 0; | |
} |