mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #13130 from ethereum/check-overflow-after-add-sub-operations
Check overflow after add sub operations
This commit is contained in:
@@ -19,6 +19,6 @@ contract c {
|
||||
// compileToEwasm: also
|
||||
// ----
|
||||
// test() -> 0xffffffff, 0x0000000000000000000000000a00090008000700060005000400030002000100, 0x0000000000000000000000000000000000000000000000000000000000000000
|
||||
// gas irOptimized: 124757
|
||||
// gas legacy: 186184
|
||||
// gas legacyOptimized: 165682
|
||||
// gas irOptimized: 124817
|
||||
// gas legacy: 186028
|
||||
// gas legacyOptimized: 165692
|
||||
|
||||
@@ -38,10 +38,10 @@ contract c {
|
||||
// compileViaYul: true
|
||||
// ----
|
||||
// test1(uint256[][]): 0x20, 2, 0x40, 0x40, 2, 23, 42 -> 2, 65
|
||||
// gas irOptimized: 180766
|
||||
// gas irOptimized: 180769
|
||||
// test2(uint256[][2]): 0x20, 0x40, 0x40, 2, 23, 42 -> 2, 65
|
||||
// gas irOptimized: 157564
|
||||
// gas irOptimized: 157567
|
||||
// test3(uint256[2][]): 0x20, 2, 23, 42, 23, 42 -> 2, 65
|
||||
// gas irOptimized: 134630
|
||||
// gas irOptimized: 134633
|
||||
// test4(uint256[2][2]): 23, 42, 23, 42 -> 65
|
||||
// gas irOptimized: 111268
|
||||
// gas irOptimized: 111271
|
||||
|
||||
@@ -38,12 +38,12 @@ contract Test {
|
||||
}
|
||||
// ----
|
||||
// test() -> 24
|
||||
// gas irOptimized: 226694
|
||||
// gas legacy: 227133
|
||||
// gas legacyOptimized: 226547
|
||||
// gas irOptimized: 226700
|
||||
// gas legacy: 227121
|
||||
// gas legacyOptimized: 226557
|
||||
// test1() -> 3
|
||||
// test2() -> 6
|
||||
// test3() -> 24
|
||||
// gas irOptimized: 133254
|
||||
// gas legacy: 134295
|
||||
// gas legacyOptimized: 133383
|
||||
// gas irOptimized: 133260
|
||||
// gas legacy: 134283
|
||||
// gas legacyOptimized: 133393
|
||||
|
||||
@@ -14,9 +14,9 @@ contract c {
|
||||
// ----
|
||||
// storageEmpty -> 1
|
||||
// fill() ->
|
||||
// gas irOptimized: 519616
|
||||
// gas legacy: 521710
|
||||
// gas legacyOptimized: 516922
|
||||
// gas irOptimized: 519490
|
||||
// gas legacy: 521584
|
||||
// gas legacyOptimized: 517027
|
||||
// storageEmpty -> 0
|
||||
// halfClear() ->
|
||||
// storageEmpty -> 0
|
||||
|
||||
@@ -12,9 +12,9 @@ contract c {
|
||||
// ----
|
||||
// storageEmpty -> 1
|
||||
// fill() ->
|
||||
// gas irOptimized: 465440
|
||||
// gas legacy: 471400
|
||||
// gas legacyOptimized: 467400
|
||||
// gas irOptimized: 465380
|
||||
// gas legacy: 471280
|
||||
// gas legacyOptimized: 467500
|
||||
// storageEmpty -> 0
|
||||
// clear() ->
|
||||
// storageEmpty -> 1
|
||||
|
||||
@@ -23,7 +23,7 @@ contract c {
|
||||
}
|
||||
// ----
|
||||
// test() -> 1, 2, 3
|
||||
// gas irOptimized: 2280132
|
||||
// gas irOptimized: 2280147
|
||||
// gas legacy: 2273434
|
||||
// gas legacyOptimized: 2261820
|
||||
// gas legacyOptimized: 2261844
|
||||
// storageEmpty -> 1
|
||||
|
||||
@@ -18,7 +18,7 @@ contract c {
|
||||
}
|
||||
// ----
|
||||
// test() -> 38, 28, 18
|
||||
// gas irOptimized: 186364
|
||||
// gas irOptimized: 186370
|
||||
// gas legacy: 189492
|
||||
// gas legacyOptimized: 178294
|
||||
// gas legacyOptimized: 178318
|
||||
// storageEmpty -> 1
|
||||
|
||||
@@ -18,7 +18,7 @@ contract c {
|
||||
}
|
||||
// ----
|
||||
// test() -> 20, 10
|
||||
// gas irOptimized: 158009
|
||||
// gas irOptimized: 158020
|
||||
// gas legacy: 159279
|
||||
// gas legacyOptimized: 152921
|
||||
// gas legacyOptimized: 152937
|
||||
// storageEmpty -> 1
|
||||
|
||||
@@ -16,7 +16,7 @@ contract c {
|
||||
}
|
||||
// ----
|
||||
// test() -> true
|
||||
// gas irOptimized: 180539
|
||||
// gas legacy: 228685
|
||||
// gas legacyOptimized: 209662
|
||||
// gas irOptimized: 176111
|
||||
// gas legacy: 224093
|
||||
// gas legacyOptimized: 205152
|
||||
// storageEmpty -> 1
|
||||
|
||||
@@ -15,6 +15,6 @@ contract c {
|
||||
}
|
||||
// ----
|
||||
// test() -> 0
|
||||
// gas irOptimized: 173650
|
||||
// gas irOptimized: 174126
|
||||
// gas legacy: 216790
|
||||
// gas legacyOptimized: 203886
|
||||
// gas legacyOptimized: 204003
|
||||
|
||||
@@ -21,9 +21,9 @@ contract D is B, C {
|
||||
}
|
||||
// ----
|
||||
// constructor(): 2, 0 ->
|
||||
// gas irOptimized: 154366
|
||||
// gas legacy: 170665
|
||||
// gas legacyOptimized: 145396
|
||||
// gas irOptimized: 154331
|
||||
// gas legacy: 170115
|
||||
// gas legacyOptimized: 145429
|
||||
// i() -> 2
|
||||
// j() -> 2
|
||||
// k() -> 1
|
||||
|
||||
@@ -12,8 +12,8 @@ contract D is C {
|
||||
}
|
||||
// ----
|
||||
// constructor(): 2, 0 ->
|
||||
// gas irOptimized: 123982
|
||||
// gas legacy: 139250
|
||||
// gas legacyOptimized: 119367
|
||||
// gas irOptimized: 123966
|
||||
// gas legacy: 138700
|
||||
// gas legacyOptimized: 119400
|
||||
// i() -> 2
|
||||
// k() -> 1
|
||||
|
||||
@@ -13,6 +13,6 @@ contract C {
|
||||
// ----
|
||||
// createEvent(uint256): 42 ->
|
||||
// ~ emit E(uint256[]): 0x20, 0x03, 0x2a, 0x2b, 0x2c
|
||||
// gas irOptimized: 113517
|
||||
// gas legacy: 116393
|
||||
// gas legacyOptimized: 114415
|
||||
// gas irOptimized: 113514
|
||||
// gas legacy: 116381
|
||||
// gas legacyOptimized: 114425
|
||||
|
||||
@@ -14,6 +14,6 @@ contract C {
|
||||
// ----
|
||||
// createEvent(uint256): 42 ->
|
||||
// ~ emit E(uint256[]): 0x20, 0x03, 0x2a, 0x2b, 0x2c
|
||||
// gas irOptimized: 113517
|
||||
// gas legacy: 116393
|
||||
// gas legacyOptimized: 114415
|
||||
// gas irOptimized: 113514
|
||||
// gas legacy: 116381
|
||||
// gas legacyOptimized: 114425
|
||||
|
||||
@@ -16,5 +16,5 @@ contract C {
|
||||
// createEvent(uint256): 42 ->
|
||||
// ~ emit E(uint256[][]): 0x20, 0x02, 0x40, 0xa0, 0x02, 0x2a, 0x2b, 0x02, 0x2c, 0x2d
|
||||
// gas irOptimized: 185145
|
||||
// gas legacy: 187621
|
||||
// gas legacyOptimized: 184551
|
||||
// gas legacy: 187603
|
||||
// gas legacyOptimized: 184566
|
||||
|
||||
@@ -33,9 +33,9 @@ contract test {
|
||||
// EVMVersion: >=constantinople
|
||||
// ----
|
||||
// constructor()
|
||||
// gas irOptimized: 443542
|
||||
// gas legacy: 765640
|
||||
// gas legacyOptimized: 541810
|
||||
// gas irOptimized: 444190
|
||||
// gas legacy: 757857
|
||||
// gas legacyOptimized: 539866
|
||||
// encode_inline_asm(bytes): 0x20, 0 -> 0x20, 0
|
||||
// encode_inline_asm(bytes): 0x20, 1, "f" -> 0x20, 4, "Zg=="
|
||||
// encode_inline_asm(bytes): 0x20, 2, "fo" -> 0x20, 4, "Zm8="
|
||||
@@ -51,10 +51,10 @@ contract test {
|
||||
// encode_no_asm(bytes): 0x20, 5, "fooba" -> 0x20, 8, "Zm9vYmE="
|
||||
// encode_no_asm(bytes): 0x20, 6, "foobar" -> 0x20, 8, "Zm9vYmFy"
|
||||
// encode_inline_asm_large()
|
||||
// gas irOptimized: 1385042
|
||||
// gas legacy: 1652033
|
||||
// gas legacyOptimized: 1201033
|
||||
// gas irOptimized: 1382042
|
||||
// gas legacy: 1646033
|
||||
// gas legacyOptimized: 1206033
|
||||
// encode_no_asm_large()
|
||||
// gas irOptimized: 3335099
|
||||
// gas legacy: 4777077
|
||||
// gas legacyOptimized: 2890077
|
||||
// gas irOptimized: 3311099
|
||||
// gas legacy: 4723077
|
||||
// gas legacyOptimized: 2909077
|
||||
|
||||
@@ -176,9 +176,9 @@ contract DepositContract is IDepositContract, ERC165 {
|
||||
}
|
||||
// ----
|
||||
// constructor()
|
||||
// gas irOptimized: 1433406
|
||||
// gas legacy: 2435803
|
||||
// gas legacyOptimized: 1775425
|
||||
// gas irOptimized: 1432633
|
||||
// gas legacy: 2427722
|
||||
// gas legacyOptimized: 1773892
|
||||
// supportsInterface(bytes4): 0x0 -> 0
|
||||
// supportsInterface(bytes4): 0xffffffff00000000000000000000000000000000000000000000000000000000 -> false # defined to be false by ERC-165 #
|
||||
// supportsInterface(bytes4): 0x01ffc9a700000000000000000000000000000000000000000000000000000000 -> true # ERC-165 id #
|
||||
|
||||
@@ -48,9 +48,9 @@ contract test {
|
||||
}
|
||||
// ----
|
||||
// constructor()
|
||||
// gas irOptimized: 1878547
|
||||
// gas legacy: 2478955
|
||||
// gas legacyOptimized: 1877737
|
||||
// gas irOptimized: 1876171
|
||||
// gas legacy: 2471603
|
||||
// gas legacyOptimized: 1876669
|
||||
// div(int256,int256): 3141592653589793238, 88714123 -> 35412542528203691288251815328
|
||||
// gas irOptimized: 22137
|
||||
// gas legacy: 22767
|
||||
|
||||
@@ -48,9 +48,9 @@ contract test {
|
||||
}
|
||||
// ----
|
||||
// constructor()
|
||||
// gas irOptimized: 1737100
|
||||
// gas legacy: 2248594
|
||||
// gas legacyOptimized: 1749096
|
||||
// gas irOptimized: 1735588
|
||||
// gas legacy: 2241243
|
||||
// gas legacyOptimized: 1748028
|
||||
// div(uint256,uint256): 3141592653589793238, 88714123 -> 35412542528203691288251815328
|
||||
// gas irOptimized: 22004
|
||||
// gas legacy: 22497
|
||||
|
||||
@@ -33,9 +33,9 @@ contract test {
|
||||
}
|
||||
// ----
|
||||
// constructor()
|
||||
// gas irOptimized: 438112
|
||||
// gas legacy: 671453
|
||||
// gas legacyOptimized: 480242
|
||||
// gas irOptimized: 422763
|
||||
// gas legacy: 654526
|
||||
// gas legacyOptimized: 474842
|
||||
// prb_pi() -> 3141592656369545286
|
||||
// gas irOptimized: 57478
|
||||
// gas legacy: 98903
|
||||
|
||||
@@ -297,5 +297,5 @@ contract Test {
|
||||
// verifyTx() -> true
|
||||
// ~ emit Verified(string): 0x20, 0x16, "Successfully verified."
|
||||
// gas irOptimized: 95261
|
||||
// gas legacy: 113731
|
||||
// gas legacy: 113239
|
||||
// gas legacyOptimized: 83670
|
||||
|
||||
@@ -49,9 +49,9 @@ contract test {
|
||||
}
|
||||
// ----
|
||||
// constructor()
|
||||
// gas irOptimized: 691317
|
||||
// gas legacy: 1127730
|
||||
// gas legacyOptimized: 753807
|
||||
// gas irOptimized: 678980
|
||||
// gas legacy: 1103242
|
||||
// gas legacyOptimized: 745184
|
||||
// toSlice(string): 0x20, 11, "hello world" -> 11, 0xa0
|
||||
// gas irOptimized: 22660
|
||||
// gas legacy: 23190
|
||||
@@ -69,6 +69,6 @@ contract test {
|
||||
// gas legacy: 31621
|
||||
// gas legacyOptimized: 27914
|
||||
// benchmark(string,bytes32): 0x40, 0x0842021, 8, "solidity" -> 0x2020
|
||||
// gas irOptimized: 2040019
|
||||
// gas legacy: 4356286
|
||||
// gas legacyOptimized: 2268278
|
||||
// gas irOptimized: 2017767
|
||||
// gas legacy: 4294510
|
||||
// gas legacyOptimized: 2327982
|
||||
|
||||
@@ -23,9 +23,9 @@ contract C {
|
||||
|
||||
// ----
|
||||
// constructor(), 1 ether ->
|
||||
// gas irOptimized: 270677
|
||||
// gas legacy: 464030
|
||||
// gas legacyOptimized: 304049
|
||||
// gas irOptimized: 270449
|
||||
// gas legacy: 456680
|
||||
// gas legacyOptimized: 302975
|
||||
// f(uint256): 0 -> FAILURE
|
||||
// f(uint256): 1 -> FAILURE
|
||||
// f(uint256): 2 -> FAILURE
|
||||
|
||||
+3
-3
@@ -26,9 +26,9 @@ contract C {
|
||||
// revertStrings: debug
|
||||
// ----
|
||||
// constructor(), 1 ether ->
|
||||
// gas irOptimized: 428679
|
||||
// gas legacy: 832976
|
||||
// gas legacyOptimized: 509560
|
||||
// gas irOptimized: 428444
|
||||
// gas legacy: 825625
|
||||
// gas legacyOptimized: 508492
|
||||
// f(uint256): 0 -> FAILURE, hex"08c379a0", 0x20, 37, "Target contract does not contain", " code"
|
||||
// f(uint256): 1 -> FAILURE, hex"08c379a0", 0x20, 37, "Target contract does not contain", " code"
|
||||
// f(uint256): 2 -> FAILURE, hex"08c379a0", 0x20, 37, "Target contract does not contain", " code"
|
||||
|
||||
@@ -17,9 +17,9 @@ contract C {
|
||||
// EVMVersion: >=byzantium
|
||||
// ----
|
||||
// constructor(), 20 wei
|
||||
// gas irOptimized: 184221
|
||||
// gas irOptimized: 184005
|
||||
// gas legacy: 294335
|
||||
// gas legacyOptimized: 174279
|
||||
// gas legacyOptimized: 173427
|
||||
// f(uint256): 20 -> 1370859564726510389319704988634906228201275401179
|
||||
// x() -> 1
|
||||
// f(uint256): 20 -> FAILURE
|
||||
@@ -27,7 +27,7 @@ contract C {
|
||||
// stack(uint256): 1023 -> FAILURE
|
||||
// gas irOptimized: 260987
|
||||
// gas legacy: 483942
|
||||
// gas legacyOptimized: 298807
|
||||
// gas legacyOptimized: 302349
|
||||
// x() -> 1
|
||||
// stack(uint256): 10 -> 693016686122178122849713379390321835634789309880
|
||||
// x() -> 2
|
||||
|
||||
@@ -27,5 +27,5 @@ contract C {
|
||||
// ----
|
||||
// t() -> 9
|
||||
// gas irOptimized: 99064
|
||||
// gas legacy: 158955
|
||||
// gas legacyOptimized: 108788
|
||||
// gas legacy: 152137
|
||||
// gas legacyOptimized: 107793
|
||||
|
||||
@@ -16,7 +16,7 @@ contract C {
|
||||
// ----
|
||||
// constructor(): 3 ->
|
||||
// gas irOptimized: 125477
|
||||
// gas legacy: 209361
|
||||
// gas legacyOptimized: 139324
|
||||
// gas legacy: 202011
|
||||
// gas legacyOptimized: 139552
|
||||
// f() -> 84, 23
|
||||
// m(uint256): 3 -> 7
|
||||
|
||||
@@ -21,6 +21,6 @@ contract A {
|
||||
// EVMVersion: >=constantinople
|
||||
// ----
|
||||
// f(), 10 ether -> 3007, 3008, 3009
|
||||
// gas irOptimized: 257206
|
||||
// gas legacy: 422501
|
||||
// gas legacyOptimized: 287472
|
||||
// gas irOptimized: 268645
|
||||
// gas legacy: 402016
|
||||
// gas legacyOptimized: 288087
|
||||
|
||||
@@ -113,9 +113,9 @@ contract ERC20 {
|
||||
// ----
|
||||
// constructor()
|
||||
// ~ emit Transfer(address,address,uint256): #0x00, #0x1212121212121212121212121212120000000012, 0x14
|
||||
// gas irOptimized: 364503
|
||||
// gas legacy: 860880
|
||||
// gas legacyOptimized: 420959
|
||||
// gas irOptimized: 362054
|
||||
// gas legacy: 852973
|
||||
// gas legacyOptimized: 419237
|
||||
// totalSupply() -> 20
|
||||
// gas irOptimized: 23415
|
||||
// gas legacy: 23653
|
||||
|
||||
@@ -40,4 +40,4 @@ contract D {
|
||||
// ----
|
||||
// library: "A":L
|
||||
// test() -> 3
|
||||
// gas legacy: 130369
|
||||
// gas legacy: 123521
|
||||
|
||||
@@ -96,9 +96,9 @@ contract ERC20 {
|
||||
// ----
|
||||
// constructor()
|
||||
// ~ emit Transfer(address,address,uint256): #0x00, #0x1212121212121212121212121212120000000012, 0x14
|
||||
// gas irOptimized: 357114
|
||||
// gas legacy: 832643
|
||||
// gas legacyOptimized: 416135
|
||||
// gas irOptimized: 357746
|
||||
// gas legacy: 824737
|
||||
// gas legacyOptimized: 414462
|
||||
// totalSupply() -> 20
|
||||
// gas irOptimized: 23415
|
||||
// gas legacy: 23524
|
||||
|
||||
@@ -20,7 +20,7 @@ contract test {
|
||||
|
||||
// ----
|
||||
// constructor(), 20 wei ->
|
||||
// gas irOptimized: 176219
|
||||
// gas legacy: 265006
|
||||
// gas legacyOptimized: 182842
|
||||
// gas irOptimized: 176003
|
||||
// gas legacy: 257656
|
||||
// gas legacyOptimized: 183070
|
||||
// sendAmount(uint256): 5 -> 8
|
||||
|
||||
@@ -19,7 +19,7 @@ contract test {
|
||||
|
||||
// ----
|
||||
// constructor(), 20 wei ->
|
||||
// gas irOptimized: 177083
|
||||
// gas legacy: 266728
|
||||
// gas legacyOptimized: 184762
|
||||
// gas irOptimized: 176867
|
||||
// gas legacy: 259378
|
||||
// gas legacyOptimized: 183682
|
||||
// sendAmount(uint256): 5 -> 8
|
||||
|
||||
@@ -26,9 +26,9 @@ contract C {
|
||||
// index(uint256): 10 -> true
|
||||
// index(uint256): 20 -> true
|
||||
// index(uint256): 0xFF -> true
|
||||
// gas irOptimized: 135578
|
||||
// gas legacy: 247324
|
||||
// gas legacyOptimized: 149578
|
||||
// gas irOptimized: 135584
|
||||
// gas legacy: 244264
|
||||
// gas legacyOptimized: 152128
|
||||
// accessIndex(uint256,int256): 10, 1 -> 2
|
||||
// accessIndex(uint256,int256): 10, 0 -> 1
|
||||
// accessIndex(uint256,int256): 10, 11 -> FAILURE, hex"4e487b71", 0x32
|
||||
|
||||
@@ -17,32 +17,32 @@ contract C {
|
||||
// test_indices(uint256): 1 ->
|
||||
// test_indices(uint256): 129 ->
|
||||
// gas irOptimized: 3018687
|
||||
// gas legacy: 3070431
|
||||
// gas legacyOptimized: 3010325
|
||||
// gas legacy: 3068883
|
||||
// gas legacyOptimized: 3011615
|
||||
// test_indices(uint256): 5 ->
|
||||
// gas irOptimized: 372543
|
||||
// gas legacy: 369211
|
||||
// gas legacyOptimized: 366089
|
||||
// gas legacy: 369151
|
||||
// gas legacyOptimized: 366139
|
||||
// test_indices(uint256): 10 ->
|
||||
// test_indices(uint256): 15 ->
|
||||
// gas irOptimized: 72860
|
||||
// test_indices(uint256): 0xFF ->
|
||||
// gas irOptimized: 3410255
|
||||
// gas legacy: 3512637
|
||||
// gas legacyOptimized: 3395047
|
||||
// gas legacy: 3509577
|
||||
// gas legacyOptimized: 3397597
|
||||
// test_indices(uint256): 1000 ->
|
||||
// gas irOptimized: 18206122
|
||||
// gas legacy: 18611999
|
||||
// gas legacyOptimized: 18166944
|
||||
// gas legacy: 18599999
|
||||
// gas legacyOptimized: 18176944
|
||||
// test_indices(uint256): 129 ->
|
||||
// gas irOptimized: 2756955
|
||||
// gas legacy: 2771961
|
||||
// gas legacyOptimized: 2714999
|
||||
// gas legacy: 2770413
|
||||
// gas legacyOptimized: 2716289
|
||||
// test_indices(uint256): 128 ->
|
||||
// gas irOptimized: 411903
|
||||
// gas legacy: 466504
|
||||
// gas legacyOptimized: 416888
|
||||
// gas legacy: 464968
|
||||
// gas legacyOptimized: 418168
|
||||
// test_indices(uint256): 1 ->
|
||||
// gas irOptimized: 368571
|
||||
// gas legacy: 363401
|
||||
// gas legacyOptimized: 361799
|
||||
// gas legacy: 363389
|
||||
// gas legacyOptimized: 361809
|
||||
|
||||
@@ -52,18 +52,18 @@ contract C {
|
||||
// ----
|
||||
// test_zeroed_indicies(uint256): 1 ->
|
||||
// test_zeroed_indicies(uint256): 5 ->
|
||||
// gas irOptimized: 131192
|
||||
// gas legacy: 132331
|
||||
// gas legacyOptimized: 129514
|
||||
// gas irOptimized: 131177
|
||||
// gas legacy: 132301
|
||||
// gas legacyOptimized: 129539
|
||||
// test_zeroed_indicies(uint256): 10 ->
|
||||
// gas irOptimized: 174810
|
||||
// gas legacy: 177248
|
||||
// gas legacyOptimized: 172062
|
||||
// gas irOptimized: 174780
|
||||
// gas legacy: 177188
|
||||
// gas legacyOptimized: 172112
|
||||
// test_zeroed_indicies(uint256): 15 ->
|
||||
// gas irOptimized: 198070
|
||||
// gas legacy: 201828
|
||||
// gas legacyOptimized: 194352
|
||||
// gas irOptimized: 198025
|
||||
// gas legacy: 201738
|
||||
// gas legacyOptimized: 194427
|
||||
// test_zeroed_indicies(uint256): 0xFF ->
|
||||
// gas irOptimized: 6098680
|
||||
// gas legacy: 6160863
|
||||
// gas legacyOptimized: 6024902
|
||||
// gas irOptimized: 6097915
|
||||
// gas legacy: 6159333
|
||||
// gas legacyOptimized: 6026177
|
||||
|
||||
Reference in New Issue
Block a user