annotate gcc/testsuite/gcc.dg/predict-18.c @ 144:8f4e72ab4e11

fix segmentation fault caused by nothing next cur_op to end
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 21:23:56 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* { dg-do compile } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-options "-O2 -fdump-tree-profile_estimate" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 extern int global;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 int x;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 short v = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 short expected = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 short max = ~0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 #define STRONG 0
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 void foo (int a, int b)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 if (__builtin_expect_with_probability (a < b, 1, 0.6f) > __builtin_expect (b, 0))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 global++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 if (__builtin_expect_with_probability (a < b, 1, 0.777f) > 0)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 global++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 if (__builtin_expect_with_probability (a < b, 1, 0.99) == __atomic_compare_exchange_n (&v, &expected, max, STRONG , __ATOMIC_RELAXED, __ATOMIC_RELAXED))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 global++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 if (__builtin_expect_with_probability (a < 10, 1, 0.9f) > __builtin_expect_with_probability (b, 0, 0.8f))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 global++;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 /* { dg-final { scan-tree-dump "__builtin_expect_with_probability heuristics of edge .*->.*: 54.00%" "profile_estimate"} } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 /* { dg-final { scan-tree-dump "__builtin_expect_with_probability heuristics of edge .*->.*: 77.70%" "profile_estimate"} } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 /* { dg-final { scan-tree-dump "__builtin_expect_with_probability heuristics of edge .*->.*: 98.96%" "profile_estimate"} } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 /* { dg-final { scan-tree-dump "__builtin_expect_with_probability heuristics of edge .*->.*: 71.99%" "profile_estimate"} } */