Execute a function call or a pure expression.
(exec-expr-call-or-pure e compst fenv limit) → (mv result new-compst)
This is only used for expressions that must be either function calls or pure. If the expression is a call, we use exec-expr-call. Otherwise, we resort to exec-expr-pure, we perform an array-to-pointer conversion (which is appropriate because, in our C subset, this ACL2 function is always used where such a conversion is needed), and we peform an lvalue conversion to return a value and not an expression value (which is appropriate because, in our C subset, this ACL2 function is always used where such a conversion is needed).
We return an optional value (if there is no error),
which is