161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
{
auto zv = BuildZ3ExprFromValue( b, instr.val() );
if( !zv )
return nullopt;
ForEachPredicate( b, instr.type(), zv->expr, [&]( auto&& z3expr, auto locId )
{
DiagnosticsContext dc( instr.destLocId(), "...to this." );
DiagnosticsContext dc2( instr.val().locationId(), "When assigning this..." );
b.checkAssertion( z3expr, locId );
} );
StoreToAddress( b, *instr.addr(), move( *zv ) );
return nullopt;
}
// Implemented in call.cpp
|
>
>
|
|
|
>
>
>
|
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
{
auto zv = BuildZ3ExprFromValue( b, instr.val() );
if( !zv )
return nullopt;
ForEachPredicate( b, instr.type(), zv->expr, [&]( auto&& z3expr, auto locId )
{
if( instr.destLocId() && instr.val().locationId() )
{
DiagnosticsContext dc( instr.destLocId(), "...to this." );
DiagnosticsContext dc2( instr.val().locationId(), "When assigning this..." );
b.checkAssertion( z3expr, locId );
}
else
b.checkAssertion( z3expr, locId );
} );
StoreToAddress( b, *instr.addr(), move( *zv ) );
return nullopt;
}
// Implemented in call.cpp
|