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

47 lines
952 B
Plaintext

{
sstore(0, 0)
switch sload(0)
case 0 {
sstore(0x01, 0x0101)
}
case 1 {
sstore(0x02, 0x0101)
}
default {
sstore(0x03, 0x0101)
}
sstore(0x04, 0x0101)
}
// ----
// Block 0:
// Entries: None
// sstore: [ 0x00 0x00 ] => [ ]
// sload: [ 0x00 ] => [ TMP[sload, 0] ]
// Assignment(GHOST[0]): [ TMP[sload, 0] ] => [ GHOST[0] ]
// eq: [ GHOST[0] 0x00 ] => [ TMP[eq, 0] ]
// ConditionalJump TMP[eq, 0]:
// NonZero: 1
// Zero: 2
// Block 1:
// Entries: 0
// sstore: [ 0x0101 0x01 ] => [ ]
// Jump: 3
// Block 2:
// Entries: 0
// eq: [ GHOST[0] 0x01 ] => [ TMP[eq, 0] ]
// ConditionalJump TMP[eq, 0]:
// NonZero: 4
// Zero: 5
// Block 3:
// Entries: 1, 4, 5
// sstore: [ 0x0101 0x04 ] => [ ]
// MainExit
// Block 4:
// Entries: 2
// sstore: [ 0x0101 0x02 ] => [ ]
// Jump: 3
// Block 5:
// Entries: 2
// sstore: [ 0x0101 0x03 ] => [ ]
// Jump: 3