annotate gcc/testsuite/gcc.dg/alias-11.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 /* { dg-require-alias "" } */
kono
parents:
diff changeset
3 /* { dg-options "-O2" } */
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 #include <stdio.h>
kono
parents:
diff changeset
6 #include <stdlib.h>
kono
parents:
diff changeset
7 #include <string.h>
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 typedef struct dw_cfi_struct
kono
parents:
diff changeset
10 {
kono
parents:
diff changeset
11 struct dw_cfi_struct *dw_cfi_next;
kono
parents:
diff changeset
12 const char *dw_cfi_addr;
kono
parents:
diff changeset
13 }
kono
parents:
diff changeset
14 dw_cfi_node;
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 typedef struct dw_fde_struct
kono
parents:
diff changeset
17 {
kono
parents:
diff changeset
18 const char *dw_fde_current_label;
kono
parents:
diff changeset
19 dw_cfi_node *dw_fde_cfi;
kono
parents:
diff changeset
20 }
kono
parents:
diff changeset
21 dw_fde_node;
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 dw_cfi_node *cie_cfi_head;
kono
parents:
diff changeset
24 unsigned fde_table_in_use;
kono
parents:
diff changeset
25 dw_fde_node *fde_table;
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 static __inline__ void
kono
parents:
diff changeset
28 add_cfi (dw_cfi_node **list_head, dw_cfi_node *cfi)
kono
parents:
diff changeset
29 {
kono
parents:
diff changeset
30 dw_cfi_node **p;
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 for (p = list_head; (*p) != ((void *)0); p = &(*p)->dw_cfi_next)
kono
parents:
diff changeset
33 ;
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 *p = cfi;
kono
parents:
diff changeset
36 }
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 static __inline__ struct dw_cfi_struct *
kono
parents:
diff changeset
39 new_cfi (void)
kono
parents:
diff changeset
40 {
kono
parents:
diff changeset
41 dw_cfi_node *cfi = (dw_cfi_node *) malloc (sizeof (dw_cfi_node));
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 memset (cfi, 0, sizeof (dw_cfi_node));
kono
parents:
diff changeset
44 return cfi;
kono
parents:
diff changeset
45 }
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 char *
kono
parents:
diff changeset
48 dwarf2out_cfi_label (void)
kono
parents:
diff changeset
49 {
kono
parents:
diff changeset
50 static char label[20];
kono
parents:
diff changeset
51 static unsigned long label_num = 0;
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 sprintf (label, "*.%s%u", "LCFI", (unsigned) (label_num++));
kono
parents:
diff changeset
54 return label;
kono
parents:
diff changeset
55 }
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 void
kono
parents:
diff changeset
58 add_fde_cfi (const char *label, dw_cfi_node *cfi)
kono
parents:
diff changeset
59 {
kono
parents:
diff changeset
60 if (label)
kono
parents:
diff changeset
61 {
kono
parents:
diff changeset
62 dw_fde_node *fde = fde_table + fde_table_in_use - 1;
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 if (*label == 0)
kono
parents:
diff changeset
65 label = dwarf2out_cfi_label ();
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 if (fde->dw_fde_current_label == ((void *)0)
kono
parents:
diff changeset
68 || strcmp (label, fde->dw_fde_current_label))
kono
parents:
diff changeset
69 {
kono
parents:
diff changeset
70 dw_cfi_node *xcfi;
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 fde->dw_fde_current_label = label = strdup (label);
kono
parents:
diff changeset
73
kono
parents:
diff changeset
74 xcfi = new_cfi ();
kono
parents:
diff changeset
75 xcfi->dw_cfi_addr = label;
kono
parents:
diff changeset
76 add_cfi (&fde->dw_fde_cfi, xcfi);
kono
parents:
diff changeset
77 }
kono
parents:
diff changeset
78
kono
parents:
diff changeset
79 add_cfi (&fde->dw_fde_cfi, cfi);
kono
parents:
diff changeset
80 }
kono
parents:
diff changeset
81 else
kono
parents:
diff changeset
82 add_cfi (&cie_cfi_head, cfi);
kono
parents:
diff changeset
83 }
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 int
kono
parents:
diff changeset
86 main ()
kono
parents:
diff changeset
87 {
kono
parents:
diff changeset
88 dw_cfi_node *cfi;
kono
parents:
diff changeset
89 dw_fde_node *fde;
kono
parents:
diff changeset
90
kono
parents:
diff changeset
91 fde_table_in_use = 1;
kono
parents:
diff changeset
92 fde_table = (dw_fde_node *) realloc (fde_table,
kono
parents:
diff changeset
93 sizeof (dw_fde_node));
kono
parents:
diff changeset
94 memset (fde_table, 0, sizeof (dw_fde_node));
kono
parents:
diff changeset
95 cfi = new_cfi ();
kono
parents:
diff changeset
96 add_fde_cfi ("", cfi);
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98 fde = &fde_table[0];
kono
parents:
diff changeset
99 cfi = fde->dw_fde_cfi;
kono
parents:
diff changeset
100
kono
parents:
diff changeset
101 if (cfi == NULL)
kono
parents:
diff changeset
102 abort ();
kono
parents:
diff changeset
103
kono
parents:
diff changeset
104 if (cfi->dw_cfi_addr == NULL)
kono
parents:
diff changeset
105 abort ();
kono
parents:
diff changeset
106
kono
parents:
diff changeset
107 if (strcmp ("*.LCFI0", cfi->dw_cfi_addr))
kono
parents:
diff changeset
108 abort ();
kono
parents:
diff changeset
109
kono
parents:
diff changeset
110 return 0;
kono
parents:
diff changeset
111 }