1; RUN: llc -verify-machineinstrs -O0 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 < %s | FileCheck %s 2 3; Due to a bug in resolveFrameIndex we ended up with invalid addresses 4; containing a base register 0. Verify that this no longer happens. 5; CHECK-NOT: (0) 6 7target datalayout = "E-m:e-i64:64-n32:64" 8target triple = "powerpc64-unknown-linux-gnu" 9 10%struct.Info = type { i32, i32, ptr, ptr, ptr, [32 x ptr], i64, [32 x i64], i64, i64, i64, [32 x i64] } 11%struct.S1998 = type { [2 x ptr], i64, i64, double, i16, i32, [29 x %struct.anon], i16, i8, i32, [8 x i8] } 12%struct.anon = type { [16 x double], i32, i16, i32, [3 x i8], [6 x i8], [4 x i32], i8 } 13 14@info = global %struct.Info zeroinitializer, align 8 15@fails = global i32 0, align 4 16@intarray = global [256 x i32] zeroinitializer, align 4 17@s1998 = global %struct.S1998 zeroinitializer, align 16 18@a1998 = external global [5 x %struct.S1998] 19 20define void @test1998() { 21entry: 22 %i = alloca i32, align 4 23 %j = alloca i32, align 4 24 %tmp = alloca i32, align 4 25 %agg.tmp = alloca %struct.S1998, align 16 26 %agg.tmp111 = alloca %struct.S1998, align 16 27 %agg.tmp112 = alloca %struct.S1998, align 16 28 %agg.tmp113 = alloca %struct.S1998, align 16 29 %agg.tmp114 = alloca %struct.S1998, align 16 30 %agg.tmp115 = alloca %struct.S1998, align 16 31 %agg.tmp116 = alloca %struct.S1998, align 16 32 %agg.tmp117 = alloca %struct.S1998, align 16 33 %agg.tmp118 = alloca %struct.S1998, align 16 34 %agg.tmp119 = alloca %struct.S1998, align 16 35 call void @llvm.memset.p0.i64(ptr align 16 @s1998, i8 0, i64 5168, i1 false) 36 call void @llvm.memset.p0.i64(ptr align 16 @a1998, i8 0, i64 25840, i1 false) 37 call void @llvm.memset.p0.i64(ptr align 8 @info, i8 0, i64 832, i1 false) 38 store ptr @s1998, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 2), align 8 39 store ptr @a1998, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 3), align 8 40 store ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 3), ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 4), align 8 41 store i64 5168, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 6), align 8 42 store i64 16, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 8), align 8 43 store i64 16, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 9), align 8 44 store i64 16, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 10), align 8 45 %0 = load i64, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 8), align 8 46 %sub = sub i64 %0, 1 47 %and = and i64 ptrtoint (ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 3) to i64), %sub 48 %tobool = icmp ne i64 %and, 0 49 br i1 %tobool, label %if.then, label %if.end 50 51if.then: ; preds = %entry 52 %1 = load i32, ptr @fails, align 4 53 %inc = add nsw i32 %1, 1 54 store i32 %inc, ptr @fails, align 4 55 br label %if.end 56 57if.end: ; preds = %if.then, %entry 58 store i32 0, ptr %i, align 4 59 store i32 0, ptr %j, align 4 60 %2 = load i32, ptr %i, align 4 61 %idxprom = sext i32 %2 to i64 62 %arrayidx = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom 63 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 0, i64 1), ptr %arrayidx, align 8 64 %3 = load i32, ptr %i, align 4 65 %idxprom1 = sext i32 %3 to i64 66 %arrayidx2 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom1 67 store i64 8, ptr %arrayidx2, align 8 68 %4 = load i32, ptr %i, align 4 69 %idxprom3 = sext i32 %4 to i64 70 %arrayidx4 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom3 71 store i64 8, ptr %arrayidx4, align 8 72 store ptr getelementptr inbounds ([256 x i32], ptr @intarray, i32 0, i64 190), ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 0, i64 1), align 8 73 store ptr getelementptr inbounds ([256 x i32], ptr @intarray, i32 0, i64 241), ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 0, i64 1), align 8 74 %5 = load i32, ptr %i, align 4 75 %inc5 = add nsw i32 %5, 1 76 store i32 %inc5, ptr %i, align 4 77 %6 = load i32, ptr %i, align 4 78 %idxprom6 = sext i32 %6 to i64 79 %arrayidx7 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom6 80 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 1), ptr %arrayidx7, align 8 81 %7 = load i32, ptr %i, align 4 82 %idxprom8 = sext i32 %7 to i64 83 %arrayidx9 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom8 84 store i64 8, ptr %arrayidx9, align 8 85 %8 = load i32, ptr %i, align 4 86 %idxprom10 = sext i32 %8 to i64 87 %arrayidx11 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom10 88 store i64 8, ptr %arrayidx11, align 8 89 store i64 -3866974208859106459, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 1), align 8 90 store i64 -185376695371304091, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 1), align 8 91 %9 = load i32, ptr %i, align 4 92 %inc12 = add nsw i32 %9, 1 93 store i32 %inc12, ptr %i, align 4 94 %10 = load i32, ptr %i, align 4 95 %idxprom13 = sext i32 %10 to i64 96 %arrayidx14 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom13 97 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 2), ptr %arrayidx14, align 8 98 %11 = load i32, ptr %i, align 4 99 %idxprom15 = sext i32 %11 to i64 100 %arrayidx16 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom15 101 store i64 8, ptr %arrayidx16, align 8 102 %12 = load i32, ptr %i, align 4 103 %idxprom17 = sext i32 %12 to i64 104 %arrayidx18 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom17 105 store i64 8, ptr %arrayidx18, align 8 106 store i64 -963638028680427187, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 2), align 8 107 store i64 7510542175772455554, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 2), align 8 108 %13 = load i32, ptr %i, align 4 109 %inc19 = add nsw i32 %13, 1 110 store i32 %inc19, ptr %i, align 4 111 %14 = load i32, ptr %i, align 4 112 %idxprom20 = sext i32 %14 to i64 113 %arrayidx21 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom20 114 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 3), ptr %arrayidx21, align 8 115 %15 = load i32, ptr %i, align 4 116 %idxprom22 = sext i32 %15 to i64 117 %arrayidx23 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom22 118 store i64 8, ptr %arrayidx23, align 8 119 %16 = load i32, ptr %i, align 4 120 %idxprom24 = sext i32 %16 to i64 121 %arrayidx25 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom24 122 store i64 16, ptr %arrayidx25, align 8 123 store double 0xC0F8783300000000, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 3), align 16 124 store double 0xC10DF3CCC0000000, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 3), align 16 125 %17 = load i32, ptr %i, align 4 126 %inc26 = add nsw i32 %17, 1 127 store i32 %inc26, ptr %i, align 4 128 %18 = load i32, ptr %i, align 4 129 %idxprom27 = sext i32 %18 to i64 130 %arrayidx28 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom27 131 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 4), ptr %arrayidx28, align 8 132 %19 = load i32, ptr %i, align 4 133 %idxprom29 = sext i32 %19 to i64 134 %arrayidx30 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom29 135 store i64 2, ptr %arrayidx30, align 8 136 %20 = load i32, ptr %i, align 4 137 %idxprom31 = sext i32 %20 to i64 138 %arrayidx32 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom31 139 store i64 2, ptr %arrayidx32, align 8 140 store i16 -15897, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 4), align 2 141 store i16 30935, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 4), align 2 142 %21 = load i32, ptr %i, align 4 143 %inc33 = add nsw i32 %21, 1 144 store i32 %inc33, ptr %i, align 4 145 store i32 -419541644, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 5), align 4 146 store i32 2125926812, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 5), align 4 147 %22 = load i32, ptr %j, align 4 148 %inc34 = add nsw i32 %22, 1 149 store i32 %inc34, ptr %j, align 4 150 %23 = load i32, ptr %i, align 4 151 %idxprom35 = sext i32 %23 to i64 152 %arrayidx36 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom35 153 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 0, i64 0), ptr %arrayidx36, align 8 154 %24 = load i32, ptr %i, align 4 155 %idxprom37 = sext i32 %24 to i64 156 %arrayidx38 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom37 157 store i64 8, ptr %arrayidx38, align 8 158 %25 = load i32, ptr %i, align 4 159 %idxprom39 = sext i32 %25 to i64 160 %arrayidx40 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom39 161 store i64 8, ptr %arrayidx40, align 8 162 store double 0xC0FC765780000000, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 0, i64 0), align 8 163 store double 0xC1025CD7A0000000, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 0, i64 0), align 8 164 %26 = load i32, ptr %i, align 4 165 %inc41 = add nsw i32 %26, 1 166 store i32 %inc41, ptr %i, align 4 167 %bf.load = load i32, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 1), align 8 168 %bf.clear = and i32 %bf.load, 7 169 %bf.set = or i32 %bf.clear, 16 170 store i32 %bf.set, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 1), align 8 171 %bf.load42 = load i32, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 1), align 8 172 %bf.clear43 = and i32 %bf.load42, 7 173 %bf.set44 = or i32 %bf.clear43, 24 174 store i32 %bf.set44, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 1), align 8 175 %27 = load i32, ptr %j, align 4 176 %inc45 = add nsw i32 %27, 1 177 store i32 %inc45, ptr %j, align 4 178 %bf.load46 = load i16, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 2), align 4 179 %bf.clear47 = and i16 %bf.load46, 127 180 store i16 %bf.clear47, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 2), align 4 181 %bf.load48 = load i16, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 2), align 4 182 %bf.clear49 = and i16 %bf.load48, 127 183 store i16 %bf.clear49, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 2), align 4 184 %28 = load i32, ptr %j, align 4 185 %inc50 = add nsw i32 %28, 1 186 store i32 %inc50, ptr %j, align 4 187 %bf.load51 = load i32, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 3), align 8 188 %bf.clear52 = and i32 %bf.load51, 63 189 store i32 %bf.clear52, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 3), align 8 190 %bf.load53 = load i32, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 3), align 8 191 %bf.clear54 = and i32 %bf.load53, 63 192 %bf.set55 = or i32 %bf.clear54, 64 193 store i32 %bf.set55, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 3), align 8 194 %29 = load i32, ptr %j, align 4 195 %inc56 = add nsw i32 %29, 1 196 store i32 %inc56, ptr %j, align 4 197 %bf.load57 = load i24, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 4), align 4 198 %bf.clear58 = and i24 %bf.load57, 63 199 store i24 %bf.clear58, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 4), align 4 200 %bf.load59 = load i24, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 4), align 4 201 %bf.clear60 = and i24 %bf.load59, 63 202 store i24 %bf.clear60, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 4), align 4 203 %30 = load i32, ptr %j, align 4 204 %inc61 = add nsw i32 %30, 1 205 store i32 %inc61, ptr %j, align 4 206 %31 = load i32, ptr %i, align 4 207 %idxprom62 = sext i32 %31 to i64 208 %arrayidx63 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom62 209 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 5, i64 5), ptr %arrayidx63, align 8 210 %32 = load i32, ptr %i, align 4 211 %idxprom64 = sext i32 %32 to i64 212 %arrayidx65 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom64 213 store i64 1, ptr %arrayidx65, align 8 214 %33 = load i32, ptr %i, align 4 215 %idxprom66 = sext i32 %33 to i64 216 %arrayidx67 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom66 217 store i64 1, ptr %arrayidx67, align 8 218 store i8 -83, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 5, i64 5), align 1 219 store i8 -67, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 5, i64 5), align 1 220 %34 = load i32, ptr %i, align 4 221 %inc68 = add nsw i32 %34, 1 222 store i32 %inc68, ptr %i, align 4 223 %35 = load i32, ptr %i, align 4 224 %idxprom69 = sext i32 %35 to i64 225 %arrayidx70 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom69 226 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 5, i64 1), ptr %arrayidx70, align 8 227 %36 = load i32, ptr %i, align 4 228 %idxprom71 = sext i32 %36 to i64 229 %arrayidx72 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom71 230 store i64 1, ptr %arrayidx72, align 8 231 %37 = load i32, ptr %i, align 4 232 %idxprom73 = sext i32 %37 to i64 233 %arrayidx74 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom73 234 store i64 1, ptr %arrayidx74, align 8 235 store i8 34, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 5, i64 1), align 1 236 store i8 64, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 5, i64 1), align 1 237 %38 = load i32, ptr %i, align 4 238 %inc75 = add nsw i32 %38, 1 239 store i32 %inc75, ptr %i, align 4 240 %39 = load i32, ptr %i, align 4 241 %idxprom76 = sext i32 %39 to i64 242 %arrayidx77 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom76 243 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 6, i64 3), ptr %arrayidx77, align 8 244 %40 = load i32, ptr %i, align 4 245 %idxprom78 = sext i32 %40 to i64 246 %arrayidx79 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom78 247 store i64 4, ptr %arrayidx79, align 8 248 %41 = load i32, ptr %i, align 4 249 %idxprom80 = sext i32 %41 to i64 250 %arrayidx81 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom80 251 store i64 4, ptr %arrayidx81, align 8 252 store i32 -3, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 6, i64 3), align 4 253 store i32 -3, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 6, i64 3), align 4 254 %42 = load i32, ptr %i, align 4 255 %inc82 = add nsw i32 %42, 1 256 store i32 %inc82, ptr %i, align 4 257 %43 = load i32, ptr %i, align 4 258 %idxprom83 = sext i32 %43 to i64 259 %arrayidx84 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom83 260 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 7), ptr %arrayidx84, align 8 261 %44 = load i32, ptr %i, align 4 262 %idxprom85 = sext i32 %44 to i64 263 %arrayidx86 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom85 264 store i64 1, ptr %arrayidx86, align 8 265 %45 = load i32, ptr %i, align 4 266 %idxprom87 = sext i32 %45 to i64 267 %arrayidx88 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom87 268 store i64 1, ptr %arrayidx88, align 8 269 store i8 106, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 6, i64 4, i32 7), align 1 270 store i8 -102, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 6, i64 4, i32 7), align 1 271 %46 = load i32, ptr %i, align 4 272 %inc89 = add nsw i32 %46, 1 273 store i32 %inc89, ptr %i, align 4 274 %47 = load i32, ptr %i, align 4 275 %idxprom90 = sext i32 %47 to i64 276 %arrayidx91 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom90 277 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 7), ptr %arrayidx91, align 8 278 %48 = load i32, ptr %i, align 4 279 %idxprom92 = sext i32 %48 to i64 280 %arrayidx93 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom92 281 store i64 2, ptr %arrayidx93, align 8 282 %49 = load i32, ptr %i, align 4 283 %idxprom94 = sext i32 %49 to i64 284 %arrayidx95 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom94 285 store i64 2, ptr %arrayidx95, align 8 286 store i16 29665, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 7), align 2 287 store i16 7107, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 7), align 2 288 %50 = load i32, ptr %i, align 4 289 %inc96 = add nsw i32 %50, 1 290 store i32 %inc96, ptr %i, align 4 291 %51 = load i32, ptr %i, align 4 292 %idxprom97 = sext i32 %51 to i64 293 %arrayidx98 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom97 294 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 8), ptr %arrayidx98, align 8 295 %52 = load i32, ptr %i, align 4 296 %idxprom99 = sext i32 %52 to i64 297 %arrayidx100 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom99 298 store i64 1, ptr %arrayidx100, align 8 299 %53 = load i32, ptr %i, align 4 300 %idxprom101 = sext i32 %53 to i64 301 %arrayidx102 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom101 302 store i64 1, ptr %arrayidx102, align 8 303 store i8 52, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 8), align 1 304 store i8 -86, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 8), align 1 305 %54 = load i32, ptr %i, align 4 306 %inc103 = add nsw i32 %54, 1 307 store i32 %inc103, ptr %i, align 4 308 %55 = load i32, ptr %i, align 4 309 %idxprom104 = sext i32 %55 to i64 310 %arrayidx105 = getelementptr inbounds [32 x ptr], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 5), i32 0, i64 %idxprom104 311 store ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 9), ptr %arrayidx105, align 8 312 %56 = load i32, ptr %i, align 4 313 %idxprom106 = sext i32 %56 to i64 314 %arrayidx107 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 7), i32 0, i64 %idxprom106 315 store i64 4, ptr %arrayidx107, align 8 316 %57 = load i32, ptr %i, align 4 317 %idxprom108 = sext i32 %57 to i64 318 %arrayidx109 = getelementptr inbounds [32 x i64], ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 11), i32 0, i64 %idxprom108 319 store i64 4, ptr %arrayidx109, align 8 320 store i32 -54118453, ptr getelementptr inbounds (%struct.S1998, ptr @s1998, i32 0, i32 9), align 4 321 store i32 1668755823, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2, i32 9), align 4 322 %58 = load i32, ptr %i, align 4 323 %inc110 = add nsw i32 %58, 1 324 store i32 %inc110, ptr %i, align 4 325 store i32 %inc110, ptr %tmp 326 %59 = load i32, ptr %tmp 327 %60 = load i32, ptr %i, align 4 328 store i32 %60, ptr @info, align 4 329 %61 = load i32, ptr %j, align 4 330 store i32 %61, ptr getelementptr inbounds (%struct.Info, ptr @info, i32 0, i32 1), align 4 331 call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp111, ptr align 16 @s1998, i64 5168, i1 false) 332 call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp112, ptr align 16 getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2), i64 5168, i1 false) 333 call void @check1998(ptr sret(%struct.S1998) %agg.tmp, ptr byval(%struct.S1998) align 16 %agg.tmp111, ptr getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 1), ptr byval(%struct.S1998) align 16 %agg.tmp112) 334 call void @checkx1998(ptr byval(%struct.S1998) align 16 %agg.tmp) 335 call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp113, ptr align 16 @s1998, i64 5168, i1 false) 336 call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp114, ptr align 16 getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2), i64 5168, i1 false) 337 call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp115, ptr align 16 getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2), i64 5168, i1 false) 338 call void (i32, ...) @check1998va(i32 signext 1, double 1.000000e+00, ptr byval(%struct.S1998) align 16 %agg.tmp113, i64 2, ptr byval(%struct.S1998) align 16 %agg.tmp114, ptr byval(%struct.S1998) align 16 %agg.tmp115) 339 call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp116, ptr align 16 @s1998, i64 5168, i1 false) 340 call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp117, ptr align 16 @s1998, i64 5168, i1 false) 341 call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp118, ptr align 16 getelementptr inbounds ([5 x %struct.S1998], ptr @a1998, i32 0, i64 2), i64 5168, i1 false) 342 call void @llvm.memcpy.p0.p0.i64(ptr align 16 %agg.tmp119, ptr align 16 @s1998, i64 5168, i1 false) 343 call void (i32, ...) @check1998va(i32 signext 2, ptr byval(%struct.S1998) align 16 %agg.tmp116, ptr byval(%struct.S1998) align 16 %agg.tmp117, ppc_fp128 0xM40000000000000000000000000000000, ptr byval(%struct.S1998) align 16 %agg.tmp118, ptr byval(%struct.S1998) align 16 %agg.tmp119) 344 ret void 345} 346 347declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) 348declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) 349 350declare void @check1998(ptr sret(%struct.S1998), ptr byval(%struct.S1998) align 16, ptr, ptr byval(%struct.S1998) align 16) 351declare void @check1998va(i32 signext, ...) 352declare void @checkx1998(ptr byval(%struct.S1998) align 16 %arg) 353 354