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