Skip to content

Instantly share code, notes, and snippets.

@cameel
Created February 21, 2024 13:50
Show Gist options
  • Save cameel/695454004fb0c2dba3b4c300a17f95cc to your computer and use it in GitHub Desktop.
Save cameel/695454004fb0c2dba3b4c300a17f95cc to your computer and use it in GitHub Desktop.
solc-seqbench always-ssa-min/deposit_contract/soltest-input solc 0.8.25-seqbench.2024.2.14+commit.a2cabcb9
# Default sequence from solc 0.8.24 adjusted to stay in SSA form instead of reversing it in each cycle.
# Minimal version - only removes the `Vcul [j]` bit.
dhfoDgvulfnTUtnIf # None of these can make stack problems worse
[
xa[r]EscLM # Turn into SSA and simplify
cCTUtTOntnfDIul # Perform structural simplification
Lcul # Simplify again
# should have good "compilability" property here.
Tpeul # Run functional expression inliner
xa[rul] # Prune a bit more in SSA
xa[r]cL # Turn into SSA again and simplify
gvif # Run full inliner
CTUca[r]LSsTFOtfDnca[r]Iulc # SSA plus simplify
]
jmul[jul] VcTOcul jmul # Make source short and pretty
fDnTOcmu # Cleanup sequence

always-ssa-min/deposit_contract/soltest-input

runtime-gas runtime-gas-vs-optimization-time bytecode-size bytecode-size-vs-optimization-time creation-gas creation-gas-vs-optimization-time step-duration optimization-time

