Merge pull request #6646 from ethereum/storageAccess

[Yul] Storage access for sol -> yul
This commit is contained in:
chriseth
2019-05-06 11:33:36 +02:00
committed by GitHub
14 changed files with 385 additions and 26 deletions
@@ -92,7 +92,9 @@ public:
yul::AssemblyStack asmStack(
m_evmVersion,
yul::AssemblyStack::Language::StrictAssembly,
m_optimiserSettings
// Ignore optimiser settings here because we need Yul optimisation to
// get code that does not exhaust the stack.
OptimiserSettings::full()
);
if (!asmStack.parseAndAnalyze("", m_compiler.yulIROptimized(
_contractName.empty() ? m_compiler.lastContractName() : _contractName
@@ -0,0 +1,16 @@
contract C {
uint16 x;
byte y;
uint16 z;
function f(uint8 a) public returns (uint _x) {
x = a;
y = byte(uint8(x) + 1);
z = uint8(y) + 1;
x = z + 1;
_x = x;
}
}
// ====
// compileViaYul: true
// ----
// f(uint8): 6 -> 9
@@ -0,0 +1,17 @@
contract C {
uint x;
uint y;
function setX(uint a) public returns (uint _x) {
x = a;
_x = x;
}
function setY(uint a) public returns (uint _y) {
y = a;
_y = y;
}
}
// ====
// compileViaYul: true
// ----
// setX(uint256): 6 -> 6
// setY(uint256): 2 -> 2