wo_prof_escape_substr_value.c: Limit allocation based on STACK_SIZE.
[gcc.git] / gcc / testsuite / gcc.dg / struct / w_prof_two_strs.c
1 #include <stdlib.h>
2
3 typedef struct
4 {
5 int a;
6 float b;
7 }str_t1;
8
9 typedef struct
10 {
11 int c;
12 float d;
13 }str_t2;
14
15 #ifdef STACK_SIZE
16 #if STACK_SIZE > 16000
17 #define N 1000
18 #else
19 #define N (STACK_SIZE/16)
20 #endif
21 #else
22 #define N 1000
23 #endif
24
25 str_t1 *p1;
26 str_t2 *p2;
27 int num;
28
29 void
30 foo (void)
31 {
32 int i;
33
34 for (i=0; i < num; i++)
35 p2[i].c = 2;
36 }
37
38 int
39 main ()
40 {
41 int i, r;
42
43 r = rand ();
44 num = r > N ? N : r;
45 p1 = malloc (num * sizeof (str_t1));
46 p2 = malloc (num * sizeof (str_t2));
47
48 if (p1 == NULL || p2 == NULL)
49 return 0;
50
51 for (i = 0; i < num; i++)
52 p1[i].a = 1;
53
54 foo ();
55
56 for (i = 0; i < num; i++)
57 if (p1[i].a != 1 || p2[i].c != 2)
58 abort ();
59
60 return 0;
61 }
62
63 /*--------------------------------------------------------------------------*/
64 /* { dg-final-use { scan-ipa-dump "Number of structures to transform is 2" "ipa_struct_reorg" } } */
65 /* { dg-final-use { cleanup-ipa-dump "*" } } */
66