mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Disable StackLimitEvader again until we have stronger correctness guarantees.
This commit is contained in:
parent
2bfa3487cb
commit
82876fd00e
@ -668,6 +668,9 @@ string IRGenerator::dispatchRoutine(ContractDefinition const& _contract)
|
|||||||
|
|
||||||
string IRGenerator::memoryInit(bool _useMemoryGuard)
|
string IRGenerator::memoryInit(bool _useMemoryGuard)
|
||||||
{
|
{
|
||||||
|
// TODO: Remove once we have made sure it is safe, i.e. after "Yul memory objects lite".
|
||||||
|
// Also restore the tests removed in the commit that adds this comment.
|
||||||
|
_useMemoryGuard = false;
|
||||||
// This function should be called at the beginning of the EVM call frame
|
// This function should be called at the beginning of the EVM call frame
|
||||||
// and thus can assume all memory to be zero, including the contents of
|
// and thus can assume all memory to be zero, including the contents of
|
||||||
// the "zero memory area" (the position CompilerUtils::zeroPointer points to).
|
// the "zero memory area" (the position CompilerUtils::zeroPointer points to).
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
contract C {
|
|
||||||
uint256[1024] s;
|
|
||||||
function f() public returns (uint256 x) {
|
|
||||||
x = 42;
|
|
||||||
uint256 x0 = s[0];
|
|
||||||
uint256 x1 = s[1];
|
|
||||||
uint256 x2 = s[2];
|
|
||||||
uint256 x3 = s[3];
|
|
||||||
uint256 x4 = s[4];
|
|
||||||
uint256 x5 = s[5];
|
|
||||||
uint256 x6 = s[6];
|
|
||||||
uint256 x7 = s[7];
|
|
||||||
uint256 x8 = s[8];
|
|
||||||
uint256 x9 = s[9];
|
|
||||||
uint256 x10 = s[10];
|
|
||||||
uint256 x11 = s[11];
|
|
||||||
uint256 x12 = s[12];
|
|
||||||
uint256 x13 = s[13];
|
|
||||||
uint256 x14 = s[14];
|
|
||||||
uint256 x15 = s[15];
|
|
||||||
uint256 x16 = s[16];
|
|
||||||
uint256 x17 = s[17];
|
|
||||||
uint256 x18 = s[18];
|
|
||||||
s[1000] = x0 + 2;
|
|
||||||
s[118] = x18;
|
|
||||||
s[117] = x17;
|
|
||||||
s[116] = x16;
|
|
||||||
s[115] = x15;
|
|
||||||
s[114] = x14;
|
|
||||||
s[113] = x13;
|
|
||||||
s[112] = x12;
|
|
||||||
s[111] = x11;
|
|
||||||
s[110] = x10;
|
|
||||||
s[109] = x9;
|
|
||||||
s[108] = x8;
|
|
||||||
s[107] = x7;
|
|
||||||
s[106] = x6;
|
|
||||||
s[105] = x5;
|
|
||||||
s[104] = x4;
|
|
||||||
s[103] = x3;
|
|
||||||
s[102] = x2;
|
|
||||||
s[101] = x1;
|
|
||||||
s[100] = x0;
|
|
||||||
}
|
|
||||||
function test() public view returns(uint256) {
|
|
||||||
return s[1000];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// ====
|
|
||||||
// compileViaYul: true
|
|
||||||
// ----
|
|
||||||
// f() -> 0x2a
|
|
||||||
// test() -> 2
|
|
@ -1,57 +0,0 @@
|
|||||||
contract C {
|
|
||||||
uint256[1024] s;
|
|
||||||
function g() public returns (uint256) {
|
|
||||||
// try to prevent inlining
|
|
||||||
return f() + f() + f() + f() + f();
|
|
||||||
}
|
|
||||||
function f() public returns (uint256 x) {
|
|
||||||
x = 42;
|
|
||||||
uint256 x0 = s[0];
|
|
||||||
uint256 x1 = s[1];
|
|
||||||
uint256 x2 = s[2];
|
|
||||||
uint256 x3 = s[3];
|
|
||||||
uint256 x4 = s[4];
|
|
||||||
uint256 x5 = s[5];
|
|
||||||
uint256 x6 = s[6];
|
|
||||||
uint256 x7 = s[7];
|
|
||||||
uint256 x8 = s[8];
|
|
||||||
uint256 x9 = s[9];
|
|
||||||
uint256 x10 = s[10];
|
|
||||||
uint256 x11 = s[11];
|
|
||||||
uint256 x12 = s[12];
|
|
||||||
uint256 x13 = s[13];
|
|
||||||
uint256 x14 = s[14];
|
|
||||||
uint256 x15 = s[15];
|
|
||||||
uint256 x16 = s[16];
|
|
||||||
uint256 x17 = s[17];
|
|
||||||
uint256 x18 = s[18];
|
|
||||||
s[1000] = x0 + 2;
|
|
||||||
s[118] = x18;
|
|
||||||
s[117] = x17;
|
|
||||||
s[116] = x16;
|
|
||||||
s[115] = x15;
|
|
||||||
s[114] = x14;
|
|
||||||
s[113] = x13;
|
|
||||||
s[112] = x12;
|
|
||||||
s[111] = x11;
|
|
||||||
s[110] = x10;
|
|
||||||
s[109] = x9;
|
|
||||||
s[108] = x8;
|
|
||||||
s[107] = x7;
|
|
||||||
s[106] = x6;
|
|
||||||
s[105] = x5;
|
|
||||||
s[104] = x4;
|
|
||||||
s[103] = x3;
|
|
||||||
s[102] = x2;
|
|
||||||
s[101] = x1;
|
|
||||||
s[100] = x0;
|
|
||||||
}
|
|
||||||
function test() public view returns(uint256) {
|
|
||||||
return s[1000];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// ====
|
|
||||||
// compileViaYul: true
|
|
||||||
// ----
|
|
||||||
// f() -> 0x2a
|
|
||||||
// test() -> 2
|
|
Loading…
Reference in New Issue
Block a user