Skip to content

Commit 07c7f7d

Browse files
committed
Remove atomic fence support.
1 parent e74cfa8 commit 07c7f7d

29 files changed

+4
-485
lines changed

genmc-sys/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ mod ffi {
237237
memory_ordering: MemOrdering,
238238
store_event_type: StoreEventType,
239239
) -> StoreResult;
240-
fn handleFence(self: Pin<&mut MiriGenMCShim>, thread_id: i32, memory_ordering: MemOrdering);
241240

242241
fn handleMalloc(
243242
self: Pin<&mut MiriGenMCShim>,

genmc-sys/src_cpp/MiriInterface.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -382,16 +382,6 @@ void MiriGenMCShim::handleThreadFinish(ThreadId thread_id, uint64_t ret_val)
382382
return GenMCDriver::handleStore(std::move(wLab), oldValSetter);
383383
}
384384

385-
void MiriGenMCShim::handleFence(ThreadId thread_id, MemOrdering ord)
386-
{
387-
MIRI_LOG() << "Received fence operation from Miri with ordering " << ord << "\n";
388-
389-
auto pos = incPos(thread_id);
390-
391-
auto fLab = std::make_unique<FenceLabel>(pos, ord);
392-
GenMCDriver::handleFence(std::move(fLab));
393-
}
394-
395385
/**** Memory (de)allocation ****/
396386

397387
auto MiriGenMCShim::handleMalloc(ThreadId thread_id, uint64_t size, uint64_t alignment) -> uintptr_t

genmc-sys/src_cpp/MiriInterface.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ struct MiriGenMCShim : private GenMCDriver
7070
GenmcScalar value, GenmcScalar old_val,
7171
MemOrdering ord, StoreEventType store_event_type);
7272

73-
void handleFence(ThreadId thread_id, MemOrdering ord);
74-
7573
/**** Memory (de)allocation ****/
7674

7775
uintptr_t handleMalloc(ThreadId thread_id, uint64_t size, uint64_t alignment);

src/concurrency/genmc/mapping.rs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use genmc_sys::{MemOrdering, RMWBinOp};
22

3-
use crate::{AtomicFenceOrd, AtomicReadOrd, AtomicRwOrd, AtomicWriteOrd};
3+
use crate::{AtomicReadOrd, AtomicRwOrd, AtomicWriteOrd};
44

55
impl AtomicReadOrd {
66
pub(super) fn convert(self) -> MemOrdering {
@@ -22,17 +22,6 @@ impl AtomicWriteOrd {
2222
}
2323
}
2424

25-
impl AtomicFenceOrd {
26-
pub(super) fn convert(self) -> MemOrdering {
27-
match self {
28-
AtomicFenceOrd::Acquire => MemOrdering::Acquire,
29-
AtomicFenceOrd::Release => MemOrdering::Release,
30-
AtomicFenceOrd::AcqRel => MemOrdering::AcquireRelease,
31-
AtomicFenceOrd::SeqCst => MemOrdering::SequentiallyConsistent,
32-
}
33-
}
34-
}
35-
3625
impl AtomicRwOrd {
3726
/// Split up the atomic success ordering of a read-modify-write operation into GenMC's representation.
3827
/// Note that both returned orderings are currently identical, because this is what GenMC expects.

src/concurrency/genmc/mod.rs

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -199,24 +199,10 @@ impl GenmcCtx {
199199

200200
pub(crate) fn atomic_fence<'tcx>(
201201
&self,
202-
machine: &MiriMachine<'tcx>,
203-
ordering: AtomicFenceOrd,
202+
_machine: &MiriMachine<'tcx>,
203+
_ordering: AtomicFenceOrd,
204204
) -> InterpResult<'tcx> {
205-
assert!(!self.allow_data_races.get()); // TODO GENMC: handle this properly
206-
info!("GenMC: atomic_fence with ordering: {ordering:?}");
207-
208-
let ordering = ordering.convert();
209-
210-
let thread_infos = self.thread_infos.borrow();
211-
let curr_thread = machine.threads.active_thread();
212-
let genmc_tid = thread_infos.get_info(curr_thread).genmc_tid;
213-
214-
let mut mc = self.handle.borrow_mut();
215-
let pinned_mc = mc.as_mut();
216-
pinned_mc.handleFence(genmc_tid.0, ordering);
217-
218-
// TODO GENMC: can this operation ever fail?
219-
interp_ok(())
205+
throw_unsup_format!("FIXME(genmc): Add support for atomic fences.")
220206
}
221207

222208
/// Inform GenMC about an atomic read-modify-write operation.

tests/genmc/pass/litmus/2+2W+2sc+scf/2w2w_2sc_scf.order12.stderr

Lines changed: 0 additions & 3 deletions
This file was deleted.

tests/genmc/pass/litmus/2+2W+2sc+scf/2w2w_2sc_scf.order21.stderr

Lines changed: 0 additions & 3 deletions
This file was deleted.

tests/genmc/pass/litmus/2+2W+2sc+scf/2w2w_2sc_scf.rs

Lines changed: 0 additions & 43 deletions
This file was deleted.

tests/genmc/pass/litmus/2+2W+scfs/2_2w_scfs.rs

Lines changed: 0 additions & 35 deletions
This file was deleted.

tests/genmc/pass/litmus/2+2W+scfs/2_2w_scfs.stderr

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)