Skip to content

🧪 Establish a typed OpenQASM 3 frontend - #1910

Draft
burgholzer wants to merge 53 commits into
mainfrom
agent/oq3-foundation
Draft

🧪 Establish a typed OpenQASM 3 frontend#1910
burgholzer wants to merge 53 commits into
mainfrom
agent/oq3-foundation

Conversation

@burgholzer

@burgholzer burgholzer commented Jul 15, 2026

Copy link
Copy Markdown
Member

🤖 AI text below 🤖

Summary

This draft is an architecture workbench for a typed OpenQASM 3 frontend. It starts from main, keeps the established QuantumComputation importer independent as a behavioral oracle, and builds on MQT Core's handwritten scanner and parser instead of introducing ANTLR.

The production MLIR OpenQASM entry point now uses the staged architecture end to end:

  1. parseOpenQASM produces an opaque parsed program and syntax diagnostics;
  2. analyzeOpenQASM resolves the currently supported source semantics into an MLIR-independent, value-oriented TypedProgram;
  3. emitOQ3 maps the typed program to verified builtin/QC/OQ3 IR without repeating source typing;
  4. LowerOQ3ToQC reports target-capability limitations;
  5. translateQASM3ToQC is only a convenience wrapper around those stages.

The previous 1,114-line direct AST-to-QC visitor has been deleted. There is no legacy MLIR fallback path; Git history and the independent circuit importer provide the comparison points.

The living implementation plan and progress record is in .agent/plans/oq3-foundation.md.

Current implementation

  • The parser and semantic stages are testable without an MLIR context. Source filenames and line/column diagnostics survive into the typed model and emitted MLIR locations.
  • The adapter currently reuses the handwritten parser's constant-evaluation and type-checking passes while constructing its own typed program. Replacing the shared-pointer syntax tree and separate legacy passes remains a later parser milestone; MLIR emission is already a separate walk.
  • Gate definitions and applications, ordered inv/ctrl/negctrl/pow modifiers, broadcasting, qubit and bit registers, measurement, reset, barrier, and current conditional behavior are represented before lowering.
  • The parser now uses one precedence-climbing operator table matching OpenQASM: power is right-associative **, ^ is bitwise XOR, and modulo, shifts, comparisons, equality, bitwise, and logical operators have their specified precedence. Dynamic sin, cos, tan, exp, ln, and sqrt expressions emit builtin MLIR math operations.
  • A canonical MLIR gate catalog drives semantic lookup, OQ3 declarations, and QC lowering. Compatibility mode remains the default so the architecture replacement does not remove established native-gate convenience.
  • Strict mode is explicit: only language gates are implicit, stdgates.inc must be included for standard-library gates, and unavailable standard names can still be defined by the source program.
  • cu, cu3, and cu1 lower natively. Four-parameter cu preserves its control-qubit phase as well as controlled U, and inverse aliases such as iswapdg preserve inversion.
  • Alternating positive and negative controls lower through one recursive rule. Every negative control is flipped before and after the outermost modifier tree, all controls are nested, and the existing QC cleanup combines adjacent nested controls when compact multi-control IR is useful.
  • Valid pow modifiers, including dynamic operands, remain typed OQ3. QC lowering currently emits a target-capability diagnostic until the downstream power support is available.
  • Explicit OPENQASM 3.0;, explicit OPENQASM 3.1;, and versionless inputs select the same maintained OpenQASM 3 profile. OpenQASM 2 remains a compatibility mode.
  • The ANTLR demonstrator and generated sources remain only in Git history.

Validation

  • 98 handwritten-parser tests, including the complete scalar binary-operator precedence and associativity table
  • 4 parser-independent OQ3 verifier/lowering tests
  • 12 dedicated parse, semantic, emission, include-policy, modifier, and target-boundary tests
  • 224 QC translation tests, including all 117 existing source-translation fixtures through the new staged path
  • 116 downstream compiler pipeline tests
  • clean repository lint suite and diff whitespace checks

Next milestones

  • Pin the upstream OpenQASM grammar and conformance corpus as repository test ground truth without adding generated parser code or a parser-generator build dependency.
  • Refactor scanner and parser ownership around compact source spans, recovery, and arena-owned syntax nodes while retaining the completed precedence-climbing expression core.
  • Expand the typed program and semantic analyzer to classical declarations and assignments, inputs/outputs, casts, dynamic operators, while, and inclusive for while preserving state correctly.
  • Add the defensive whole-program OQ3 verifier for cross-operation invariants and broaden strict include/version diagnostics.
  • Add conformance, differential, dominance, overflow, and stage-specific performance evidence.

