annotate gcc/testsuite/g++.dg/ext/attr-malloc-3.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 // Bug c++/84617 - new test cases g++.dg/ext/attr-const.C and
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 // g++.dg/ext/attr-pure.C fail
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 // { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 // { dg-options "-O -Wall -fdump-tree-optimized" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 static char a[8];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 void* __attribute__ ((malloc))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 func_malloc_none (unsigned);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 void*
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 func_alloc_none (unsigned); // redeclare with no attribute
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 void func_malloc_none_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 void test_func_malloc_none (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 void *p = func_malloc_none (1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 if (!p)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 return;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 if (p == a) // must be false
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 func_malloc_none_failed (); // should be eliminated
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 // Verify that the call to func_malloc_none_failed() is eliminated.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 // { dg-final { scan-tree-dump-not "func_malloc_none_failed" "optimized" } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 void*
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 func_none_malloc (unsigned);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 void* __attribute__ ((malloc))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 func_none_malloc (unsigned); // redeclare with an attribute
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 void func_none_malloc_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 void test_func_none_malloc (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 void *p = func_none_malloc (1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 if (!p)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 return;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 if (p == a) // must be false
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 func_none_malloc_failed (); // should be eliminated
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 // Verify that the call to func_none_malloc_failed() is eliminated.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 // { dg-final { scan-tree-dump-not "func_none_malloc_failed" "optimized" } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 template <class>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 void* __attribute__ ((malloc))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 templ_malloc_none (unsigned);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 template <class>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 void*
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 templ_malloc_none (unsigned); // redeclare with no attribute
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 void templ_malloc_none_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 void test_templ_malloc_none (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 void *p = templ_malloc_none<void>(1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 if (!p)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 return;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 if (p == a) // must be false
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 templ_malloc_none_failed (); // should be eliminated
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 // Verify that the call to templ_malloc_none_failed() is eliminated.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 // { dg-final { scan-tree-dump-not "templ_malloc_none_failed" "optimized" } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 template <class>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 void*
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 templ_none_malloc (unsigned);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79 template <class>
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 void* __attribute__ ((malloc))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81 templ_none_malloc (unsigned); // redeclared with an attribute
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 void templ_none_malloc_failed ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 void test_templ_none_malloc (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 void *p = templ_none_malloc<void>(1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 if (!p)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 return;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 if (p == a) // must be false
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 templ_none_malloc_failed (); // should be eliminated
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94 // Verify that the call to templ_none_malloc_failed() is eliminated.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 // { dg-final { scan-tree-dump-not "templ_none_malloc_failed" "optimized" } }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96 }