1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -fsplit-paths -fdump-tree-split-paths-details -w" } */ 3 4 5 struct _reent 6 { 7 }; 8 typedef unsigned char ichar_t; 9 struct dent 10 { 11 char *word; 12 }; 13 struct flagent 14 { 15 ichar_t *strip; 16 ichar_t *affix; 17 short stripl; 18 short affl; 19 }; 20 union ptr_union 21 { 22 struct flagptr *fp; 23 struct flagent *ent; 24 }; 25 struct flagptr 26 { 27 union ptr_union pu; 28 int numents; 29 }; 30 struct hashheader 31 { 32 }; 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 linit()42linit () 43 { 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) 51 { 52 for (i = hashsize, dp = hashtbl; --i >= 0; dp++) 53 { 54 if (dp->word == (char *) -1) 55 dp->word = ((void *) 0); 56 else 57 dp->word = &hashstrings[(int) (dp->word)]; 58 } 59 } 60 for (i = numsflags + numpflags, entry = sflaglist; --i >= 0; entry++) 61 { 62 if (entry->stripl) 63 entry->strip = (ichar_t *) & hashstrings[(int) entry->strip]; 64 else 65 entry->affix = ((void *) 0); 66 } 67 for (i = numsflags, entry = sflaglist; i > 0; i--, entry++) 68 { 69 if (entry->affl == 0) 70 { 71 if (ind->pu.fp == ((void *) 0)) 72 { 73 } 74 } 75 } 76 for (i = numpflags, entry = pflaglist; i > 0; i--, entry++) 77 { 78 if (entry->affl == 0) 79 { 80 while (ind->numents == 0 && ind->pu.fp != ((void *) 0)) 81 { 82 if (*cp == 0) 83 { 84 } 85 } 86 } 87 if (!viazero && ind->numents >= 4 88 && strcmp ((char *) (entry->affix), 89 (char *) (ind->pu.ent->affix)) != 0) 90 { 91 } 92 } 93 } 94 /* { dg-final { scan-tree-dump-times "Duplicating join block" 2 "split-paths" } } */ 95