Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/ipa/pr93223.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 /* { dg-do compile } */ | |
2 /* { dg-options "-O3 -std=gnu++14" } */ | |
3 | |
4 template <typename Function> | |
5 bool run(const int item_count, | |
6 Function && process_range, | |
7 const int max_parallelism, | |
8 int* progress = nullptr) | |
9 { | |
10 if (max_parallelism <= 1) | |
11 { | |
12 if (progress == nullptr) | |
13 { | |
14 return process_range(0); | |
15 } | |
16 else | |
17 { | |
18 auto result = true; | |
19 for (int i = 0; i != item_count && result; ++i) | |
20 { | |
21 (*progress)++; | |
22 result = process_range(i); | |
23 } | |
24 return result; | |
25 } | |
26 } | |
27 | |
28 if (max_parallelism > 10) | |
29 { | |
30 if (progress == nullptr) | |
31 { | |
32 return process_range(0); | |
33 } | |
34 else | |
35 { | |
36 auto result = true; | |
37 for (int i = 0; i != item_count && result; ++i) | |
38 { | |
39 (*progress)++; | |
40 result = process_range(i); | |
41 } | |
42 return result; | |
43 } | |
44 } | |
45 return false; | |
46 } | |
47 | |
48 namespace | |
49 { | |
50 __attribute__((optimize(0))) bool worker_fun(const int) | |
51 { | |
52 return true; | |
53 } | |
54 } | |
55 | |
56 void demo(int n) | |
57 { | |
58 for (int i = 0; i < n; ++i) | |
59 { | |
60 run(n, &worker_fun, n); | |
61 } | |
62 } |