| /* { dg-options "-fcilkplus" } */ |
| /* { dg-do run { target i?86-*-* x86_64-*-* arm*-*-* } } */ |
| /* { dg-options "-fcilkplus -lcilkrts" { target { i?86-*-* x86_64-*-* arm*-*-* } } } */ |
| |
| class Rectangle |
| { |
| int area_val, h, w; |
| public: |
| Rectangle (int, int); |
| Rectangle (int, int, int); |
| ~Rectangle (); |
| int area (); |
| }; |
| Rectangle::~Rectangle () |
| { |
| h = 0; |
| w = 0; |
| area_val = 0; |
| } |
| Rectangle::Rectangle (int height, int width) |
| { |
| h = height; |
| w = width; |
| area_val = 0; |
| } |
| |
| Rectangle::Rectangle (int height, int width, int area_orig) |
| { |
| h = height; |
| w = width; |
| area_val = area_orig; |
| } |
| |
| int Rectangle::area() |
| { |
| return (area_val += (h*w)); |
| } |
| |
| /* Spawning constructor. */ |
| int main1 (void) |
| { |
| Rectangle r = _Cilk_spawn Rectangle (4, 3); |
| return r.area(); |
| } |
| |
| /* Spawning constructor 2. */ |
| int main2 (void) |
| { |
| Rectangle r (_Cilk_spawn Rectangle (4, 3)); |
| return r.area(); |
| } |
| |
| /* Spawning copy constructor. */ |
| int main3 (void) |
| { |
| Rectangle r = _Cilk_spawn Rectangle (4, 3, 2); |
| return r.area (); |
| } |
| |
| /* Spawning copy constructor 2. */ |
| int main4 (void) |
| { |
| Rectangle r ( _Cilk_spawn Rectangle (4, 3, 2)); |
| return r.area(); |
| } |
| |
| int main (void) |
| { |
| if (main1 () != 12) |
| __builtin_abort (); |
| if (main2 () != 12) |
| __builtin_abort (); |
| if (main3 () != 14) |
| __builtin_abort (); |
| if (main4() != 14) |
| __builtin_abort (); |
| return 0; |
| } |