Do not use named function labels if function names are not unique.

This commit is contained in:
chriseth
2021-10-19 18:33:00 +02:00
parent 863a0d3b9c
commit 9f48b7419c
18 changed files with 429 additions and 7 deletions
@@ -0,0 +1 @@
--strict-assembly --debug-info none
@@ -0,0 +1 @@
Warning: Yul is still experimental. Please use the output with care.
@@ -0,0 +1,17 @@
object "object" {
code {
let a
let b
{
function z() -> y
{ y := calldataload(0) }
a := z()
}
{
function z() -> y
{ y := calldataload(0x20) }
b := z()
}
sstore(a, b)
}
}
@@ -0,0 +1,66 @@
======= yul_function_name_clashes/input.yul (EVM) =======
Pretty printed source:
object "object" {
code {
let a
let b
{
function z() -> y
{ y := calldataload(0) }
a := z()
}
{
function z() -> y
{ y := calldataload(0x20) }
b := z()
}
sstore(a, b)
}
}
Binary representation:
600080600f565b60008035905090565b60156006565b91506025565b6000602035905090565b602b601b565b90508082555050
Text representation:
0x00
dup1
jump(tag_2)
tag_1:
0x00
dup1
calldataload
swap1
pop
swap1
jump // out
tag_2:
tag_4
tag_1
jump // in
tag_4:
swap2
pop
jump(tag_6)
tag_5:
0x00
0x20
calldataload
swap1
pop
swap1
jump // out
tag_6:
tag_8
tag_5
jump // in
tag_8:
swap1
pop
dup1
dup3
sstore
pop
pop