The reported 80× speedup in Qiskit's openqasm3_parser is architectural inspiration, not an acceptance target. Parsing, semantic analysis, and MLIR emission will be benchmarked separately and should scale approximately linearly.

The textual OQ3 form remains experimental and carries no compatibility guarantee at this stage.

@codecov

codecov Bot commented Jul 15, 2026

Copy link
Copy Markdown

@burgholzer
burgholzer force-pushed the agent/oq3-foundation branch from dc72a39 to 0535647 Compare July 15, 2026 13:50
@burgholzer burgholzer added QDMI Anything related to QDMI feature New feature or request MLIR Anything related to MLIR and removed QDMI Anything related to QDMI labels Jul 15, 2026
@burgholzer burgholzer added this to the MLIR Support milestone Jul 15, 2026

@denialhaag denialhaag left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Very excited if we can get this to work nicely! 🙂

The comments below are a brain dump and not necessarily a structured review. I'm aware that some of the points I'm raising might have been planned for future iterations, but I wanted to mention everything that came to mind.

Comment thread mlir/include/mlir/Dialect/OQ3/Transforms/Passes.h Outdated
Comment thread mlir/lib/Dialect/OQ3/Transforms/LowerOQ3ToQC.cpp Outdated
Comment thread mlir/unittests/Dialect/OQ3/test_oq3.cpp Outdated
Comment thread cmake/ExternalDependencies.cmake Outdated
Comment thread docs/mlir/OQ3.md Outdated
Comment thread mlir/lib/Dialect/OQ3/Transforms/LowerOQ3ToQC.cpp Outdated
Comment thread mlir/unittests/CMakeLists.txt
Comment thread mlir/lib/Target/OpenQASM/Frontend.cpp
Comment thread mlir/lib/Target/OpenQASM/Frontend.cpp Outdated
Comment thread mlir/lib/Target/OpenQASM/Frontend.cpp
Comment thread mlir/lib/Dialect/OQ3/IR/OQ3Ops.cpp Outdated
@mergify mergify Bot added the conflict label Jul 16, 2026
@burgholzer
burgholzer force-pushed the agent/oq3-foundation branch from 2b422b8 to 21bb4bd Compare July 16, 2026 15:18
@mergify mergify Bot removed the conflict label Jul 16, 2026

@denialhaag denialhaag left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I like where this is going! 🙂

You can find some more quick feedback below. Again, this is not necessarily a structured review.

Comment thread mlir/lib/Dialect/QC/Translation/OpenQASMToQCEmitter.cpp
Comment thread mlir/lib/Dialect/QC/Translation/OpenQASMToQCEmitter.cpp Outdated
Comment thread docs/mlir/OpenQASM.md Outdated
Comment thread .agent/plans/oq3-foundation.md Outdated
Comment thread mlir/lib/Dialect/QC/Translation/OpenQASMToQCEmitter.cpp Outdated
Comment thread mlir/include/mlir/Target/OpenQASM/Detail/OpenQASMLexer.h
Comment thread mlir/include/mlir/Target/OpenQASM/Detail/OpenQASMUnicode.h
Comment thread mlir/lib/Conversion/QCToQCO/QCToQCO.cpp
@mergify mergify Bot added the conflict label Jul 21, 2026
burgholzer added a commit that referenced this pull request Jul 24, 2026
🤖 *AI text below* 🤖

## Summary

- Anchor the Rust `target/` ignore rule at the repository root.
- Keep nested directories named `target` visible to Git.

## Context

This independent cleanup was found while working on the OpenQASM
integration in #1910. It is unrelated to the OpenQASM frontend itself
and has therefore been extracted into this focused PR.

The existing unanchored rule ignored any directory named `target`,
including source or test fixture directories nested below the repository
root. Cargo's repository-level build output remains ignored by
`/target/`.

## Validation

- `uvx prek run --from-ref origin/main --to-ref HEAD`
- `git diff --check origin/main...HEAD`

No changelog entry is included because this only narrows a
development-only ignore rule.
burgholzer added a commit that referenced this pull request Jul 24, 2026
🤖 *AI text below* 🤖

