mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #6646 from ethereum/storageAccess
[Yul] Storage access for sol -> yul
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user