solidity/test/libyul/yulControlFlowGraph/function.yul
Daniel Kirchner af61f25e51 Unit tests.
2021-06-14 16:50:06 +02:00

55 lines
1.2 KiB
Plaintext

{
function f(a, b) -> r {
let x := add(a,b)
r := sub(x,a)
}
function g() {
sstore(0x01, 0x0101)
}
function h(x) {
h(f(x, 0))
g()
}
function i() -> v, w {
v := 0x0202
w := 0x0303
}
let x, y := i()
h(x)
h(y)
}
// ----
// Block 0:
// Entries: None
// i: [ RET[i] ] => [ TMP[i, 0] TMP[i, 1] ]
// Assignment(x, y): [ TMP[i, 0] TMP[i, 1] ] => [ x y ]
// h: [ RET[h] x ] => [ ]
// h: [ RET[h] y ] => [ ]
// MainExit
// function f(a, b) -> r:
// Block 0:
// Entries: None
// add: [ b a ] => [ TMP[add, 0] ]
// Assignment(x): [ TMP[add, 0] ] => [ x ]
// sub: [ a x ] => [ TMP[sub, 0] ]
// Assignment(r): [ TMP[sub, 0] ] => [ r ]
// FunctionReturn of f
// function g():
// Block 0:
// Entries: None
// sstore: [ 0x0101 0x01 ] => [ ]
// FunctionReturn of g
// function h(x):
// Block 0:
// Entries: None
// f: [ RET[f] 0x00 x ] => [ TMP[f, 0] ]
// h: [ RET[h] TMP[f, 0] ] => [ ]
// g: [ RET[g] ] => [ ]
// FunctionReturn of h
// function i() -> v, w:
// Block 0:
// Entries: None
// Assignment(v): [ 0x0202 ] => [ v ]
// Assignment(w): [ 0x0303 ] => [ w ]
// FunctionReturn of i