## Summary

- Register MLIR's canonical `cf.assert`-to-LLVM conversion in both QIR
profiles.
- Cover Base and Adaptive QIR lowering with native assertion regression
tests.
- Split compiler QIR work into a dedicated changelog entry and remove
QIR-only
  PRs from the generic QC/QCO infrastructure entry.

## Context

This general QIR gap was found while working on the OpenQASM integration
in
#1910. OpenQASM runtime preconditions can be represented as `cf.assert`;
the
standard QC → QCO → QC → QIR pipeline should lower those assertions
instead of
rejecting otherwise valid IR. The fix uses MLIR's existing conversion
rather
than introducing OpenQASM-specific handling.

The changelog entry collects the compiler QIR work that was previously
mixed
into the generic infrastructure entry. PRs that also affected QC, QCO,
Jeff, or
broader compiler infrastructure remain listed in both relevant entries;
QIR-only PRs are moved to the QIR entry.

## Validation

- QIR Base conversion tests: 111 passed
- QIR Adaptive conversion tests: 129 passed
- `uvx prek run --from-ref origin/main --to-ref HEAD`
- `git diff --check origin/main...HEAD`

---------

Signed-off-by: Lukas Burgholzer <burgholzer@me.com>
burgholzer added a commit that referenced this pull request Jul 24, 2026
🤖 *AI text below* 🤖

## Summary

- Preserve observable classical result types and returns when converting
a Jeff
  entry point back to QCO.
- Synthesize the legacy `i64` status result only for result-less entry
points.
- Add a measurement-result round-trip regression test.
- Add this fix to the existing Jeff conversion changelog entry.

## Context

This independent Jeff conversion issue was found while exercising
programs from
the OpenQASM integration in #1910. Jeff compatibility is not a
prerequisite for
accepting an OpenQASM program, but when a supported program is converted
through
Jeff, the conversion must not silently replace its observable result.

## Validation

- Jeff round-trip conversion tests: 116 passed
- `uvx prek run --from-ref origin/main --to-ref HEAD`
- `git diff --check origin/main...HEAD`
burgholzer added a commit that referenced this pull request Jul 24, 2026
🤖 *AI text below* 🤖

## Summary

- Teach `TensorIterator` to follow tensor values through `scf.while`.
- Resolve the actual before-region argument → condition operand → result
mapping
  instead of assuming positional identity.
- Support backward traversal from a while result to its corresponding
init
  value.
- Add a regression test with reordered classical and tensor values.
- Add this general SCF/QTensor fix to the existing MLIR infrastructure
changelog
  entry.

## Context

This general SCF/QTensor issue was found while working on loop lowering
for the
OpenQASM integration in #1910. It is independent of the frontend and
applies to
any pipeline that carries linearly typed quantum tensors through
`scf.while`.

## Validation

- QTensor utility tests: 2 passed
- `uvx prek run --from-ref origin/main --to-ref HEAD`
- `git diff --check origin/main...HEAD`

---------

Signed-off-by: Lukas Burgholzer <burgholzer@me.com>
burgholzer added a commit that referenced this pull request Jul 24, 2026
🤖 *AI text below* 🤖

## Summary

- Preserve existing classical iteration arguments and results when the
QC-to-QCO conversion appends explicit QCO and QTensor state to `scf.for`
and `scf.while`.
- Preserve the distinct input and result signatures of type-changing
`scf.while` operations, including reordered `scf.condition` arguments.
- Lower affected structured terminators in a second conversion phase so
their operands use the final region state instead of depending on
dialect-conversion traversal order.
- Teach QCO mapping to distinguish classical loop state from qubit
state, preserve classical terminator operands during hot routing, and
extend type-changing `scf.while` regions with the correct before/after
signatures.
- Add focused pure-QC conversion regressions and mixed-state mapping
regressions for `for` and `while`.
- Add this general conversion fix to the existing MLIR infrastructure
changelog entry.

## Context

This conversion gap was found while working on OpenQASM control flow in
#1910. The fix is independent of that frontend: any QC producer can
create valid `scf.for` or `scf.while` operations whose existing
classical values must survive conversion while quantum state is made
explicit.

## Scope

This PR is limited to stable `scf.for` and `scf.while` state
preservation. It intentionally does not add classical results to
`qco.if` or `qco.index_switch`, and it introduces no scratch
allocations, stores, or loads. Classical `qco.if` results are being
designed separately as an SSA-based extension.

