annotate gcc/testsuite/g++.dg/opt/temp2.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do run }
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 // Copyright (C) 2006 Free Software Foundation, Inc.
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 // Originally from PR 16681, found also in init/array15.C
kono
parents:
diff changeset
6 // This variant of the testcase verifies that we do not create
kono
parents:
diff changeset
7 // a temporary on the stack, which is PR 27620.
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 int i;
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 extern "C"
kono
parents:
diff changeset
12 void *memcpy (void *dest, const void *src, __SIZE_TYPE__ n)
kono
parents:
diff changeset
13 {
kono
parents:
diff changeset
14 char *d = (char *) dest;
kono
parents:
diff changeset
15 const char *s = (const char *) src;
kono
parents:
diff changeset
16 while (n--)
kono
parents:
diff changeset
17 d[n] = s[n];
kono
parents:
diff changeset
18 ++i;
kono
parents:
diff changeset
19 return dest;
kono
parents:
diff changeset
20 }
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 struct foo {
kono
parents:
diff changeset
23 unsigned char buffer[41112];
kono
parents:
diff changeset
24 foo() ;
kono
parents:
diff changeset
25 bool check () const;
kono
parents:
diff changeset
26 };
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 foo::foo ()
kono
parents:
diff changeset
29 : buffer()
kono
parents:
diff changeset
30 {}
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 bool foo::check () const
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 for (unsigned ix = sizeof (buffer); ix--;)
kono
parents:
diff changeset
35 if (buffer[ix])
kono
parents:
diff changeset
36 return false;
kono
parents:
diff changeset
37 return true;
kono
parents:
diff changeset
38 }
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 void *operator new (__SIZE_TYPE__ size, void *p)
kono
parents:
diff changeset
41 {
kono
parents:
diff changeset
42 return p;
kono
parents:
diff changeset
43 }
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 char heap[50000];
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 int main ()
kono
parents:
diff changeset
48 {
kono
parents:
diff changeset
49 for (unsigned ix = sizeof (heap); ix--;)
kono
parents:
diff changeset
50 heap[ix] = ix;
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 i = 0;
kono
parents:
diff changeset
53 foo *f = new (heap) foo ();
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 if (i != 0)
kono
parents:
diff changeset
56 return 1;
kono
parents:
diff changeset
57 if (!f->check ())
kono
parents:
diff changeset
58 return 1;
kono
parents:
diff changeset
59 return 0;
kono
parents:
diff changeset
60 }
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62