Add --yul-optimizations option to the command-line interface

This commit is contained in:
Kamil Śliwak
2020-04-24 17:30:56 +02:00
parent c41a832f65
commit 35cc64e33d
20 changed files with 105 additions and 2 deletions
@@ -0,0 +1 @@
--ir-optimized --optimize --yul-optimizations dhfoDgvulfnTUtnIf
@@ -0,0 +1,6 @@
pragma solidity >=0.0;
contract C
{
constructor() public {}
}
@@ -0,0 +1,34 @@
Optimized IR:
/*******************************************************
* WARNING *
* Solidity to Yul compilation is still EXPERIMENTAL *
* It can result in LOSS OF FUNDS or worse *
* !USE AT YOUR OWN RISK! *
*******************************************************/
object "C_6" {
code {
{
mstore(64, 128)
if callvalue() { revert(0, 0) }
codecopy(0, dataoffset("C_6_deployed"), datasize("C_6_deployed"))
return(0, datasize("C_6_deployed"))
}
}
object "C_6_deployed" {
code {
{
mstore(64, 128)
if iszero(lt(calldatasize(), 4))
{
let selector := shift_right_224_unsigned(calldataload(0))
pop(selector)
}
pop(iszero(calldatasize()))
revert(0, 0)
}
function shift_right_224_unsigned(value) -> newValue
{ newValue := shr(224, value) }
}
}
}
@@ -0,0 +1 @@
--ir-optimized --yul-optimizations dhfoDgvulfnTUtnIf
@@ -0,0 +1 @@
--yul-optimizations is invalid if Yul optimizer is disabled
@@ -0,0 +1 @@
1
@@ -0,0 +1,6 @@
pragma solidity >=0.0;
contract C
{
function f() public pure {}
}
@@ -0,0 +1 @@
--ir-optimized --optimize --yul-optimizations abcdefg{hijklmno}pqr[st]uvwxyz
@@ -0,0 +1 @@
Invalid optimizer step sequence in --yul-optimizations: 'b' is not a valid step abbreviation
@@ -0,0 +1 @@
1
@@ -0,0 +1,6 @@
pragma solidity >=0.0;
contract C
{
function f() public pure {}
}
@@ -0,0 +1 @@
--ir-optimized --optimize --yul-optimizations a[a][aa[aa]]a
@@ -0,0 +1 @@
Invalid optimizer step sequence in --yul-optimizations: Nested brackets are not supported
@@ -0,0 +1 @@
1
@@ -0,0 +1,6 @@
pragma solidity >=0.0;
contract C
{
function f() public pure {}
}
@@ -0,0 +1 @@
--ir-optimized --optimize --yul-optimizations a[a][
@@ -0,0 +1 @@
Invalid optimizer step sequence in --yul-optimizations: Unbalanced brackets
@@ -0,0 +1 @@
1
@@ -0,0 +1,6 @@
pragma solidity >=0.0;
contract C
{
function f() public pure {}
}