comparison 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
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* PR c++/83871 - wrong code for attribute const and pure on distinct
2 template specializations
3 { dg-do compile }
4 { dg-options "-O1 -Wall -fdump-tree-optimized" } */
5
6 int __attribute__ ((const)) fconst_none ();
7 int fconst_none ();
8
9 void func_const_none_failed ();
10
11 void func_const_none ()
12 {
13 int i0 = fconst_none ();
14 int i1 = fconst_none ();
15 if (i0 != i1)
16 func_const_none_failed ();
17
18 // { dg-final { scan-tree-dump-not "func_const_none_failed" "optimized" } }
19 }
20
21
22 int fnone_const ();
23 int __attribute__ ((const)) fnone_const ();
24
25 void func_none_const_failed ();
26
27 void func_none_const ()
28 {
29 int i0 = fnone_const ();
30 int i1 = fnone_const ();
31 if (i0 != i1)
32 func_none_const_failed ();
33
34 // { dg-final { scan-tree-dump-not "func_none_const_failed" "optimized" } }
35 }
36
37 template <class T>
38 int __attribute__ ((const)) fconst_none (T);
39
40 template <class T>
41 int fconst_none (T);
42
43 void templ_const_none_failed ();
44
45 void template_const_none ()
46 {
47 int i0 = fconst_none<int> (0);
48 int i1 = fconst_none<int> (0);
49 if (i0 != i1)
50 templ_const_none_failed ();
51
52 // { dg-final { scan-tree-dump-not "templ_const_none_failed" "optimized" } }
53 }
54
55
56 template <class T>
57 int fnone_const (T);
58
59 template <class T>
60 int __attribute__ ((const)) fnone_const (T);
61
62 void templ_none_const_failed ();
63
64 void test_fnone_const ()
65 {
66 int i0 = fnone_const<int> (0);
67 int i1 = fnone_const<int> (0);
68 if (i0 != i1)
69 templ_none_const_failed ();
70
71 // { dg-final { scan-tree-dump-not "templ_none_const_failed" "optimized" } }
72 }