## Validation

- QC-to-QCO conversion tests: 132 passed
- QCO mapping tests: 13 passed
- Focused structured-control-flow conversion regressions: 4 passed
- Focused mixed-state mapping regressions: 2 passed
- `uvx nox -s lint`
- `git diff --check`

---------

Signed-off-by: Lukas Burgholzer <burgholzer@me.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
burgholzer added a commit that referenced this pull request Jul 25, 2026
🤖 *AI text below* 🤖

## Summary

- Allow `qco.if` and `qco.index_switch` to return ordinary classical SSA
values
  before their existing linear quantum results.
- Preserve result-bearing `scf.if` and `scf.index_switch` operations
through
  QC-to-QCO and QCO-to-QC conversion without introducing scratch memory.
- Update verification, parsing and printing, RegionBranch interfaces,
tied-value helpers, builders, mapping, tensor traversal, module
equivalence,
  and affected optimizations for the segmented result model.
- Keep unsupported Jeff lowering explicit without constraining the
standard
  QC → QCO → QC → QIR pipeline.

## Motivation

This capability was identified while working on the OpenQASM integration
in
#1910 and while reducing the structured-control-flow fixes that became
#1935.
QCO conditionals previously represented only linear quantum results.
Preserving
classical SCF results therefore required either rejecting otherwise
valid
programs or lowering classical state through temporary memory.

The new representation keeps classical values in ordinary SSA form while
retaining QCO's explicit single-use quantum flow:

1. classical result prefix;
2. tied linear quantum result suffix.

Conditional region arguments remain linear-only. Classical inputs
continue to
use normal SSA capture, while `qco.yield` returns the complete
classical-plus-linear result signature.

## Implementation notes

- Both conditional operations use `AttrSizedResultSegments` and expose
explicit
  classical and linear result accessors.
- Custom parsers infer the linear suffix from the `args(...)`
assignments and
  retain quantum-only textual compatibility.
- Parent-aware `qco.yield` verification preserves the stricter modifier
  contracts.
- QC↔QCO conversions retain classical def-use chains directly and
replace only
  linear results with QC references on the QC side.
- Mapping handles every index-switch case and the default region,
preserving
  classical yield operands while realigning only quantum values.
- Module equivalence compares classical yield prefixes positionally
while
  keeping the linear suffix permutation-aware.

## Validation

All affected targets build successfully. The focused suites pass 933
tests in
total:

- 450 QCO IR tests
- 134 QC-to-QCO tests
- 132 QCO-to-QC tests
- 82 QCO utility tests
- 3 QTensor utility tests
- 15 mapping tests
- 117 Jeff round-trip tests

Repository lint, changed-source `clang-tidy`, and `git diff --check`
pass. Two
independent read-only reviews were performed; the final review found no
remaining actionable issues.
@burgholzer
burgholzer force-pushed the agent/oq3-foundation branch from 0ccdb32 to da0859c Compare July 25, 2026 08:11
@mergify mergify Bot removed the conflict label Jul 25, 2026
@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Cpp-Linter Report ⚠️

Some files did not pass the configured checks!

