@@ -1044,18 +1044,18 @@ void shared_bufferst::affected_by_delay(
1044
1044
local_may
1045
1045
#endif
1046
1046
); // NOLINT(whitespace/parens)
1047
- for (const auto &w_entry : rw_set.w_entries )
1047
+ for (const auto &w_entry : rw_set.w_entries )
1048
+ {
1049
+ for (const auto &r_entry : rw_set.r_entries )
1048
1050
{
1049
- for (const auto &r_entry : rw_set.r_entries )
1050
- {
1051
- message.debug () <<" debug: " <<id2string (w_entry.second .object )
1052
- <<" reads from " <<id2string (r_entry.second .object )
1053
- <<messaget::eom;
1054
- if (is_buffered_in_general (r_entry.second .symbol_expr , true ))
1055
- // shouldn't it be true? false => overapprox
1056
- affected_by_delay_set.insert (w_entry.second .object );
1057
- }
1051
+ message.debug () << " debug: " << id2string (w_entry.second .object )
1052
+ << " reads from " << id2string (r_entry.second .object )
1053
+ << messaget::eom;
1054
+ if (is_buffered_in_general (r_entry.second .symbol_expr , true ))
1055
+ // shouldn't it be true? false => overapprox
1056
+ affected_by_delay_set.insert (w_entry.second .object );
1058
1057
}
1058
+ }
1059
1059
}
1060
1060
}
1061
1061
}
@@ -1157,10 +1157,14 @@ void shared_bufferst::cfg_visitort::weak_memory(
1157
1157
{
1158
1158
for (const auto &r_entry : rw_set.r_entries )
1159
1159
{
1160
- if (shared_buffers.is_buffered (ns, r_entry.second .symbol_expr , true ))
1160
+ if (shared_buffers.is_buffered (
1161
+ ns, r_entry.second .symbol_expr , true ))
1161
1162
{
1162
1163
shared_buffers.delay_read (
1163
- goto_program, i_it, source_location, r_entry.second .object ,
1164
+ goto_program,
1165
+ i_it,
1166
+ source_location,
1167
+ r_entry.second .object ,
1164
1168
w_entry.second .object );
1165
1169
}
1166
1170
}
@@ -1169,8 +1173,11 @@ void shared_bufferst::cfg_visitort::weak_memory(
1169
1173
if (shared_buffers.is_buffered (ns, w_entry.second .symbol_expr , true ))
1170
1174
{
1171
1175
shared_buffers.write (
1172
- goto_program, i_it, source_location,
1173
- w_entry.second .object , original_instruction,
1176
+ goto_program,
1177
+ i_it,
1178
+ source_location,
1179
+ w_entry.second .object ,
1180
+ original_instruction,
1174
1181
current_thread);
1175
1182
}
1176
1183
else
@@ -1180,23 +1187,24 @@ void shared_bufferst::cfg_visitort::weak_memory(
1180
1187
{
1181
1188
for (const auto &r_entry : rw_set.r_entries )
1182
1189
{
1183
- if (shared_buffers.affected_by_delay_set .find (
1184
- r_entry.second .object )!=
1185
- shared_buffers.affected_by_delay_set .end ())
1190
+ if (
1191
+ shared_buffers.affected_by_delay_set .find (
1192
+ r_entry.second .object ) !=
1193
+ shared_buffers.affected_by_delay_set .end ())
1186
1194
{
1187
- shared_buffers.message .debug () << " second: "
1188
- << r_entry.second .object << messaget::eom;
1189
- const varst &vars= (shared_buffers)(r_entry.second .object );
1195
+ shared_buffers.message .debug ()
1196
+ << " second: " << r_entry.second .object << messaget::eom;
1197
+ const varst &vars = (shared_buffers)(r_entry.second .object );
1190
1198
1191
- shared_buffers.message .debug () << " writer "
1192
- <<w_entry.second .object
1193
- <<" reads " << r_entry.second .object << messaget::eom;
1199
+ shared_buffers.message .debug ()
1200
+ << " writer " << w_entry.second .object << " reads "
1201
+ << r_entry.second .object << messaget::eom;
1194
1202
1195
1203
// TO FIX: how to deal with rhs including calls?
1196
1204
// if a read is delayed, use its alias instead of itself
1197
1205
// -- or not
1198
- symbol_exprt to_replace_expr= symbol_exprt (
1199
- r_entry.second .object , vars.type );
1206
+ symbol_exprt to_replace_expr =
1207
+ symbol_exprt ( r_entry.second .object , vars.type );
1200
1208
symbol_exprt new_read_expr=symbol_exprt (
1201
1209
vars.read_delayed_var ,
1202
1210
pointer_type (vars.type ));
@@ -1227,16 +1235,22 @@ void shared_bufferst::cfg_visitort::weak_memory(
1227
1235
to_replace_expr); // original_instruction.code.op1());
1228
1236
1229
1237
shared_buffers.assignment (
1230
- goto_program, i_it, source_location,
1231
- r_entry.second .object , rhs);
1238
+ goto_program,
1239
+ i_it,
1240
+ source_location,
1241
+ r_entry.second .object ,
1242
+ rhs);
1232
1243
}
1233
1244
}
1234
1245
}
1235
1246
1236
1247
// normal assignment
1237
1248
shared_buffers.assignment (
1238
- goto_program, i_it, source_location,
1239
- w_entry.second .object , original_instruction.code .op1 ());
1249
+ goto_program,
1250
+ i_it,
1251
+ source_location,
1252
+ w_entry.second .object ,
1253
+ original_instruction.code .op1 ());
1240
1254
}
1241
1255
}
1242
1256
@@ -1247,19 +1261,22 @@ void shared_bufferst::cfg_visitort::weak_memory(
1247
1261
{
1248
1262
if (shared_buffers.is_buffered (ns, r_entry.second .symbol_expr , false ))
1249
1263
{
1250
- shared_buffers.message .debug () << " flush restore: "
1251
- << r_entry.second .object << messaget::eom;
1252
- const varst vars= (shared_buffers)(r_entry.second .object );
1264
+ shared_buffers.message .debug ()
1265
+ << " flush restore: " << r_entry.second .object << messaget::eom;
1266
+ const varst vars = (shared_buffers)(r_entry.second .object );
1253
1267
const exprt delayed_expr=symbol_exprt (vars.flush_delayed ,
1254
1268
bool_typet ());
1255
1269
const symbol_exprt mem_value_expr=symbol_exprt (vars.mem_tmp ,
1256
1270
vars.type );
1257
- const exprt cond_expr= if_exprt (delayed_expr, mem_value_expr,
1258
- r_entry.second .symbol_expr );
1271
+ const exprt cond_expr = if_exprt (
1272
+ delayed_expr, mem_value_expr, r_entry.second .symbol_expr );
1259
1273
1260
1274
shared_buffers.assignment (
1261
- goto_program, i_it, source_location,
1262
- r_entry.second .object , cond_expr);
1275
+ goto_program,
1276
+ i_it,
1277
+ source_location,
1278
+ r_entry.second .object ,
1279
+ cond_expr);
1263
1280
shared_buffers.assignment (
1264
1281
goto_program, i_it, source_location,
1265
1282
vars.flush_delayed , false_exprt ());
0 commit comments