2018-03-19 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / split-path-7.c
blob3d6186b34d98f0c5b2bba8795245609ac291671b
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fsplit-paths -fno-tree-cselim -fdump-tree-split-paths-details -w" } */
5 struct _reent
7 };
8 typedef unsigned char ichar_t;
9 struct dent
11 char *word;
13 struct flagent
15 ichar_t *strip;
16 ichar_t *affix;
17 short stripl;
18 short affl;
20 union ptr_union
22 struct flagptr *fp;
23 struct flagent *ent;
25 struct flagptr
27 union ptr_union pu;
28 int numents;
30 struct hashheader
33 extern struct dent *hashtbl;
34 extern char *hashstrings;
35 extern int hashsize;
36 extern int nodictflag;
37 extern int numsflags;
38 extern int numpflags;
39 extern struct flagent *pflaglist;
40 extern struct flagent *sflaglist;
41 int
42 linit ()
44 register int i;
45 register struct dent *dp;
46 struct flagent *entry;
47 struct flagptr *ind;
48 int viazero;
49 register ichar_t *cp;
50 if (!nodictflag)
52 for (i = hashsize, dp = hashtbl; --i >= 0; dp++)
54 if (dp->word == (char *) -1)
55 dp->word = ((void *) 0);
56 else
57 dp->word = &hashstrings[(int) (dp->word)];
60 for (i = numsflags + numpflags, entry = sflaglist; --i >= 0; entry++)
62 if (entry->stripl)
63 entry->strip = (ichar_t *) & hashstrings[(int) entry->strip];
64 else
65 entry->affix = ((void *) 0);
67 for (i = numsflags, entry = sflaglist; i > 0; i--, entry++)
69 if (entry->affl == 0)
71 if (ind->pu.fp == ((void *) 0))
76 for (i = numpflags, entry = pflaglist; i > 0; i--, entry++)
78 if (entry->affl == 0)
80 while (ind->numents == 0 && ind->pu.fp != ((void *) 0))
82 if (*cp == 0)
87 if (!viazero && ind->numents >= 4
88 && strcmp ((char *) (entry->affix),
89 (char *) (ind->pu.ent->affix)) != 0)
94 /* { dg-final { scan-tree-dump-times "Duplicating join block" 0 "split-paths" } } */