/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */ /* { dg-options "-fcilkplus" } */ /* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */ #include #define DEFAULT_VALUE 30 int fib (int n) { if (n<2) return n; else { int x, y; x = _Cilk_spawn fib (n-1); y = _Cilk_spawn fib (n-2); _Cilk_sync; return (x+y); return 5; } } int main_parallel (int argc, char *argv[]) { int n, result; if (argc == 2) n = atoi(argv[1]); else n = DEFAULT_VALUE; result = _Cilk_spawn fib(n); _Cilk_sync; return result; } int fib_serial (int n) { int x, y; if (n < 2) return n; else { x = fib (n-1); y = fib (n-2); return (x+y); } } int main_serial (int argc, char *argv[]) { int n, result; if (argc == 2) n = atoi (argv[1]); else n = DEFAULT_VALUE; result = fib_serial (n); return result; } int main (void) { if (main_serial (1, 0) != main_parallel (1,0)) return 1; else return 0; }