Skip to content

Conversation

@MathiasVP
Copy link
Contributor

Commit by commit review recommended.

  • 07ac8a5 implements support for an additional parameter in barrier guards (which itself useful for barrier guards with flow states, and will be necessary to implement the MaD support)
  • 4825480 is @aschackmull's WIP commit from the latest hackathon
  • a11b271 finishes the implementation

@aschackmull is this something you can review?

MathiasVP and others added 4 commits January 19, 2026 11:30
…r guards with flow states and will be necessary in the next commit for adding MaD specified barriers.
C++: Add support for MaD barriers and barrier guards.
@MathiasVP MathiasVP requested a review from a team as a code owner January 19, 2026 11:36
Copilot AI review requested due to automatic review settings January 19, 2026 11:36
@github-actions github-actions bot added the C++ label Jan 19, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request implements support for models-as-data (MaD) barriers and barrier guards in C++, allowing barrier specifications to be defined through external YAML files rather than only in QL code.

Changes:

  • Adds parameterized barrier guard modules to support additional parameters (kind and model identifiers) for MaD integration
  • Implements interpretation of barrier and barrier guard MaD models in the flow summary and external flow infrastructure
  • Adds comprehensive test coverage for both direct barriers and barrier guards with various indirection levels

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
test.ql Adds test infrastructure for external barrier guards using the barrierNode predicate
test.ext.yml Defines MaD models for barrier functions and barrier guard functions
test.cpp Adds test cases demonstrating barrier guards with various indirection patterns
SsaImpl.qll Refactors barrier guard modules to support parameterization, enabling kind/model tracking
DataFlowUtil.qll Adds parameterized versions of BarrierGuard and InstructionBarrierGuard modules
FlowSummaryImpl.qll Implements interpretation of barrierModel and barrierGuardModel from MaD specifications
ExternalFlow.qll Implements the main logic for converting MaD barrier specifications to barrier nodes
Comments suppressed due to low confidence (1)

cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll:1046

  • Incorrect apostrophe usage: "GuardValues" should be "GuardValues" and "Booleans" should be "Booleans" (no apostrophes for plurals).
    // converting the barrier guard API to use `GuardValue`s instead `Boolean`s

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants