A case against semantic dependencies
summary
Argues that the proposed three-step C/C++ fix—derive a global semantic dependency from all candidate executions then apply RC11 consistency—fails on concrete litmus tests: a three-thread X Y Z litmus shows whether F can be printed flips depending on optimizations like redundant-load introduction and forwarding, so the dependency relation cannot be thread-local and must know the consistency predicate. Compilers (LLVM/GCC) perform those transforms, so a correct account needs dynamic, consistency-aware machinery such as promising semantics or event-structure models.
AI-written summary · about
chapters (8)
- 0:00Introduction
- 3:52Three-step memory model
- 7:21Semantic dependency examples
- 11:59Thread-local dependency impossible
- 14:52Dynamic dependencies limits
- 17:18Load introduction issue
- 20:49Non-atomics modular reasoning
- 21:32C++ memory model challenges
related talks
01h 11mProgramming language memory models: Problems, solutions, and directions
01h 05mAll the Languages Together
30mA Tale of Shared Memory Concurrency in Programming Languages
35mAll the Binaries Together: A Semantic Approach to Application Binary Interfaces
18mThe Semantics of Transactions and Weak Memory in x86, Power, ARM, and C++
25mA Semantic Approach to Robust Property Preservation
20mSemantic Reification: A New Paradigm for Random Program Generation
01h 05mSemantic Intermediate Representations for Sound Language Interoperability
