annotate gcc/testsuite/g++.dg/ext/attr-const.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* PR c++/83871 - wrong code for attribute const and pure on distinct
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 template specializations
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 { dg-options "-O1 -Wall -fdump-tree-optimized" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 int __attribute__ ((const)) fconst_none ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 int fconst_none ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 void func_const_none_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 void func_const_none ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 int i0 = fconst_none ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 int i1 = fconst_none ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 if (i0 != i1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 func_const_none_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 // { dg-final { scan-tree-dump-not "func_const_none_failed" "optimized" } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 int fnone_const ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 int __attribute__ ((const)) fnone_const ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 void func_none_const_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 void func_none_const ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 int i0 = fnone_const ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 int i1 = fnone_const ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 if (i0 != i1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 func_none_const_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 // { dg-final { scan-tree-dump-not "func_none_const_failed" "optimized" } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 template <class T>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 int __attribute__ ((const)) fconst_none (T);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 template <class T>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 int fconst_none (T);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 void templ_const_none_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 void template_const_none ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 int i0 = fconst_none<int> (0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 int i1 = fconst_none<int> (0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 if (i0 != i1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 templ_const_none_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 // { dg-final { scan-tree-dump-not "templ_const_none_failed" "optimized" } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 template <class T>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 int fnone_const (T);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 template <class T>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 int __attribute__ ((const)) fnone_const (T);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 void templ_none_const_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 void test_fnone_const ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 int i0 = fnone_const<int> (0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 int i1 = fnone_const<int> (0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 if (i0 != i1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 templ_none_const_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 // { dg-final { scan-tree-dump-not "templ_none_const_failed" "optimized" } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 }