diff --git a/test/libyul/functionSideEffects/memory.yul b/test/libyul/functionSideEffects/memory.yul new file mode 100644 index 000000000..6db272b16 --- /dev/null +++ b/test/libyul/functionSideEffects/memory.yul @@ -0,0 +1,14 @@ +{ + function a() { mstore8(0, 32) } + function f() { a() } + function g() { sstore(0, 1) } // does not affect memory + function h() { pop(mload(0)) } + function i() { pop(msize()) } +} +// ---- +// : movable, sideEffectFree, sideEffectFreeIfNoMSize +// a: invalidatesMemory +// f: invalidatesMemory +// g: invalidatesStorage +// h: sideEffectFreeIfNoMSize +// i: sideEffectFree, sideEffectFreeIfNoMSize diff --git a/test/libyul/functionSideEffects/otherImmovables.yul b/test/libyul/functionSideEffects/otherImmovables.yul new file mode 100644 index 000000000..18e050fa0 --- /dev/null +++ b/test/libyul/functionSideEffects/otherImmovables.yul @@ -0,0 +1,12 @@ +{ + function a() { pop(gas()) } + function f() { a() } + function g() { stop() } + function h() { invalid() } +} +// ---- +// : movable, sideEffectFree, sideEffectFreeIfNoMSize +// a: sideEffectFree, sideEffectFreeIfNoMSize +// f: sideEffectFree, sideEffectFreeIfNoMSize +// g: +// h: diff --git a/test/libyul/functionSideEffects/state.yul b/test/libyul/functionSideEffects/state.yul new file mode 100644 index 000000000..2b6cd5ce1 --- /dev/null +++ b/test/libyul/functionSideEffects/state.yul @@ -0,0 +1,10 @@ +{ + function a() { pop(call(100, 0x010, 10, 0x00, 32, 0x0100, 32))} + function f() { a() } + function g() { sstore(0, 1) } +} +// ---- +// : movable, sideEffectFree, sideEffectFreeIfNoMSize +// a: invalidatesStorage, invalidatesMemory +// f: invalidatesStorage, invalidatesMemory +// g: invalidatesStorage diff --git a/test/libyul/functionSideEffects/storage.yul b/test/libyul/functionSideEffects/storage.yul new file mode 100644 index 000000000..0f9c22fde --- /dev/null +++ b/test/libyul/functionSideEffects/storage.yul @@ -0,0 +1,12 @@ +{ + function a() { sstore(0, 1) } + function f() { a() } + function g() { pop(callcode(100, 0x010, 10, 0x00, 32, 0x0100, 32))} + function h() { pop(sload(0))} +} +// ---- +// : movable, sideEffectFree, sideEffectFreeIfNoMSize +// a: invalidatesStorage +// f: invalidatesStorage +// g: invalidatesStorage, invalidatesMemory +// h: sideEffectFree, sideEffectFreeIfNoMSize