✨ Preserve reusable gates across OpenQASM import and export - #2338
Open
burgholzer wants to merge 4 commits into
Open
✨ Preserve reusable gates across OpenQASM import and export#2338burgholzer wants to merge 4 commits into
burgholzer wants to merge 4 commits into
Conversation
12 tasks
burgholzer
force-pushed
the
codex/openqasm-reusable-gates
branch
from
September 3, 2026 03:52
a09bfa7 to
73cf929
Compare
burgholzer
changed the base branch from
codex/qco-function-model
to
codex/qir-reusable-functions
September 3, 2026 03:52
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
burgholzer
force-pushed
the
codex/qir-reusable-functions
branch
from
September 3, 2026 05:07
7debc7d to
763fafc
Compare
burgholzer
force-pushed
the
codex/openqasm-reusable-gates
branch
from
September 3, 2026 05:07
73cf929 to
e784ed2
Compare
12 tasks
Represent custom gate definitions as reusable QC functions and emit supported function calls as dependency-ordered OpenQASM gate declarations. Assisted-by: GPT-5.6 via Codex
Fold the follow-up into the existing OpenQASM launch changelog entry. Assisted-by: GPT-5.6 via Codex
Bound recursive dependency traversal before descent, cache symbol resolution, and reject aliased rendered gate operands before emitting invalid OpenQASM. Assisted-by: GPT-5.6 via Codex
Use MLIR call-graph traversal to order gate definitions without retaining invalidated map references. Preserve floating promotion in gate expressions so division of converted loop indices keeps its numeric meaning. Assisted-by: Codex
burgholzer
force-pushed
the
codex/openqasm-reusable-gates
branch
from
September 3, 2026 23:12
e784ed2 to
86f99a1
Compare
burgholzer
force-pushed
the
codex/qir-reusable-functions
branch
from
September 3, 2026 23:12
763fafc to
6b1d409
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 AI text below 🤖
Description
Preserve OpenQASM gate definitions as reusable QC functions and emit supported helpers as dependency-ordered OpenQASM gate declarations. Straight-line gates use the unitary-function contract; structured gate bodies remain private generic functions.
This PR is stacked on #2340. Native MLIR call-graph traversal replaces recursive ordering and preserves the 64-level frontend limit. Gate-expression export keeps integer-to-float promotion, so expressions such as a converted loop index divided by two retain floating-point semantics.
The exporter retains the current classical-register safeguards. Gate bodies cannot use mutable classical state; generic OpenQASM subroutines and a classical-reference call ABI are outside this change.
Codex implemented and tested the changes with independent OpenQASM/MLIR specialist review. Regressions cover a 50-helper dependency graph, numeric loop expressions, strict reparsing, and QC ↔ QCO round trips.
Integrated-stack validation: release build; 3,857 registered CTest cases with one expected skip; 259 Qiskit translation tests; whole-file C++ lint and repository lint. Stub generation passed without changes. Hosted CI remains separate and has not been claimed as passed.
Checklist
If PR contains AI-assisted content:
🤖 *AI text below* 🤖(titles are exempt).