``` contract Storage { struct S { uint x; } S t; function store(S storage x) internal { S memory y = x; } function f() public { store(t); } } ``` Function `store` is considered `pure`. Same if `x` is used in function call conversion to memory. Reading members from `x` is properly detected.