contract C {
    uint8[] s;
    function f() public returns (bool correct) {
        s.push();
        assembly {
            mstore(0, s.slot)
            sstore(keccak256(0, 0x20), 257)
        }
        uint8 x = s[0];
        uint r;
        assembly {
            r := x
        }
        correct = (s[0] == 0x01) && (r == 0x01);
    }
}
// ----
// f() -> true