clang-tidy (v22.1.8) reports: 79 concern(s)
  • mlir/lib/Conversion/QCToQIR/QIRAdaptive/QCToQIRAdaptive.cpp:62:22: warning: [readability-static-definition-in-anonymous-namespace]

    'validateAdaptiveClassicalOperations' is a static definition in anonymous namespace; static is redundant here

       62 | static LogicalResult validateAdaptiveClassicalOperations(Operation* module) {
          | ~~~~~~               ^
  • mlir/lib/Conversion/QCToQIR/QIRAdaptive/QCToQIRAdaptive.cpp:62:22: warning: [llvm-prefer-static-over-anonymous-namespace]

    place static function 'validateAdaptiveClassicalOperations' outside of an anonymous namespace

  • mlir/lib/Conversion/QCToQIR/QIRAdaptive/QCToQIRAdaptive.cpp:64:5: warning: [misc-include-cleaner]

    no header providing "mlir::StringRef" is directly included

       38 |     StringRef operationName;
          |     ^
  • mlir/lib/Conversion/QCToQIR/QIRAdaptive/QCToQIRAdaptive.cpp:65:9: warning: [misc-include-cleaner]

    no header providing "mlir::isa" is directly included

       65 |     if (isa<math::CeilOp>(operation)) {
          |         ^
  • mlir/lib/Conversion/QCToQIR/QIRAdaptive/QCToQIRAdaptive.cpp:76:14: warning: [misc-include-cleaner]

    no header providing "mlir::WalkResult" is directly included

       39 |       return WalkResult::advance();
          |              ^
  • mlir/lib/Conversion/QCToQIR/QIRBase/QCToQIRBase.cpp:64:22: warning: [readability-static-definition-in-anonymous-namespace]

    'validateBaseClassicalOperations' is a static definition in anonymous namespace; static is redundant here

       64 | static LogicalResult validateBaseClassicalOperations(Operation* module) {
          | ~~~~~~               ^
  • mlir/lib/Conversion/QCToQIR/QIRBase/QCToQIRBase.cpp:64:22: warning: [llvm-prefer-static-over-anonymous-namespace]

    place static function 'validateBaseClassicalOperations' outside of an anonymous namespace

  • mlir/lib/Conversion/QCToQIR/QIRBase/QCToQIRBase.cpp:78:14: warning: [misc-include-cleaner]

    no header providing "mlir::WalkResult" is directly included

       41 |       return WalkResult::advance();
          |              ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:285:1: warning: [llvm-prefer-static-over-anonymous-namespace]

    function 'openQASMProgramName' is declared in an anonymous namespace; prefer using 'static' for restricting visibility

      285 | openQASMProgramName(const testing::TestParamInfo<qasm::OpenQASMProgram>& info) {
          | ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:288:10: warning: [readability-implicit-bool-conversion]

    implicit conversion 'int' -> 'bool'

      288 |     if (!std::isalnum(static_cast<unsigned char>(character))) {
          |         ~^                                                  
          |                                                              == 0
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:295:27: warning: [llvm-prefer-static-over-anonymous-namespace]

    function 'printType' is declared in an anonymous namespace; prefer using 'static' for restricting visibility

      295 | [[nodiscard]] std::string printType(const Type type) {
          |                           ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:295:43: warning: [misc-include-cleaner]

    no header providing "mlir::Type" is directly included

       46 | [[nodiscard]] std::string printType(const Type type) {
          |                                           ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:302:40: warning: [llvm-prefer-static-over-anonymous-namespace]

    function 'inspectEntry' is declared in an anonymous namespace; prefer using 'static' for restricting visibility

      302 | [[nodiscard]] std::optional<EntryInfo> inspectEntry(const llvm::StringRef ir) {
          |                                        ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:329:18: warning: [misc-include-cleaner]

    no header providing "mlir::LLVM::LLVMVoidType" is directly included

       37 |   if (!isa<LLVM::LLVMVoidType>(result)) {
          |                  ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:343:1: warning: [llvm-prefer-static-over-anonymous-namespace]

    function 'throughOptimizedQCO' is declared in an anonymous namespace; prefer using 'static' for restricting visibility

      343 | throughOptimizedQCO(const qasm::OpenQASMProgram& source,
          | ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:377:1: warning: [llvm-prefer-static-over-anonymous-namespace]

    function 'roundTripThroughOptimizedJeff' is declared in an anonymous namespace; prefer using 'static' for restricting visibility

      377 | roundTripThroughOptimizedJeff(const qasm::OpenQASMProgram& source,
          | ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:456:6: warning: [llvm-prefer-static-over-anonymous-namespace]

    function 'expectQIRArtifacts' is declared in an anonymous namespace; prefer using 'static' for restricting visibility

      456 | void expectQIRArtifacts(const QIRProgram& program, const llvm::StringRef name,
          |      ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:516:7: warning: [misc-use-internal-linkage]

    class 'OpenQASMBasePipelineTest' can be moved into an anonymous namespace to enforce internal linkage

      516 | class OpenQASMBasePipelineTest
          |       ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:519:7: warning: [misc-use-internal-linkage]

    class 'OpenQASMJeffPipelineTest' can be moved into an anonymous namespace to enforce internal linkage

      519 | class OpenQASMJeffPipelineTest
          |       ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:533:7: warning: [misc-use-internal-linkage]

    class 'OpenQASMJeffBoundaryTest' can be moved into an anonymous namespace to enforce internal linkage

      533 | class OpenQASMJeffBoundaryTest
          |       ^
  • mlir/unittests/Compiler/test_compiler_pipeline.cpp:536:7: warning: [misc-use-internal-linkage]

    class 'OpenQASMQIRBoundaryTest' can be moved into an anonymous namespace to enforce internal linkage

      536 | class OpenQASMQIRBoundaryTest
          |       ^
  • mlir/unittests/Conversion/QCToQIR/QCToQIRAdaptive/test_qc_to_qir_adaptive.cpp:91:12: warning: [misc-use-internal-linkage]

    enum 'UnsupportedAdaptiveOperation' can be moved into an anonymous namespace to enforce internal linkage

       91 | enum class UnsupportedAdaptiveOperation : std::uint8_t {
          |            ^
  • mlir/unittests/Conversion/QCToQIR/QCToQIRBase/test_qc_to_qir_base.cpp:89:17: warning: [misc-include-cleaner]

    no header providing "llvm::function_ref" is directly included

       22 |     const llvm::function_ref<void(qc::QCProgramBuilder&)> buildOperation,
          |                 ^
  • mlir/unittests/Target/OpenQASM/test_openqasm.cpp:2770:25: warning: [readability-implicit-bool-conversion]

    implicit conversion 'bool' -> 'size_t' (aka 'unsigned long')

     2770 |       trueConditions += condition.literal;
          |                         ^                
          |                         static_cast<size_t>( )
  • mlir/unittests/programs/qasm_programs.cpp:1378:7: warning: [misc-include-cleaner]

    no header providing "llvm::ArrayRef" is directly included

       12 | llvm::ArrayRef<OpenQASMProgram> standardPipelinePrograms() {
          |       ^
  • mlir/unittests/programs/qasm_programs.cpp:1379:16: warning: [cppcoreguidelines-avoid-c-arrays]

    do not declare C-style arrays, use 'std::array' instead

     1379 |   static const OpenQASMProgram programs[]{
          |                ^~~~~~~~~~~~~~~~~~~~~~~~~~
  • mlir/unittests/programs/qasm_programs.cpp:1380:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1380 |       {"broadcast-custom-gate", broadcastCompoundGate},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1381:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1381 |       {"arithmetic-parameters", expressionArithmetic},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1382:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1382 |       {"math-parameters", expressionMathFunctions},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=             .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1383:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1383 |       {"runtime-scalar-rounding", runtimeScalarRounding},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                     .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1384:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1384 |       {"simple-if", conditionLiteral},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=       .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1385:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1385 |       {"nested-static-control-flow", nestedStaticControlFlow},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                        .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1386:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1386 |       {"mutable-loop-state", mutableLoopState},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1387:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1387 |       {"measurement-controlled-while", conditionWhileAnd},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                          .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1388:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1388 |       {"resolved-dynamic-index", resolvedDynamicIndex},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                    .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1389:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1389 |       {"equal-constant-index-join", equalConstantIndexJoin},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                       .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1390:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1390 |       {"reset", resetQubitAfterSingleOp},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1391:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1391 |       {"barrier", barrierMultipleQubits},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=     .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1392:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1392 |       {"mixed-controls", mixedControlledX},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=            .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1393:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1393 |       {"runtime-dynamic-index", runtimeDynamicIndex},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1394:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1394 |       {"induction-variable-index", inductionVariableIndex},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                      .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1395:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1395 |       {"checked-integer-state", checkedIntegerState},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1396:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1396 |       {"dynamic-range", dynamicRange},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=           .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1397:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1397 |       {"pow-two-x", powTwoX},
          |       ^~~~~~~~~~~~~~~~~~~~~~
          |        .name=       .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1398:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1398 |       {"negative-pow-s", negativePowS},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=            .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1399:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1399 |       {"controlled-inverse-pow-s", controlledInversePowS},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                      .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1400:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1400 |       {"nested-pow-x", nestedPowX},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=          .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1401:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1401 |       {"broadcast-pow-x", broadcastPowX},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=             .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1402:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1402 |       {"floating-pow-x", floatingPowX},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=            .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1408:16: warning: [cppcoreguidelines-avoid-c-arrays]

    do not declare C-style arrays, use 'std::array' instead

     1408 |   static const OpenQASMProgram programs[]{
          |                ^~~~~~~~~~~~~~~~~~~~~~~~~~
  • mlir/unittests/programs/qasm_programs.cpp:1409:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1409 |       {"broadcast-custom-gate", broadcastCompoundGate},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1410:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1410 |       {"nested-static-control-flow", nestedStaticControlFlow},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                        .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1411:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1411 |       {"mutable-loop-state", mutableLoopState},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1412:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1412 |       {"reset", resetQubitAfterSingleOp},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1413:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1413 |       {"mixed-controls", mixedControlledX},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=            .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1414:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1414 |       {"pow-two-x", powTwoX},
          |       ^~~~~~~~~~~~~~~~~~~~~~
          |        .name=       .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1415:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1415 |       {"negative-pow-s", negativePowS},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=            .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1416:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1416 |       {"controlled-inverse-pow-s", controlledInversePowS},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                      .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1417:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1417 |       {"nested-pow-x", nestedPowX},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=          .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1418:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1418 |       {"broadcast-pow-x", broadcastPowX},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=             .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1419:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1419 |       {"floating-pow-x", floatingPowX},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=            .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1420:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1420 |       {"runtime-scalar-rounding", runtimeScalarRounding},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                     .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1426:16: warning: [cppcoreguidelines-avoid-c-arrays]

    do not declare C-style arrays, use 'std::array' instead

     1426 |   static const OpenQASMProgram programs[]{
          |                ^~~~~~~~~~~~~~~~~~~~~~~~~~
  • mlir/unittests/programs/qasm_programs.cpp:1427:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1427 |       {"runtime-dynamic-index", runtimeDynamicIndex},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1428:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1428 |       {"induction-variable-index", inductionVariableIndex},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                      .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1429:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1429 |       {"checked-integer-state", checkedIntegerState},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1430:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1430 |       {"dynamic-range", dynamicRange},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=           .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1431:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1431 |       {"custom-pow-hs", customPowHS},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=           .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1432:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1432 |       {"bit-vector-builtins", bitVectorBuiltins},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                 .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1438:16: warning: [cppcoreguidelines-avoid-c-arrays]

    do not declare C-style arrays, use 'std::array' instead

     1438 |   static const OpenQASMProgram programs[]{
          |                ^~~~~~~~~~~~~~~~~~~~~~~~~~
  • mlir/unittests/programs/qasm_programs.cpp:1439:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1439 |       {"bit-vector-builtins", bitVectorBuiltins},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                 .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1445:16: warning: [cppcoreguidelines-avoid-c-arrays]

    do not declare C-style arrays, use 'std::array' instead

     1445 |   static const OpenQASMProgram programs[]{
          |                ^~~~~~~~~~~~~~~~~~~~~~~~~~
  • mlir/unittests/programs/qasm_programs.cpp:1446:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1446 |       {"broadcast-custom-gate", broadcastCompoundGate},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1447:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1447 |       {"arithmetic-parameters", expressionArithmetic},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                   .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1448:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1448 |       {"math-parameters", expressionMathFunctions},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=             .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1449:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1449 |       {"runtime-scalar-rounding", runtimeScalarRounding},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=                     .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1450:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1450 |       {"barrier", barrierMultipleQubits},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=     .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1451:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1451 |       {"pow-two-x", powTwoX},
          |       ^~~~~~~~~~~~~~~~~~~~~~
          |        .name=       .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^
  • mlir/unittests/programs/qasm_programs.cpp:1452:7: warning: [modernize-use-designated-initializers]

    use designated initializer list to initialize 'const OpenQASMProgram'

     1452 |       {"floating-pow-x", floatingPowX},
          |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |        .name=            .source=
    /home/runner/work/core/core/mlir/unittests/programs/qasm_programs.h:21:1: note: aggregate type is defined here
       21 | struct OpenQASMProgram {
          | ^

Have any feedback or feature suggestions? Share it here.

Assisted-by: GPT-5 via Codex
Assisted-by: GPT-5 via Codex
Rebase the frontend on the extracted upstream conversion work, restore the shared MLIR lint policy, lower ordered power modifiers to qc.pow, and extend end-to-end coverage for current QC/QCO/QIR and jeff behavior.

Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
@burgholzer
burgholzer force-pushed the agent/oq3-foundation branch from da0859c to 8215896 Compare July 27, 2026 10:39
@burgholzer burgholzer self-assigned this Jul 27, 2026
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Close the selected phase, runtime power precision, and construction-budget findings with exhaustive lowering recipes and focused regressions.

Assisted-by: GPT-5 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or request MLIR Anything related to MLIR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants