|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3 |
| 2 | +; RUN: opt < %s -S | FileCheck %s |
| 3 | + |
| 4 | +; Test a very long run of similar (but different) instructions in which the optimal |
| 5 | +; diff is sensitive to how names are mapped. This is already slightly reduced |
| 6 | +; from the original, but attempting to reduce it further ended up hiding another |
| 7 | +; bug. |
| 8 | + |
| 9 | +%structA = type { <3 x i32> } |
| 10 | +%structC = type { [50 x i32] } |
| 11 | + |
| 12 | +define dso_local void @main.resume.0(i64 %0, %structA %arg01, [23 x i32] %arg12, [30 x i32] %arg23) { |
| 13 | +; CHECK-LABEL: define dso_local void @main.resume.0( |
| 14 | +; CHECK-SAME: i64 [[TMP0:%.*]], { [[STRUCTA:%.*]], [23 x i32], [30 x i32] } [[TMP1:%.*]]) { |
| 15 | +; CHECK-NEXT: entryresume.0: |
| 16 | +; CHECK-NEXT: [[FOO:%.*]] = call ptr @getter(i32 108) |
| 17 | +; CHECK-NEXT: [[TMP3:%.*]] = extractvalue { [[STRUCTA]], [23 x i32], [30 x i32] } [[TMP1]], 2 |
| 18 | +; CHECK-NEXT: [[DOTFCA_0_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 0 |
| 19 | +; CHECK-NEXT: [[DOTFCA_1_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 1 |
| 20 | +; CHECK-NEXT: [[DOTFCA_2_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 2 |
| 21 | +; CHECK-NEXT: [[DOTFCA_3_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 3 |
| 22 | +; CHECK-NEXT: [[DOTFCA_4_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 4 |
| 23 | +; CHECK-NEXT: [[DOTFCA_5_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 5 |
| 24 | +; CHECK-NEXT: [[DOTFCA_6_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 6 |
| 25 | +; CHECK-NEXT: [[DOTFCA_7_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 7 |
| 26 | +; CHECK-NEXT: [[DOTFCA_8_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 8 |
| 27 | +; CHECK-NEXT: [[DOTFCA_9_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 9 |
| 28 | +; CHECK-NEXT: [[DOTFCA_10_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 10 |
| 29 | +; CHECK-NEXT: [[DOTFCA_11_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 11 |
| 30 | +; CHECK-NEXT: [[DOTFCA_12_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 12 |
| 31 | +; CHECK-NEXT: [[DOTFCA_13_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 13 |
| 32 | +; CHECK-NEXT: [[DOTFCA_14_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 14 |
| 33 | +; CHECK-NEXT: [[DOTFCA_15_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 15 |
| 34 | +; CHECK-NEXT: [[DOTFCA_16_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 16 |
| 35 | +; CHECK-NEXT: [[DOTFCA_17_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 17 |
| 36 | +; CHECK-NEXT: [[DOTFCA_18_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 18 |
| 37 | +; CHECK-NEXT: [[DOTFCA_19_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 19 |
| 38 | +; CHECK-NEXT: [[DOTFCA_20_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 20 |
| 39 | +; CHECK-NEXT: [[DOTFCA_21_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 21 |
| 40 | +; CHECK-NEXT: [[DOTFCA_22_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 22 |
| 41 | +; CHECK-NEXT: [[DOTFCA_23_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 23 |
| 42 | +; CHECK-NEXT: [[DOTFCA_24_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 24 |
| 43 | +; CHECK-NEXT: [[DOTFCA_25_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 25 |
| 44 | +; CHECK-NEXT: [[DOTFCA_26_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 26 |
| 45 | +; CHECK-NEXT: [[DOTFCA_27_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 27 |
| 46 | +; CHECK-NEXT: [[TMP23:%.*]] = extractvalue [30 x i32] [[TMP3]], 28 |
| 47 | +; CHECK-NEXT: [[DOTFCA_29_EXTRACT:%.*]] = extractvalue [30 x i32] [[TMP3]], 29 |
| 48 | +; CHECK-NEXT: [[TMP4:%.*]] = freeze [[STRUCTC:%.*]] poison |
| 49 | +; CHECK-NEXT: [[DOTFCA_0_0_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 0 |
| 50 | +; CHECK-NEXT: [[DOTFCA_0_1_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 1 |
| 51 | +; CHECK-NEXT: [[DOTFCA_0_2_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 2 |
| 52 | +; CHECK-NEXT: [[DOTFCA_0_3_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 3 |
| 53 | +; CHECK-NEXT: [[DOTFCA_0_4_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 4 |
| 54 | +; CHECK-NEXT: [[DOTFCA_0_5_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 5 |
| 55 | +; CHECK-NEXT: [[DOTFCA_0_6_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 6 |
| 56 | +; CHECK-NEXT: [[DOTFCA_0_7_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 7 |
| 57 | +; CHECK-NEXT: [[DOTFCA_0_8_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 8 |
| 58 | +; CHECK-NEXT: [[DOTFCA_0_9_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 9 |
| 59 | +; CHECK-NEXT: [[DOTFCA_0_10_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 10 |
| 60 | +; CHECK-NEXT: [[DOTFCA_0_11_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 11 |
| 61 | +; CHECK-NEXT: [[DOTFCA_0_12_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 12 |
| 62 | +; CHECK-NEXT: [[DOTFCA_0_13_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 13 |
| 63 | +; CHECK-NEXT: [[DOTFCA_0_14_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 14 |
| 64 | +; CHECK-NEXT: [[DOTFCA_0_15_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 15 |
| 65 | +; CHECK-NEXT: [[DOTFCA_0_16_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 16 |
| 66 | +; CHECK-NEXT: [[DOTFCA_0_17_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 17 |
| 67 | +; CHECK-NEXT: [[DOTFCA_0_18_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 18 |
| 68 | +; CHECK-NEXT: [[DOTFCA_0_19_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 19 |
| 69 | +; CHECK-NEXT: [[DOTFCA_0_20_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 20 |
| 70 | +; CHECK-NEXT: [[DOTFCA_0_21_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 21 |
| 71 | +; CHECK-NEXT: [[DOTFCA_0_22_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 22 |
| 72 | +; CHECK-NEXT: [[DOTFCA_0_23_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 23 |
| 73 | +; CHECK-NEXT: [[DOTFCA_0_24_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 24 |
| 74 | +; CHECK-NEXT: [[DOTFCA_0_25_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 25 |
| 75 | +; CHECK-NEXT: [[DOTFCA_0_26_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 26 |
| 76 | +; CHECK-NEXT: [[DOTFCA_0_27_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 27 |
| 77 | +; CHECK-NEXT: [[DOTFCA_0_28_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 28 |
| 78 | +; CHECK-NEXT: [[DOTFCA_0_29_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 29 |
| 79 | +; CHECK-NEXT: [[DOTFCA_0_30_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 30 |
| 80 | +; CHECK-NEXT: [[DOTFCA_0_31_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 31 |
| 81 | +; CHECK-NEXT: [[DOTFCA_0_32_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 32 |
| 82 | +; CHECK-NEXT: [[DOTFCA_0_33_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 33 |
| 83 | +; CHECK-NEXT: [[DOTFCA_0_34_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 34 |
| 84 | +; CHECK-NEXT: [[DOTFCA_0_35_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 35 |
| 85 | +; CHECK-NEXT: [[DOTFCA_0_36_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 36 |
| 86 | +; CHECK-NEXT: [[DOTFCA_0_37_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 37 |
| 87 | +; CHECK-NEXT: [[DOTFCA_0_38_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 38 |
| 88 | +; CHECK-NEXT: [[DOTFCA_0_39_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 39 |
| 89 | +; CHECK-NEXT: [[DOTFCA_0_40_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 40 |
| 90 | +; CHECK-NEXT: [[DOTFCA_0_41_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 41 |
| 91 | +; CHECK-NEXT: [[DOTFCA_0_42_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 42 |
| 92 | +; CHECK-NEXT: [[DOTFCA_0_43_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 43 |
| 93 | +; CHECK-NEXT: [[DOTFCA_0_44_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 44 |
| 94 | +; CHECK-NEXT: [[DOTFCA_0_45_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 45 |
| 95 | +; CHECK-NEXT: [[DOTFCA_0_46_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 46 |
| 96 | +; CHECK-NEXT: [[DOTFCA_0_47_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 47 |
| 97 | +; CHECK-NEXT: [[DOTFCA_0_48_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 48 |
| 98 | +; CHECK-NEXT: [[DOTFCA_0_49_EXTRACT:%.*]] = extractvalue [[STRUCTC]] [[TMP4]], 0, 49 |
| 99 | +; CHECK-NEXT: [[TMP2:%.*]] = inttoptr i32 [[DOTFCA_0_EXTRACT]] to ptr |
| 100 | +; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP2]], align 4 |
| 101 | +; CHECK-NEXT: [[TMP27:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 1 |
| 102 | +; CHECK-NEXT: [[TMP7:%.*]] = load i32, ptr [[TMP27]], align 4 |
| 103 | +; CHECK-NEXT: [[TMP29:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 2 |
| 104 | +; CHECK-NEXT: [[TMP9:%.*]] = load i32, ptr [[TMP29]], align 4 |
| 105 | +; CHECK-NEXT: [[TMP31:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 3 |
| 106 | +; CHECK-NEXT: [[TMP11:%.*]] = load i32, ptr [[TMP31]], align 4 |
| 107 | +; CHECK-NEXT: [[TMP33:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 4 |
| 108 | +; CHECK-NEXT: [[TMP13:%.*]] = load i32, ptr [[TMP33]], align 4 |
| 109 | +; CHECK-NEXT: [[TMP35:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 5 |
| 110 | +; CHECK-NEXT: [[TMP15:%.*]] = load i32, ptr [[TMP35]], align 4 |
| 111 | +; CHECK-NEXT: [[TMP37:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 6 |
| 112 | +; CHECK-NEXT: [[TMP17:%.*]] = load i32, ptr [[TMP37]], align 4 |
| 113 | +; CHECK-NEXT: [[TMP39:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 7 |
| 114 | +; CHECK-NEXT: [[TMP19:%.*]] = load i32, ptr [[TMP39]], align 4 |
| 115 | +; CHECK-NEXT: [[TMP41:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 8 |
| 116 | +; CHECK-NEXT: [[TMP21:%.*]] = load i32, ptr [[TMP41]], align 4 |
| 117 | +; CHECK-NEXT: [[TMP43:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 9 |
| 118 | +; CHECK-NEXT: [[TMP24:%.*]] = load i32, ptr [[TMP43]], align 4 |
| 119 | +; CHECK-NEXT: [[TMP45:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 10 |
| 120 | +; CHECK-NEXT: [[TMP25:%.*]] = load i32, ptr [[TMP45]], align 4 |
| 121 | +; CHECK-NEXT: [[TMP47:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 11 |
| 122 | +; CHECK-NEXT: [[TMP28:%.*]] = load i32, ptr [[TMP47]], align 4 |
| 123 | +; CHECK-NEXT: [[TMP49:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 12 |
| 124 | +; CHECK-NEXT: [[TMP30:%.*]] = load i32, ptr [[TMP49]], align 4 |
| 125 | +; CHECK-NEXT: [[TMP51:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 13 |
| 126 | +; CHECK-NEXT: [[TMP32:%.*]] = load i32, ptr [[TMP51]], align 4 |
| 127 | +; CHECK-NEXT: [[TMP53:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 14 |
| 128 | +; CHECK-NEXT: [[TMP34:%.*]] = load i32, ptr [[TMP53]], align 4 |
| 129 | +; CHECK-NEXT: [[TMP55:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 15 |
| 130 | +; CHECK-NEXT: [[TMP36:%.*]] = load i32, ptr [[TMP55]], align 4 |
| 131 | +; CHECK-NEXT: [[TMP57:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 16 |
| 132 | +; CHECK-NEXT: [[TMP38:%.*]] = load i32, ptr [[TMP57]], align 4 |
| 133 | +; CHECK-NEXT: [[TMP59:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 17 |
| 134 | +; CHECK-NEXT: [[TMP40:%.*]] = load i32, ptr [[TMP59]], align 4 |
| 135 | +; CHECK-NEXT: [[TMP61:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 18 |
| 136 | +; CHECK-NEXT: [[TMP42:%.*]] = load i32, ptr [[TMP61]], align 4 |
| 137 | +; CHECK-NEXT: [[TMP63:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 19 |
| 138 | +; CHECK-NEXT: [[TMP44:%.*]] = load i32, ptr [[TMP63]], align 4 |
| 139 | +; CHECK-NEXT: [[TMP65:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 20 |
| 140 | +; CHECK-NEXT: [[TMP46:%.*]] = load i32, ptr [[TMP65]], align 4 |
| 141 | +; CHECK-NEXT: [[TMP67:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 21 |
| 142 | +; CHECK-NEXT: [[TMP48:%.*]] = load i32, ptr [[TMP67]], align 4 |
| 143 | +; CHECK-NEXT: [[TMP69:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 22 |
| 144 | +; CHECK-NEXT: [[TMP50:%.*]] = load i32, ptr [[TMP69]], align 4 |
| 145 | +; CHECK-NEXT: [[TMP71:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 23 |
| 146 | +; CHECK-NEXT: [[TMP52:%.*]] = load i32, ptr [[TMP71]], align 4 |
| 147 | +; CHECK-NEXT: [[TMP73:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 24 |
| 148 | +; CHECK-NEXT: [[TMP54:%.*]] = load i32, ptr [[TMP73]], align 4 |
| 149 | +; CHECK-NEXT: [[TMP75:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 25 |
| 150 | +; CHECK-NEXT: [[TMP56:%.*]] = load i32, ptr [[TMP75]], align 4 |
| 151 | +; CHECK-NEXT: [[TMP77:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i32 26 |
| 152 | +; CHECK-NEXT: [[TMP62:%.*]] = load i32, ptr [[TMP77]], align 4 |
| 153 | +; CHECK-NEXT: [[TMP60:%.*]] = inttoptr i32 [[DOTFCA_0_EXTRACT]] to ptr |
| 154 | +; CHECK-NEXT: [[TMP58:%.*]] = extractvalue { [[STRUCTA]], [23 x i32], [30 x i32] } [[TMP1]], 0 |
| 155 | +; CHECK-NEXT: [[DOTFCA_0_EXTRACT57:%.*]] = extractvalue [[STRUCTA]] [[TMP58]], 0 |
| 156 | +; CHECK-NEXT: ret void |
| 157 | +; |
| 158 | +entryresume.0: |
| 159 | + %1 = call ptr @getter(i32 108) |
| 160 | + %2 = insertvalue { %structA, [23 x i32], [30 x i32] } poison, %structA %arg01, 0 |
| 161 | + %3 = insertvalue { %structA, [23 x i32], [30 x i32] } %2, [23 x i32] %arg12, 1 |
| 162 | + %4 = insertvalue { %structA, [23 x i32], [30 x i32] } %3, [30 x i32] %arg23, 2 |
| 163 | + %5 = extractvalue { %structA, [23 x i32], [30 x i32] } %4, 2 |
| 164 | + %.fca.0.extract = extractvalue [30 x i32] %5, 0 |
| 165 | + %.fca.1.extract = extractvalue [30 x i32] %5, 1 |
| 166 | + %.fca.2.extract = extractvalue [30 x i32] %5, 2 |
| 167 | + %.fca.3.extract = extractvalue [30 x i32] %5, 3 |
| 168 | + %.fca.4.extract = extractvalue [30 x i32] %5, 4 |
| 169 | + %.fca.5.extract = extractvalue [30 x i32] %5, 5 |
| 170 | + %.fca.6.extract = extractvalue [30 x i32] %5, 6 |
| 171 | + %.fca.7.extract = extractvalue [30 x i32] %5, 7 |
| 172 | + %.fca.8.extract = extractvalue [30 x i32] %5, 8 |
| 173 | + %.fca.9.extract = extractvalue [30 x i32] %5, 9 |
| 174 | + %.fca.10.extract = extractvalue [30 x i32] %5, 10 |
| 175 | + %.fca.11.extract = extractvalue [30 x i32] %5, 11 |
| 176 | + %.fca.12.extract = extractvalue [30 x i32] %5, 12 |
| 177 | + %.fca.13.extract = extractvalue [30 x i32] %5, 13 |
| 178 | + %.fca.14.extract = extractvalue [30 x i32] %5, 14 |
| 179 | + %.fca.15.extract = extractvalue [30 x i32] %5, 15 |
| 180 | + %.fca.16.extract = extractvalue [30 x i32] %5, 16 |
| 181 | + %.fca.17.extract = extractvalue [30 x i32] %5, 17 |
| 182 | + %.fca.18.extract = extractvalue [30 x i32] %5, 18 |
| 183 | + %.fca.19.extract = extractvalue [30 x i32] %5, 19 |
| 184 | + %.fca.20.extract = extractvalue [30 x i32] %5, 20 |
| 185 | + %.fca.21.extract = extractvalue [30 x i32] %5, 21 |
| 186 | + %.fca.22.extract = extractvalue [30 x i32] %5, 22 |
| 187 | + %.fca.23.extract = extractvalue [30 x i32] %5, 23 |
| 188 | + %.fca.24.extract = extractvalue [30 x i32] %5, 24 |
| 189 | + %.fca.25.extract = extractvalue [30 x i32] %5, 25 |
| 190 | + %.fca.26.extract = extractvalue [30 x i32] %5, 26 |
| 191 | + %.fca.27.extract = extractvalue [30 x i32] %5, 27 |
| 192 | + %.fca.28.extract = extractvalue [30 x i32] %5, 28 |
| 193 | + %.fca.29.extract = extractvalue [30 x i32] %5, 29 |
| 194 | + %6 = freeze %structC poison |
| 195 | + %.fca.0.0.extract = extractvalue %structC %6, 0, 0 |
| 196 | + %.fca.0.1.extract = extractvalue %structC %6, 0, 1 |
| 197 | + %.fca.0.2.extract = extractvalue %structC %6, 0, 2 |
| 198 | + %.fca.0.3.extract = extractvalue %structC %6, 0, 3 |
| 199 | + %.fca.0.4.extract = extractvalue %structC %6, 0, 4 |
| 200 | + %.fca.0.5.extract = extractvalue %structC %6, 0, 5 |
| 201 | + %.fca.0.6.extract = extractvalue %structC %6, 0, 6 |
| 202 | + %.fca.0.7.extract = extractvalue %structC %6, 0, 7 |
| 203 | + %.fca.0.8.extract = extractvalue %structC %6, 0, 8 |
| 204 | + %.fca.0.9.extract = extractvalue %structC %6, 0, 9 |
| 205 | + %.fca.0.10.extract = extractvalue %structC %6, 0, 10 |
| 206 | + %.fca.0.11.extract = extractvalue %structC %6, 0, 11 |
| 207 | + %.fca.0.12.extract = extractvalue %structC %6, 0, 12 |
| 208 | + %.fca.0.13.extract = extractvalue %structC %6, 0, 13 |
| 209 | + %.fca.0.14.extract = extractvalue %structC %6, 0, 14 |
| 210 | + %.fca.0.15.extract = extractvalue %structC %6, 0, 15 |
| 211 | + %.fca.0.16.extract = extractvalue %structC %6, 0, 16 |
| 212 | + %.fca.0.17.extract = extractvalue %structC %6, 0, 17 |
| 213 | + %.fca.0.18.extract = extractvalue %structC %6, 0, 18 |
| 214 | + %.fca.0.19.extract = extractvalue %structC %6, 0, 19 |
| 215 | + %.fca.0.20.extract = extractvalue %structC %6, 0, 20 |
| 216 | + %.fca.0.21.extract = extractvalue %structC %6, 0, 21 |
| 217 | + %.fca.0.22.extract = extractvalue %structC %6, 0, 22 |
| 218 | + %.fca.0.23.extract = extractvalue %structC %6, 0, 23 |
| 219 | + %.fca.0.24.extract = extractvalue %structC %6, 0, 24 |
| 220 | + %.fca.0.25.extract = extractvalue %structC %6, 0, 25 |
| 221 | + %.fca.0.26.extract = extractvalue %structC %6, 0, 26 |
| 222 | + %.fca.0.27.extract = extractvalue %structC %6, 0, 27 |
| 223 | + %.fca.0.28.extract = extractvalue %structC %6, 0, 28 |
| 224 | + %.fca.0.29.extract = extractvalue %structC %6, 0, 29 |
| 225 | + %.fca.0.30.extract = extractvalue %structC %6, 0, 30 |
| 226 | + %.fca.0.31.extract = extractvalue %structC %6, 0, 31 |
| 227 | + %.fca.0.32.extract = extractvalue %structC %6, 0, 32 |
| 228 | + %.fca.0.33.extract = extractvalue %structC %6, 0, 33 |
| 229 | + %.fca.0.34.extract = extractvalue %structC %6, 0, 34 |
| 230 | + %.fca.0.35.extract = extractvalue %structC %6, 0, 35 |
| 231 | + %.fca.0.36.extract = extractvalue %structC %6, 0, 36 |
| 232 | + %.fca.0.37.extract = extractvalue %structC %6, 0, 37 |
| 233 | + %.fca.0.38.extract = extractvalue %structC %6, 0, 38 |
| 234 | + %.fca.0.39.extract = extractvalue %structC %6, 0, 39 |
| 235 | + %.fca.0.40.extract = extractvalue %structC %6, 0, 40 |
| 236 | + %.fca.0.41.extract = extractvalue %structC %6, 0, 41 |
| 237 | + %.fca.0.42.extract = extractvalue %structC %6, 0, 42 |
| 238 | + %.fca.0.43.extract = extractvalue %structC %6, 0, 43 |
| 239 | + %.fca.0.44.extract = extractvalue %structC %6, 0, 44 |
| 240 | + %.fca.0.45.extract = extractvalue %structC %6, 0, 45 |
| 241 | + %.fca.0.46.extract = extractvalue %structC %6, 0, 46 |
| 242 | + %.fca.0.47.extract = extractvalue %structC %6, 0, 47 |
| 243 | + %.fca.0.48.extract = extractvalue %structC %6, 0, 48 |
| 244 | + %.fca.0.49.extract = extractvalue %structC %6, 0, 49 |
| 245 | + %7 = inttoptr i32 %.fca.0.extract to ptr |
| 246 | + %8 = load i32, ptr %7, align 4 |
| 247 | + %9 = getelementptr inbounds i32, ptr %7, i32 1 |
| 248 | + %10 = load i32, ptr %9, align 4 |
| 249 | + %11 = getelementptr inbounds i32, ptr %7, i32 2 |
| 250 | + %12 = load i32, ptr %11, align 4 |
| 251 | + %13 = getelementptr inbounds i32, ptr %7, i32 3 |
| 252 | + %14 = load i32, ptr %13, align 4 |
| 253 | + %15 = getelementptr inbounds i32, ptr %7, i32 4 |
| 254 | + %16 = load i32, ptr %15, align 4 |
| 255 | + %17 = getelementptr inbounds i32, ptr %7, i32 5 |
| 256 | + %18 = load i32, ptr %17, align 4 |
| 257 | + %19 = getelementptr inbounds i32, ptr %7, i32 6 |
| 258 | + %20 = load i32, ptr %19, align 4 |
| 259 | + %21 = getelementptr inbounds i32, ptr %7, i32 7 |
| 260 | + %22 = load i32, ptr %21, align 4 |
| 261 | + %23 = getelementptr inbounds i32, ptr %7, i32 8 |
| 262 | + %24 = load i32, ptr %23, align 4 |
| 263 | + %25 = getelementptr inbounds i32, ptr %7, i32 9 |
| 264 | + %26 = load i32, ptr %25, align 4 |
| 265 | + %27 = getelementptr inbounds i32, ptr %7, i32 10 |
| 266 | + %28 = load i32, ptr %27, align 4 |
| 267 | + %29 = getelementptr inbounds i32, ptr %7, i32 11 |
| 268 | + %30 = load i32, ptr %29, align 4 |
| 269 | + %31 = getelementptr inbounds i32, ptr %7, i32 12 |
| 270 | + %32 = load i32, ptr %31, align 4 |
| 271 | + %33 = getelementptr inbounds i32, ptr %7, i32 13 |
| 272 | + %34 = load i32, ptr %33, align 4 |
| 273 | + %35 = getelementptr inbounds i32, ptr %7, i32 14 |
| 274 | + %36 = load i32, ptr %35, align 4 |
| 275 | + %37 = getelementptr inbounds i32, ptr %7, i32 15 |
| 276 | + %38 = load i32, ptr %37, align 4 |
| 277 | + %39 = getelementptr inbounds i32, ptr %7, i32 16 |
| 278 | + %40 = load i32, ptr %39, align 4 |
| 279 | + %41 = getelementptr inbounds i32, ptr %7, i32 17 |
| 280 | + %42 = load i32, ptr %41, align 4 |
| 281 | + %43 = getelementptr inbounds i32, ptr %7, i32 18 |
| 282 | + %44 = load i32, ptr %43, align 4 |
| 283 | + %45 = getelementptr inbounds i32, ptr %7, i32 19 |
| 284 | + %46 = load i32, ptr %45, align 4 |
| 285 | + %47 = getelementptr inbounds i32, ptr %7, i32 20 |
| 286 | + %48 = load i32, ptr %47, align 4 |
| 287 | + %49 = getelementptr inbounds i32, ptr %7, i32 21 |
| 288 | + %50 = load i32, ptr %49, align 4 |
| 289 | + %51 = getelementptr inbounds i32, ptr %7, i32 22 |
| 290 | + %52 = load i32, ptr %51, align 4 |
| 291 | + %53 = getelementptr inbounds i32, ptr %7, i32 23 |
| 292 | + %54 = load i32, ptr %53, align 4 |
| 293 | + %55 = getelementptr inbounds i32, ptr %7, i32 24 |
| 294 | + %56 = load i32, ptr %55, align 4 |
| 295 | + %57 = getelementptr inbounds i32, ptr %7, i32 25 |
| 296 | + %58 = load i32, ptr %57, align 4 |
| 297 | + %59 = getelementptr inbounds i32, ptr %7, i32 26 |
| 298 | + %60 = load i32, ptr %59, align 4 |
| 299 | + %61 = inttoptr i32 %.fca.0.extract to ptr |
| 300 | + %62 = extractvalue { %structA, [23 x i32], [30 x i32] } %4, 0 |
| 301 | + %.fca.0.extract57 = extractvalue %structA %62, 0 |
| 302 | + ret void |
| 303 | +} |
| 304 | + |
| 305 | +declare ptr @getter(i32) |
0 commit comments