| 2555 | } |
| 2556 | |
| 2557 | static StateValue |
| 2558 | pack_return(State &s, Type &ty, StateValue &&val, const FnAttrs &attrs, |
| 2559 | const vector<pair<Value*, ParamAttrs>> &args) { |
| 2560 | if (auto agg = ty.getAsAggregateType()) { |
| 2561 | vector<StateValue> vs; |
| 2562 | for (unsigned i = 0, e = agg->numElementsConst(); i != e; ++i) { |
| 2563 | if (!agg->isPadding(i)) |
| 2564 | vs.emplace_back( |
| 2565 | pack_return(s, agg->getChild(i), agg->extract(val, i), attrs, args)); |
| 2566 | } |
| 2567 | return agg->aggregateVals(vs); |
| 2568 | } |
| 2569 | |
| 2570 | return check_return_value(s, std::move(val), ty, attrs, args); |
| 2571 | } |
| 2572 | |
| 2573 | StateValue FnCall::toSMT(State &s) const { |
| 2574 | if (approx) |
no test coverage detected