modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20020402-2.c (about) 1 /* PR 3967 2 3 local-alloc screwed up consideration of high+lo_sum and created 4 reg_equivs that it shouldn't have, resulting in lo_sum with 5 uninitialized data, resulting in segv. The test has to remain 6 relatively large, since register spilling is required to twig 7 the bug. */ 8 9 unsigned long *Local1; 10 unsigned long *Local2; 11 unsigned long *Local3; 12 unsigned long *RDbf1; 13 unsigned long *RDbf2; 14 unsigned long *RDbf3; 15 unsigned long *IntVc1; 16 unsigned long *IntVc2; 17 unsigned long *IntCode3; 18 unsigned long *IntCode4; 19 unsigned long *IntCode5; 20 unsigned long *IntCode6; 21 unsigned long *Lom1; 22 unsigned long *Lom2; 23 unsigned long *Lom3; 24 unsigned long *Lom4; 25 unsigned long *Lom5; 26 unsigned long *Lom6; 27 unsigned long *Lom7; 28 unsigned long *Lom8; 29 unsigned long *Lom9; 30 unsigned long *Lom10; 31 unsigned long *RDbf11; 32 unsigned long *RDbf12; 33 34 typedef struct 35 { 36 long a1; 37 unsigned long n1; 38 unsigned long local1; 39 unsigned long local2; 40 unsigned long local3; 41 unsigned long rdbf1; 42 unsigned long rdbf2; 43 unsigned long milli; 44 unsigned long frames1; 45 unsigned long frames2; 46 unsigned long nonShared; 47 long newPrivate; 48 long freeLimit; 49 unsigned long cache1; 50 unsigned long cache2; 51 unsigned long cache3; 52 unsigned long cache4; 53 unsigned long cache5; 54 unsigned long time6; 55 unsigned long frames7; 56 unsigned long page8; 57 unsigned long ot9; 58 unsigned long data10; 59 unsigned long bm11; 60 unsigned long misc12; 61 } 62 ShrPcCommonStatSType; 63 64 65 typedef struct 66 { 67 unsigned long sharedAttached; 68 unsigned long totalAttached; 69 long avgPercentShared; 70 unsigned long numberOfFreeFrames; 71 unsigned long localDirtyPageCount; 72 unsigned long globalDirtyPageCount; 73 long wakeupInterval; 74 unsigned long numActiveProcesses; 75 unsigned long numRecentActiveProcesses; 76 unsigned long gemDirtyPageKinds[10]; 77 unsigned long stoneDirtyPageKinds[10]; 78 unsigned long gemsInCacheCount; 79 long targetFreeFrameCount; 80 } 81 ShrPcMonStatSType; 82 83 typedef struct 84 { 85 unsigned long c1; 86 unsigned long c2; 87 unsigned long c3; 88 unsigned long c4; 89 unsigned long c5; 90 unsigned long c6; 91 unsigned long c7; 92 unsigned long c8; 93 unsigned long c9; 94 unsigned long c10; 95 unsigned long c11; 96 unsigned long c12; 97 unsigned long a1; 98 unsigned long a2; 99 unsigned long a3; 100 unsigned long a4; 101 unsigned long a5; 102 unsigned long a6; 103 unsigned long a7; 104 unsigned long a8; 105 unsigned long a9; 106 unsigned long a10; 107 unsigned long a11; 108 unsigned long a12; 109 unsigned long a13; 110 unsigned long a14; 111 unsigned long a15; 112 unsigned long a16; 113 unsigned long a17; 114 unsigned long a18; 115 unsigned long a19; 116 unsigned long sessionStats[40]; 117 } 118 ShrPcGemStatSType; 119 120 union ShrPcStatUnion 121 { 122 ShrPcMonStatSType monitor; 123 ShrPcGemStatSType gem; 124 }; 125 126 typedef struct 127 { 128 int processId; 129 int sessionId; 130 ShrPcCommonStatSType cmn; 131 union ShrPcStatUnion u; 132 } ShrPcStatsSType; 133 134 typedef struct 135 { 136 unsigned long *p1; 137 unsigned long *p2; 138 unsigned long *p3; 139 unsigned long *p4; 140 unsigned long *p5; 141 unsigned long *p6; 142 unsigned long *p7; 143 unsigned long *p8; 144 unsigned long *p9; 145 unsigned long *p10; 146 unsigned long *p11; 147 } 148 WorkEntrySType; 149 150 WorkEntrySType Workspace; 151 152 static void 153 setStatPointers (ShrPcStatsSType * statsPtr, long sessionId) 154 { 155 statsPtr->sessionId = sessionId; 156 statsPtr->cmn.a1 = 0; 157 statsPtr->cmn.n1 = 5; 158 159 Local1 = &statsPtr->cmn.local1; 160 Local2 = &statsPtr->cmn.local2; 161 Local3 = &statsPtr->cmn.local3; 162 RDbf1 = &statsPtr->cmn.rdbf1; 163 RDbf2 = &statsPtr->cmn.rdbf2; 164 RDbf3 = &statsPtr->cmn.milli; 165 *RDbf3 = 1; 166 167 IntVc1 = &statsPtr->u.gem.a1; 168 IntVc2 = &statsPtr->u.gem.a2; 169 IntCode3 = &statsPtr->u.gem.a3; 170 IntCode4 = &statsPtr->u.gem.a4; 171 IntCode5 = &statsPtr->u.gem.a5; 172 IntCode6 = &statsPtr->u.gem.a6; 173 174 { 175 WorkEntrySType *workSpPtr; 176 workSpPtr = &Workspace; 177 workSpPtr->p1 = &statsPtr->u.gem.a7; 178 workSpPtr->p2 = &statsPtr->u.gem.a8; 179 workSpPtr->p3 = &statsPtr->u.gem.a9; 180 workSpPtr->p4 = &statsPtr->u.gem.a10; 181 workSpPtr->p5 = &statsPtr->u.gem.a11; 182 workSpPtr->p6 = &statsPtr->u.gem.a12; 183 workSpPtr->p7 = &statsPtr->u.gem.a13; 184 workSpPtr->p8 = &statsPtr->u.gem.a14; 185 workSpPtr->p9 = &statsPtr->u.gem.a15; 186 workSpPtr->p10 = &statsPtr->u.gem.a16; 187 workSpPtr->p11 = &statsPtr->u.gem.a17; 188 } 189 Lom1 = &statsPtr->u.gem.c1; 190 Lom2 = &statsPtr->u.gem.c2; 191 Lom3 = &statsPtr->u.gem.c3; 192 Lom4 = &statsPtr->u.gem.c4; 193 Lom5 = &statsPtr->u.gem.c5; 194 Lom6 = &statsPtr->u.gem.c6; 195 Lom7 = &statsPtr->u.gem.c7; 196 Lom8 = &statsPtr->u.gem.c8; 197 Lom9 = &statsPtr->u.gem.c9; 198 Lom10 = &statsPtr->u.gem.c10; 199 RDbf11 = &statsPtr->u.gem.c11; 200 RDbf12 = &statsPtr->u.gem.c12; 201 } 202 203 typedef struct 204 { 205 ShrPcStatsSType stats; 206 } ShrPcPteSType; 207 208 ShrPcPteSType MyPte; 209 210 static void 211 initPte (void *shrpcPtr, long sessionId) 212 { 213 ShrPcPteSType *ptePtr; 214 215 ptePtr = &MyPte; 216 setStatPointers (&ptePtr->stats, sessionId); 217 } 218 219 void 220 InitCache (int sessionId) 221 { 222 initPte (0, sessionId); 223 } 224 225 int 226 main (int argc, char *argv[]) 227 { 228 InitCache (5); 229 return 0; 230 }