index step step_name bytecode_size creation_gas runtime_gas duration_microsec optimization_time
1 d VarDeclInitializer 5063 1757620 774549 43 43
2 h FunctionHoister 5063 1757620 774549 95 138
3 f BlockFlattener 5063 1757620 774549 31 169
4 o ForLoopInitRewriter 5063 1757620 774549 47 216
5 D DeadCodeEliminator 5063 1757620 774549 3192 3408
6 g FunctionGrouper 5063 1757620 774549 0 3408
7 v EquivalentFunctionCombiner 5063 1757620 774549 707 4115
8 u UnusedPruner 5004 1745349 774516 2335 6450
9 l CircularReferencesPruner 5004 1745349 774516 373 6823
10 f BlockFlattener 5004 1745349 774516 28 6851
11 n ControlFlowSimplifier 5004 1745349 774516 210 7061
12 T LiteralRematerialiser 4984 1741199 774185 623 7684
13 U ConditionalUnsimplifier 4984 1741199 774185 2199 9883
14 t StructuralSimplifier 4984 1741199 774185 559 10442
15 n ControlFlowSimplifier 4984 1741199 774185 248 10690
16 I ForLoopConditionIntoBody 4994 1743000 776681 542 11232
17 f BlockFlattener 4994 1743000 776681 29 11261
18 x ExpressionSplitter 5228 1791293 776445 1525 12786
19 a SSATransform 5247 1796876 779618 1239 14025
20 r UnusedAssignEliminator 5247 1796876 779618 2635 16660
21 E EqualStoreEliminator 5247 1796876 779618 3045 19705
22 s ExpressionSimplifier 5349 1814871 779303 4587 24292
23 c CommonSubexpressionEliminator 5179 1777115 759708 2585 26877
24 L LoadResolver 5179 1777115 759708 2293 29170
25 M LoopInvariantCodeMotion 5200 1770872 734520 1554 30724
26 c CommonSubexpressionEliminator 5236 1779065 740454 2420 33144
27 C ConditionalSimplifier 5220 1775602 740352 2100 35244
28 T LiteralRematerialiser 5072 1747963 736701 1303 36547
29 U ConditionalUnsimplifier 5074 1748395 737171 2043 38590
30 t StructuralSimplifier 5074 1748395 737171 38 38628
31 T LiteralRematerialiser 5074 1748395 737171 1114 39742
32 O ForLoopConditionOutOfBody 5074 1748395 737171 33 39775
33 n ControlFlowSimplifier 5074 1748395 737171 359 40134
34 t StructuralSimplifier 5074 1748395 737171 36 40170
35 n ControlFlowSimplifier 5074 1748395 737171 330 40500
36 f BlockFlattener 5074 1748395 737171 36 40536
37 D DeadCodeEliminator 5074 1748395 737171 2134 42670
38 I ForLoopConditionIntoBody 5074 1748395 737171 29 42699
39 u UnusedPruner 5027 1738907 734664 2888 45587
40 l CircularReferencesPruner 5027 1738907 734664 187 45774
41 L LoadResolver 5027 1738907 734664 1958 47732
42 c CommonSubexpressionEliminator 5027 1738907 734664 1808 49540
43 u UnusedPruner 5027 1738907 734664 1336 50876
44 l CircularReferencesPruner 5027 1738907 734664 188 51064
45 T LiteralRematerialiser 5027 1738907 734664 675 51739
46 p UnusedFunctionParameterPruner 5043 1742375 734826 384 52123
47 e ExpressionInliner 4467 1633715 714778 108 52231
48 u UnusedPruner 4467 1633715 714778 1772 54003
49 l CircularReferencesPruner 4467 1633715 714778 173 54176
50 x ExpressionSplitter 4584 1657004 715185 768 54944
51 a SSATransform 4656 1673690 717727 915 55859
52 r UnusedAssignEliminator 4656 1673690 717727 2126 57985
53 u UnusedPruner 4632 1668747 716407 1999 59984
54 l CircularReferencesPruner 4632 1668747 716407 177 60161
55 x ExpressionSplitter 4632 1668747 716407 403 60564
56 a SSATransform 4609 1663517 717820 949 61513
57 r UnusedAssignEliminator 4609 1663517 717820 2100 63613
58 c CommonSubexpressionEliminator 4797 1701193 721503 2253 65866
59 L LoadResolver 4797 1701193 721503 2095 67961
60 g FunctionGrouper 4797 1701193 721503 0 67961
61 v EquivalentFunctionCombiner 4797 1701193 721503 604 68565
62 i FullInliner 4516 1613695 688439 13481 82046
63 f BlockFlattener 4516 1613695 688439 111 82157
64 C ConditionalSimplifier 4516 1613695 688439 2511 84668
65 T LiteralRematerialiser 4281 1575116 675675 7270 91938
66 U ConditionalUnsimplifier 4281 1575116 675675 2329 94267
67 c CommonSubexpressionEliminator 5059 1701514 684450 10056 104323
68 a SSATransform 5339 1753954 686989 6886 111209
69 r UnusedAssignEliminator 5339 1753954 686989 4796 116005
70 L LoadResolver 5255 1732464 690730 7047 123052
71 S UnusedStoreEliminator 5252 1731828 690714 12509 135561
72 s ExpressionSimplifier 4813 1655214 681854 9101 144662
73 T LiteralRematerialiser 3999 1515523 675908 5566 150228
74 F FunctionSpecializer 4032 1522576 669114 1233 151461
75 O ForLoopConditionOutOfBody 4032 1522576 669114 94 151555
76 t StructuralSimplifier 4017 1519536 669126 243 151798
77 f BlockFlattener 4017 1519536 669126 104 151902
78 D DeadCodeEliminator 4017 1519536 669126 2294 154196
79 n ControlFlowSimplifier 4017 1519536 669126 2008 156204
80 c CommonSubexpressionEliminator 4546 1601483 674745 8901 165105
81 a SSATransform 4587 1606453 677992 4016 169121
82 r UnusedAssignEliminator 4587 1606453 677992 3266 172387
83 I ForLoopConditionIntoBody 4587 1606453 677992 80 172467
84 u UnusedPruner 3516 1460696 677998 4739 177206
85 l CircularReferencesPruner 3516 1460696 677998 60 177266
86 c CommonSubexpressionEliminator 3498 1457279 674751 1453 178719
87 x ExpressionSplitter 3499 1457495 674751 402 179121
88 a SSATransform 3527 1461357 677992 500 179621
89 r UnusedAssignEliminator 3527 1461357 677992 863 180484
90 E EqualStoreEliminator 3527 1461357 677992 1312 181796
91 s ExpressionSimplifier 3499 1454929 674468 1658 183454
92 c CommonSubexpressionEliminator 3671 1492899 675505 1207 184661
93 L LoadResolver 3671 1492899 675505 1356 186017
94 M LoopInvariantCodeMotion 3647 1492780 675331 616 186633
95 c CommonSubexpressionEliminator 3647 1492780 675331 1249 187882
96 C ConditionalSimplifier 3663 1492861 675421 718 188600
97 T LiteralRematerialiser 3200 1402688 661105 825 189425
98 U ConditionalUnsimplifier 3202 1403122 661219 656 190081
99 t StructuralSimplifier 3229 1408937 662349 108 190189
100 T LiteralRematerialiser 3229 1408937 662349 641 190830
101 O ForLoopConditionOutOfBody 3229 1408937 662349 22 190852
102 n ControlFlowSimplifier 3229 1408937 662349 184 191036
103 t StructuralSimplifier 3229 1408937 662349 24 191060
104 n ControlFlowSimplifier 3229 1408937 662349 173 191233
105 f BlockFlattener 3229 1408937 662349 23 191256
106 D DeadCodeEliminator 3229 1408937 662349 761 192017
107 I ForLoopConditionIntoBody 3229 1408937 662349 19 192036
108 u UnusedPruner 3193 1401566 660442 829 192865
109 l CircularReferencesPruner 3193 1401566 660442 48 192913
110 L LoadResolver 3193 1401566 660442 928 193841
111 c CommonSubexpressionEliminator 3260 1411398 661100 798 194639
112 u UnusedPruner 3260 1411398 661100 501 195140
113 l CircularReferencesPruner 3260 1411398 661100 47 195187
114 T LiteralRematerialiser 3193 1401566 660442 427 195614
115 p UnusedFunctionParameterPruner 3193 1401566 660442 142 195756
116 e ExpressionInliner 3193 1401566 660442 44 195800
117 u UnusedPruner 3193 1401566 660442 462 196262
118 l CircularReferencesPruner 3193 1401566 660442 48 196310
119 x ExpressionSplitter 3233 1410117 661740 656 196966
120 a SSATransform 3276 1418227 667599 552 197518
121 r UnusedAssignEliminator 3276 1418227 667599 909 198427
122 u UnusedPruner 3253 1413244 663385 1073 199500
123 l CircularReferencesPruner 3253 1413244 663385 50 199550
124 x ExpressionSplitter 3253 1413244 663385 286 199836
125 a SSATransform 3280 1419091 667623 530 200366
126 r UnusedAssignEliminator 3280 1419091 667623 766 201132
127 c CommonSubexpressionEliminator 3373 1437193 663136 1490 202622
128 L LoadResolver 3373 1437193 663136 1502 204124
129 g FunctionGrouper 3373 1437193 663136 0 204124
130 v EquivalentFunctionCombiner 3373 1437193 663136 380 204504
131 i FullInliner 3263 1413398 660376 1762 206266
132 f BlockFlattener 3263 1413398 660376 26 206292
133 C ConditionalSimplifier 3262 1413182 660373 653 206945
134 T LiteralRematerialiser 3101 1381290 659054 1150 208095
135 U ConditionalUnsimplifier 3108 1382804 659669 657 208752
136 c CommonSubexpressionEliminator 3324 1426604 661783 1858 210610
137 a SSATransform 3314 1428498 664059 787 211397
138 r UnusedAssignEliminator 3314 1428498 664059 1055 212452
139 L LoadResolver 3314 1428498 664059 1670 214122
140 S UnusedStoreEliminator 3314 1428498 664059 2312 216434
141 s ExpressionSimplifier 3317 1429245 663990 2140 218574
142 T LiteralRematerialiser 3115 1384165 662548 968 219542
143 F FunctionSpecializer 3144 1390438 662410 399 219941
144 O ForLoopConditionOutOfBody 3144 1390438 662410 25 219966
145 t StructuralSimplifier 3144 1390438 662395 48 220014
146 f BlockFlattener 3144 1390438 662395 26 220040
147 D DeadCodeEliminator 3144 1390438 662395 840 220880
148 n ControlFlowSimplifier 3144 1390438 662395 287 221167
149 c CommonSubexpressionEliminator 3380 1438515 659181 2071 223238
150 a SSATransform 3365 1439305 661447 720 223958
151 r UnusedAssignEliminator 3365 1439305 661447 1019 224977
152 I ForLoopConditionIntoBody 3365 1439305 661447 23 225000
153 u UnusedPruner 3464 1460810 661559 1658 226658
154 l CircularReferencesPruner 3464 1460810 661559 47 226705
155 c CommonSubexpressionEliminator 3472 1458805 659255 1202 227907
156 x ExpressionSplitter 3472 1458805 659255 296 228203
157 a SSATransform 3370 1440397 661485 421 228624
158 r UnusedAssignEliminator 3370 1440397 661485 795 229419
159 E EqualStoreEliminator 3370 1440397 661485 1175 230594
160 s ExpressionSimplifier 3369 1440659 661497 1590 232184
161 c CommonSubexpressionEliminator 3384 1439289 659171 1115 233299
162 L LoadResolver 3384 1439289 659171 1285 234584
163 M LoopInvariantCodeMotion 3426 1443532 658737 562 235146
164 c CommonSubexpressionEliminator 3462 1450152 664803 1108 236254
165 C ConditionalSimplifier 3468 1451448 666241 719 236973
166 T LiteralRematerialiser 3116 1384770 658807 833 237806
167 U ConditionalUnsimplifier 3123 1386277 659422 622 238428
168 t StructuralSimplifier 3123 1386277 659424 104 238532
169 T LiteralRematerialiser 3123 1386277 659424 611 239143
170 O ForLoopConditionOutOfBody 3123 1386277 659424 21 239164
171 n ControlFlowSimplifier 3123 1386277 659424 173 239337
172 t StructuralSimplifier 3123 1386277 659424 23 239360
173 n ControlFlowSimplifier 3123 1386277 659424 168 239528
174 f BlockFlattener 3123 1386277 659424 22 239550
175 D DeadCodeEliminator 3123 1386277 659424 713 240263
176 I ForLoopConditionIntoBody 3123 1386277 659424 18 240281
177 u UnusedPruner 3107 1383311 657576 824 241105
178 l CircularReferencesPruner 3107 1383311 657576 43 241148
179 L LoadResolver 3107 1383311 657576 917 242065
180 c CommonSubexpressionEliminator 3159 1394643 658538 786 242851
181 u UnusedPruner 3159 1394643 658538 452 243303
182 l CircularReferencesPruner 3159 1394643 658538 42 243345
183 T LiteralRematerialiser 3107 1383311 657576 425 243770
184 p UnusedFunctionParameterPruner 3107 1383311 657576 141 243911
185 e ExpressionInliner 3107 1383311 657576 43 243954
186 u UnusedPruner 3107 1383311 657576 488 244442
187 l CircularReferencesPruner 3107 1383311 657576 43 244485
188 x ExpressionSplitter 3129 1387768 659229 690 245175
189 a SSATransform 3167 1394786 663372 485 245660
190 r UnusedAssignEliminator 3167 1394786 663372 871 246531
191 u UnusedPruner 3143 1390217 660862 1115 247646
192 l CircularReferencesPruner 3143 1390217 660862 46 247692
193 x ExpressionSplitter 3143 1390217 660862 281 247973
194 a SSATransform 3165 1394366 663366 483 248456
195 r UnusedAssignEliminator 3165 1394366 663366 791 249247
196 c CommonSubexpressionEliminator 3343 1431344 659165 1494 250741
197 L LoadResolver 3343 1431344 659165 1428 252169
198 g FunctionGrouper 3343 1431344 659165 0 252169
199 v EquivalentFunctionCombiner 3343 1431344 659165 358 252527
200 i FullInliner 3333 1429184 658925 1356 253883
201 f BlockFlattener 3333 1429184 658925 23 253906
202 C ConditionalSimplifier 3333 1429184 658925 667 254573
203 T LiteralRematerialiser 3105 1382394 658563 953 255526
204 U ConditionalUnsimplifier 3112 1383894 659178 635 256161
205 c CommonSubexpressionEliminator 3333 1429184 658955 1597 257758
206 a SSATransform 3397 1447044 661307 546 258304
207 r UnusedAssignEliminator 3397 1447044 661307 816 259120
208 L LoadResolver 3397 1447044 661307 1519 260639
209 S UnusedStoreEliminator 3397 1447044 661307 2100 262739
210 s ExpressionSimplifier 3395 1446600 661289 1938 264677
211 T LiteralRematerialiser 3119 1385243 662053 824 265501
212 F FunctionSpecializer 3119 1385243 662053 167 265668
213 O ForLoopConditionOutOfBody 3119 1385243 662053 21 265689
214 t StructuralSimplifier 3119 1385243 662053 24 265713
215 f BlockFlattener 3119 1385243 662053 21 265734
216 D DeadCodeEliminator 3119 1385243 662053 678 266412
217 n ControlFlowSimplifier 3119 1385243 662053 215 266627
218 c CommonSubexpressionEliminator 3328 1428096 658931 1665 268292
219 a SSATransform 3394 1446396 661289 550 268842
220 r UnusedAssignEliminator 3394 1446396 661289 881 269723
221 I ForLoopConditionIntoBody 3394 1446396 661289 20 269743
222 u UnusedPruner 3390 1445637 661259 1418 271161
223 l CircularReferencesPruner 3390 1445637 661259 37 271198
224 c CommonSubexpressionEliminator 3398 1443646 658955 1043 272241
225 x ExpressionSplitter 3398 1443646 658955 220 272461
226 a SSATransform 3391 1445746 661259 427 272888
227 r UnusedAssignEliminator 3391 1445746 661259 698 273586
228 E EqualStoreEliminator 3391 1445746 661259 1127 274713
229 s ExpressionSimplifier 3391 1445746 661259 1422 276135
230 c CommonSubexpressionEliminator 3328 1428096 658931 1064 277199
231 L LoadResolver 3328 1428096 658931 1234 278433
232 M LoopInvariantCodeMotion 3377 1431531 658497 503 278936
233 c CommonSubexpressionEliminator 3410 1438909 664563 1011 279947
234 C ConditionalSimplifier 3416 1440205 666003 609 280556
235 T LiteralRematerialiser 3099 1381096 658503 743 281299
236 U ConditionalUnsimplifier 3106 1382586 659118 554 281853
237 t StructuralSimplifier 3106 1382586 659118 22 281875
238 T LiteralRematerialiser 3106 1382586 659118 626 282501
239 O ForLoopConditionOutOfBody 3106 1382586 659118 21 282522
240 n ControlFlowSimplifier 3106 1382586 659118 155 282677
241 t StructuralSimplifier 3106 1382586 659118 22 282699
242 n ControlFlowSimplifier 3106 1382586 659118 143 282842
243 f BlockFlattener 3106 1382586 659118 21 282863
244 D DeadCodeEliminator 3106 1382586 659118 622 283485
245 I ForLoopConditionIntoBody 3106 1382586 659118 17 283502
246 u UnusedPruner 3090 1379637 657270 751 284253
247 l CircularReferencesPruner 3090 1379637 657270 35 284288
248 L LoadResolver 3090 1379637 657270 856 285144
249 c CommonSubexpressionEliminator 3105 1382891 658210 730 285874
250 u UnusedPruner 3105 1382891 658210 482 286356
251 l CircularReferencesPruner 3105 1382891 658210 35 286391
252 T LiteralRematerialiser 3090 1379637 657270 410 286801
253 p UnusedFunctionParameterPruner 3090 1379637 657270 136 286937
254 e ExpressionInliner 3090 1379637 657270 55 286992
255 u UnusedPruner 3090 1379637 657270 436 287428
256 l CircularReferencesPruner 3090 1379637 657270 37 287465
257 x ExpressionSplitter 3115 1384737 658935 726 288191
258 a SSATransform 3153 1391767 663078 676 288867
259 r UnusedAssignEliminator 3153 1391767 663078 777 289644
260 u UnusedPruner 3129 1387191 660568 1030 290674
261 l CircularReferencesPruner 3129 1387191 660568 39 290713
262 x ExpressionSplitter 3129 1387191 660568 275 290988
263 a SSATransform 3151 1391335 663072 538 291526
264 r UnusedAssignEliminator 3151 1391335 663072 717 292243
265 c CommonSubexpressionEliminator 3328 1428096 658931 1668 293911
266 L LoadResolver 3328 1428096 658931 1487 295398
267 g FunctionGrouper 3328 1428096 658931 0 295398
268 v EquivalentFunctionCombiner 3328 1428096 658931 337 295735
269 i FullInliner 3328 1428096 658931 1169 296904
270 f BlockFlattener 3328 1428096 658931 23 296927
271 C ConditionalSimplifier 3328 1428096 658931 665 297592
272 T LiteralRematerialiser 3099 1381096 658503 963 298555
273 U ConditionalUnsimplifier 3106 1382586 659118 600 299155
274 c CommonSubexpressionEliminator 3328 1428096 658931 1585 300740
275 a SSATransform 3394 1446396 661289 564 301304
276 r UnusedAssignEliminator 3394 1446396 661289 786 302090
277 L LoadResolver 3394 1446396 661289 1561 303651
278 S UnusedStoreEliminator 3394 1446396 661289 2084 305735
279 s ExpressionSimplifier 3394 1446396 661289 2078 307813
280 T LiteralRematerialiser 3119 1385243 662053 959 308772
281 F FunctionSpecializer 3119 1385243 662053 159 308931
282 O ForLoopConditionOutOfBody 3119 1385243 662053 20 308951
283 t StructuralSimplifier 3119 1385243 662053 23 308974
284 f BlockFlattener 3119 1385243 662053 20 308994
285 D DeadCodeEliminator 3119 1385243 662053 628 309622
286 n ControlFlowSimplifier 3119 1385243 662053 212 309834
287 c CommonSubexpressionEliminator 3328 1428096 658931 1603 311437
288 a SSATransform 3394 1446396 661289 550 311987
289 r UnusedAssignEliminator 3394 1446396 661289 750 312737
290 I ForLoopConditionIntoBody 3394 1446396 661289 19 312756
291 u UnusedPruner 3390 1445637 661259 1367 314123
292 l CircularReferencesPruner 3390 1445637 661259 38 314161
293 c CommonSubexpressionEliminator 3398 1443646 658955 1030 315191
294 j ExpressionJoiner 3404 1444377 658237 268 315459
295 m Rematerialiser 3247 1415195 657026 578 316037
296 u UnusedPruner 3250 1416035 657026 683 316720
297 l CircularReferencesPruner 3250 1416035 657026 37 316757
298 j ExpressionJoiner 3250 1416035 657026 98 316855
299 u UnusedPruner 3250 1416035 657026 344 317199
300 l CircularReferencesPruner 3250 1416035 657026 36 317235
301 V SSAReverser 3250 1416035 657026 134 317369
302 c CommonSubexpressionEliminator 3257 1417559 656622 460 317829
303 T LiteralRematerialiser 3130 1388073 657157 167 317996
304 O ForLoopConditionOutOfBody 3120 1386213 654655 21 318017
305 c CommonSubexpressionEliminator 3234 1412671 654057 482 318499
306 u UnusedPruner 3234 1412671 654057 609 319108
307 l CircularReferencesPruner 3234 1412671 654057 50 319158
308 j ExpressionJoiner 3234 1412671 654057 86 319244
309 m Rematerialiser 3226 1410929 654443 281 319525
310 u UnusedPruner 3226 1410929 654443 382 319907
311 l CircularReferencesPruner 3226 1410929 654443 35 319942
312 f BlockFlattener 3226 1410929 654443 15 319957
313 D DeadCodeEliminator 3226 1410929 654443 558 320515
314 n ControlFlowSimplifier 3226 1410929 654443 59 320574
315 T LiteralRematerialiser 3120 1386213 654655 170 320744
316 O ForLoopConditionOutOfBody 3120 1386213 654655 17 320761
317 c CommonSubexpressionEliminator 3234 1412671 654057 480 321241
318 m Rematerialiser 3226 1410929 654443 282 321523
319 u UnusedPruner 3226 1410929 654443 342 321865
320 f BlockFlattener 3226 1410929 654443 15 321880
321 D DeadCodeEliminator 3226 1410929 654443 604 322484
322 n ControlFlowSimplifier 3226 1410929 654443 58 322542
323 T LiteralRematerialiser 3120 1386213 654655 169 322711
324 O ForLoopConditionOutOfBody 3120 1386213 654655 17 322728
325 c CommonSubexpressionEliminator 3234 1412671 654057 517 323245
326 m Rematerialiser 3226 1410929 654443 315 323560
327 u UnusedPruner 3226 1410929 654443 341 323901
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment